InfluxDB 目标(Sink)

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

编译插件&创建插件

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

  • go.mod 文件中增加对 InfluxDB 库文件的引用
  • 把文件 plugins/sinks/influxdb.go 中的第一行 // +build plugins 删除
  1. # cd $eKuiper_src
  2. # go build -trimpath -modfile extensions.mod --buildmode=plugin -o plugins/sinks/InfluxDB.so extensions/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

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

属性

属性名称 会否可选 说明
addr InfluxDB的地址
measurement InfluxDb的测量(如表名)
username InfluxDB登陆用户名
password InfluxDB登陆密码
databasename InfluxDB的数据库
tagkey InfluxDB的标签键
tagvalue InfluxDB的标签值
fields InfluxDB的列名,用”,”隔开

示例用法

下面是选择温度大于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/lf-edge/ekuiper 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/lf-edge/ekuiper => /root/goProject/ekuiper