前提环境:
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);
}
来源:CSDN
作者:萌萌的新
链接:https://blog.csdn.net/weixin_39892176/article/details/104354002