利用fluentd java客户端收集数据到influxDB

余生颓废 提交于 2020-02-17 22:58:28

前提环境:

1.安装docker

2.安装好influxDB

A.fluent安装配置

目录结构如下

1.编写fluent.conf配置文件

<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

 <match **>
   @type influxdb
   host  填写数据库所在ip,如:127.0.0.1
   port  8086
   dbname 填写database的名称,如test
   user  填写数据库用户名,如root
   password  填写你的数据库密码,如123456
   use_ssl false
   time_precision ms
   auto_tags false
   tag_keys ["hostname","age"]此数组为索引字段名称,插入的key为数组对应的值则新增数据时默认设置该字段为索引字段
   sequence_tag _seq
 </match>

详细配置可参考
https://github.com/fangli/fluent-plugin-influxdb

2.编写docker build 脚本

docker build -t test .


3.编写好docker run脚本
 

docker run -d \
    --restart unless-stopped \
    --name test \
    -p 24224:24224 -p 24224:24224/udp -p 9880:9880\
    -v $PWD/etc:/fluentd/etc \
    -v $PWD/log:/log \
    -v /etc/localtime:/etc/localtime:ro \
    test

4.编写好dockerfile文件

FROM fluent/fluentd:v1.4-debian-2

USER root

RUN gem install fluent-plugin-influxdb --no-document \
 && gem sources --clear-all \
 && rm -rf /home/fluent/.gem/ruby/2.6.0/cache/*.gem

USER fluent

从此处开始,fluentd的安装配置已经完成

B.influx java客户端数据收集

//号称性能比官网更快的fluentd客户端
https://github.com/komamitsu/fluency

 public void sendMessageToFluetd() throws IOException {
        //1.连接fluent的配置,建议配置成spirng bean
        Fluency fluency = new FluencyBuilderForFluentd().
                build("127.0.0.1",24224);

        //2.插入数据的表名
        String tag = "table_name";

        //3.插入的数据,key为字段名,value为值,value不支持map,如需json需要转String
        Map<String, Object> event = new HashMap<String, Object>();
        event.put("hostname", "hostname");
        event.put("age1.ff1", 422);

        //4.发送信息到influxDB
        fluency.emit(tag, event);

    }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!