InfluxDB时序数据库
InfluxData提供的开源方案
开源的几个产品简称TICK. 相对于付费的企业版/云版少了集群和高可用等支持.
我主要使用的Telegraf和InfluxDB, 后两者感觉易用性太差.
展示这部分使用Grafana替代,它自带基本的告警.
- Telegraf : 性能数据的收集,插件支持丰富
- InfluxDB: 核心的时序数据库,负责存储
- Chronograf : 前端图形化展示
- Kapacitor: 流数据处理,异常检测并触发报警
InfluxDB备忘
几个概念:
- measurement : 概念上对应SQL表,主索引是时间戳
- tags : 对应表列,有索引
- fields : 对应表列,无索引
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.6.1-amd64.deb
sudo dpkg -i influxdb2-2.6.1-amd64.deb
# v1->v2数据迁移
influxd upgrade
# 查看日志
sudo journalctl -u influxdb.service
# 命令行工具
influx
## 性能提高
# 走UDP协议
# insert走批量接口
# 如果内存够大,增加 LRU大小
InfluxQL
show databases;
use telegraf;
SHOW MEASUREMENTS
LIST SERIES
# 有些删除操作需要重启服务以生效
systemctl restart influxd
类SQL查询
# 查询
select * from mem where host='moon'
select \* from /.\*/ order by time desc limit 3
SHOW TAG VALUES FROM "mem" WITH KEY = "host"
# 删除measurement
drop measurement mem
delete from com\_load\_avg_one where time < now() -1h
# 删除数据和序列
DROP SERIES FROM <measurement_name> WHERE <tag_key>='<tag_value>'
# 时间查询, 格式now() 或者2016-11-01 HH:MM:SS
# 注: 操作符和时间之间需要 空格; 时间串需要使用 单引号 "; 如果不指定时间,默认为 00:00:00
# 正则匹配, 支持 measurements 和 tags
/.\*abc.\* / # 包含字符串
/^abc/ # 以指定字符串为开头
/[ab]/ #包含 a 或 b
# WHERE子语句, =~ 匹配, !~ 不匹配
学习资源
- Jolokia: Remote JMX with JSON over HTTP