记一次InfluxDB故障

在一个测试环境中,InfluxDB已经运行了一年多,今天突然发现不能保存监控数据了。我们先回顾一下InfluxDB如何配置的。
生成配置文件,

influxd config > /etc/influxdb/influxdb.generated.conf

启动服务指定

influxd -config influxdb.generated.conf

也可用通过环境变量指定

echo $INFLUXDB_CONFIG_PATH  /root/influxdb.generated.conf
influxd

配置文件里面的配置都是可以通过环境变量去指定的,而且会覆盖配置文件里面的配置
这为容器部署提供了便利。

回到今天的问题,新pod的数据没法写入,但老pod监控没有问题,heapster一直报错,

E0801 18:40:05.837265       1 influxdb.go:219] InfluxDB write failed: {"error":"partial write: max-series-per-database limit exceeded: db=k8s (1000000/1000000) dropped=121"}
E0801 18:41:05.637630       1 influxdb.go:219] InfluxDB write failed: {"error":"partial write: max-series-per-database limit exceeded: db=k8s (1000000/1000000) dropped=247"}

查看官网这个参数配置。
记一次InfluxDB故障_第1张图片
解释的非常清楚,我就不翻译了,设置成0就不限制了。而且Note提示和我的现象完全一致。

扩展一下,还有一些别的配置,
这里写图片描述
通过这个配置修改InfluxDB的数据存储路径

记一次InfluxDB故障_第2张图片
配置wal日志路径

这里写图片描述
缓存大小
还有一些就不一一列举,大家到官网上面去就可以看到。

API
查询数据库

 curl -G 'http://localhost:8086/query' --data-urlencode 'q=SHOW DATABASES'

{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["k8s"]]}]}]}

查询所有的指标

# curl -G 'http://localhost:8086/query?db=k8s' --data-urlencode "q=SHOW MEASUREMENTS"
{"results":[{"statement_id":0,"series":[{"name":"measurements","columns":["name"],"values":[["cpu/limit"],["cpu/node_allocatable"],["cpu/node_capacity"],["cpu/node_reservation"],["cpu/node_utilization"],["cpu/request"],["cpu/usage"],["cpu/usage_rate"],["disk/io_read_bytes"],["disk/io_read_bytes_rate"],["disk/io_write_bytes"],["disk/io_write_bytes_rate"],["filesystem/available"],["filesystem/inodes"],["filesystem/inodes_free"],["filesystem/limit"],["filesystem/usage"],["memory/cache"],["memory/limit"],["memory/major_page_faults"],["memory/major_page_faults_rate"],["memory/node_allocatable"],["memory/node_capacity"],["memory/node_reservation"],["memory/node_utilization"],["memory/page_faults"],["memory/page_faults_rate"],["memory/request"],["memory/rss"],["memory/usage"],["memory/working_set"],["network/rx"],["network/rx_errors"],["network/rx_errors_rate"],["network/rx_rate"],["network/tx"],["network/tx_errors"],["network/tx_errors_rate"],["network/tx_rate"],["restart_count"],["uptime"]]}]}]}

查询单个指标

curl -G 'http://localhost:8086/query?db=k8s' --data-urlencode 'q=select mean(value) from "memory/cache" where "pod_name"=~ /^fqzxt-fqzshuat-20180621123611-3317231056-31jh3/

上面的=~ 是使用正则表达式

加上时间筛选

curl -G 'http://localhost:8086/query?db=k8s' --data-urlencode 'q=select * from "memory/cache" where "pod_name"=~ /^fqzxt-fqzshuat-20180621123611-3317231056-31jh3/ and time >= now()-10m '

或者是纳秒时间戳

curl -G 'http://localhost:8086/query?db=k8s' --data-urlencode 'q=select * from "memory/cache" where "pod_name"=~ /^fqzxt-fqzshuat-20180621123611-3317231056-31jh3/ and time > 1532316558000000000'

查询还支持函数,譬如mean()函数求取平局值,还有group等常规sql功能的支持

curl -G 'http://localhost:8086/query?db=k8s' --data-urlencode 'q=select mean("value") from "memory/cache" where "pod_name"=~ /^fqzxt-fqzshuat-20180621123611-3317231056-31jh3/ and time >= now() -5m group by time(1m)  fill(null)'

你可能感兴趣的:(云计算,存储)