InfluxDB 目标(Sink)

该插件将分析结果发送到 InfluxDB 中。

编译插件&创建插件

在编译之前,请对源代码做如下更改:

  • go.mod 文件中增加对 InfluxDB 库文件的引用
  • 把文件 plugins/sinks/influxdb.go 中的第一行 // +build plugins 删除
  1. # cd $kuiper_src
  2. # go build -trimpath --buildmode=plugin -o plugins/sinks/InfluxDB.so plugins/sinks/influxdb/influxdb.go
  3. # zip influx.zip plugins/sinks/InfluxDB.so
  4. # cp influx.zip /root/tomcat_path/webapps/ROOT/
  5. # bin/kuiper create plugin sink influx -f /tmp/influxPlugin.txt
  6. # bin/kuiper create rule influx -f /tmp/influxRule.txt

重新启动 Kuiper 服务器以激活插件。

属性

属性名称会否可选说明
addrInfluxDB的地址
measurementInfluxDb的测量(如表名)
usernameInfluxDB登陆用户名
passwordInfluxDB登陆密码
databasenameInfluxDB的数据库
tagkeyInfluxDB的标签键
tagvalueInfluxDB的标签值
fieldsInfluxDB的列名,用”,”隔开

示例用法

下面是选择温度大于50度的样本规则,和一些配置文件仅供参考。

####/tmp/influxRule.txt

  1. {
  2. "id": "influx",
  3. "sql": "SELECT * from demo_stream where temperature > 50",
  4. "actions": [
  5. {
  6. "log": {},
  7. "influx":{
  8. "addr": "http://192.168.100.245:8086",
  9. "username": "",
  10. "password": "",
  11. "measurement": "test",
  12. "databasename": "databasename",
  13. "tagkey": "tagkey",
  14. "tagvalue": "tagvalue",
  15. "fields": "humidity,temperature,pressure"
  16. }
  17. }
  18. ]
  19. }

####/tmp/influxPlugin.txt

  1. {
  2. "file":"http://localhost:8080/influx.zip"
  3. }

plugins/go.mod

  1. module plugins
  2. go 1.14
  3. require (
  4. github.com/emqx/kuiper v0.0.0-20200323140757-60d00241372b
  5. github.com/influxdata/influxdb-client-go v1.2.0
  6. github.com/influxdata/influxdb1-client v0.0.0-20200515024757-02f0bf5dbca3 // indirect
  7. )
  8. replace github.com/emqx/kuiper => /root/goProject/kuiper