一. InfluxDB说明
架构说明
-
无MetaNode,只有DataNode,官方未提供Cluster方案,就是单点
-
MetaNode + DataNode,同一集群的DN数据同步,需购买
influxdb-relay
采用influxdb-relay,类似负载,数据无法同步同步,人工干预地方太多
-
采用双写,DN之间数据相互隔离互不影响
测试10w条数据,每秒并发1w,宕机节点启动后自动追回数据(1核/1G内存),追回耗时不到3s
-
数据说明
time为主键ID
time、value为必须字段,其他表字段可自定义
数据为追加写
调用API创建数据
Write
# "table_name,row1=filed1,row2=filed2.... value curl -i -XPOST http://influxdb_ip:influxdb_port/write?db=mydb --data-binary "cpu_usage,label=cpu,tag=iowait value=1"
Read
# 模糊匹配 curl -i -XPOST http://192.168.0.102:7076/query?db=mydb --data-urlencode "q=select * from cpu_usage where label =~ /^cpu/" # and curl -i -XPOST http://192.168.0.102:7076/query?db=mydb --data-urlencode "q=select * from cpu_usage where describe='iowait' and value=1" # group by curl -i -XPOST http://192.168.0.102:7076/query?db=mydb --data-urlencode "q=select * from cpu_usage group by label limit 1" # limit (第11-20条数据) curl -i -XPOST http://192.168.0.102:7076/query?db=mydb --data-urlencode "q=select * from cpu_usage limit 10 offset 10"
不友好地方
数据库需要提前创建
依赖组件越多,维护成本越高
二. Prometheus说明
-
本文采用InfluxDB远端存储,具备读写功能
代理使用influxDB-proxy,比较实用
三. 配置案例
influxdb-proxy
{ "circles": [ //后端influxdb 组 { "name": "proxy01", "backends": [ // 后端influxdb 节点 { "name": "remote-influxdb1", "url": "http://192.168.0.103:8086", "auth_secure": false // 若influxdb开启认证,则需配置 } ] }, { "name": "proxy02", "backends": [ { "name": "remote-influxdb2", "url": "http://192.168.0.108:8086", "auth_secure": false } ] } ], "listen_addr": ":7076", "data_dir": "/opt/app/proxy/data", "tlog_dir": "/opt/app/proxy/logs/influxdb-proxy.log", "flush_size": 10000, // 当数据在1s内需要写入1w条,则触发,否则write_timeou写入 "flush_time": 1, "check_interval": 1, "rewrite_interval": 10, // 数据写入频率 "conn_pool_size": 20, // 工作线程 "write_timeout": 10, // 写超时时间,单位s "idle_timeout": 10, "auth_secure": false, "write_tracing": false, "query_tracing": false, "https_enabled": false, "https_cert": "", "https_key": "" }
influxdb-proxy 差异数据补全 阈值为多少
influxdb-proxy 差异数据 存留时间InfluxDB
数据存储路径
元数据存储路径
日志存储路径
认证开启