使用 InfluxDB作为Prometheus远程存储
前言
在之前的文章中我们部署了基于Prometheus和Grafana的监控系统,但是还是有一个不足的地方,监控数据有失效时间,
为了能保留较长时间的历史数据,这里需要引入远程存储
在Prometheus的集成文档中列出了不少可以作为存储的组件,从文档数量和安装简易度考虑,这里选择的是influxDB
InfluxDB 安装配置
以下配置流程适用于centos7
1 | cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo |
如果你使用的是其他环境可以参考官方文档
1 | sudo yum install influxdb |
修改prometheus.yml配置文件,添加如下配置,使得监控数据入库
这里没有给influxDB开启认证机制,如果需要暴露给外网,考虑安全性最好配上认证
1 | vim prometheus.yml |
修改配置后通过systemctl
重启prometheus服务
之后在influxDB里就能查看到监控指标
1 | show measurements |
目前只能从最新的监控数据导入,历史数据(Grafana落盘的数据)无法直接导入。
1 | 当前存储的监控指标有12706个 |
Database names, measurements, tag keys, field keys, and tag values are stored only once and always as strings. Only field values and timestamps are stored per-point.
Non-string values require approximately three bytes. String values require variable space as determined by string compression
以上说明来自InfluxDB官网,据此估算每个月需要保存约20亿个点的数据。不负责任地估算约要6G的空间
当前最新的稳定开源版本不支持集群功能(可以付费使用商业版或者云版开启集群特性)
这里配置的单机存储就会带来两个问题
- 数据存储的横向扩展
- 集群的可用性
数据存储按之前的计算(20亿个数据6GB/月),用个大点的SSD,存个几年的数据应该是绰绰有余的
集群的可用性问题可以通过定时备份来解决,流下了贫穷的泪水
生产环境的优化
influxDB需要频繁地读写硬盘,因而最好将其运行在1000 IOPS的SSD上。
如果从停机状态恢复,IOPS建议大于2000,否则可能需要较长时间恢复。
默认情况下,表的数据存储在/var/lib/influxdb/data
目录,wal日志存储在/var/lib/influxdb/wal
目录下
当磁盘写入负载过高时,将这两个目录挂载到不同的存储设备下,这样可以有效减少磁盘资源的竞用问题。
备份和导入
可以参照此官方文档
1 | 一个简单的示例 |
后续更新
数据存储按之前的计算(20亿个数据6GB/月),用个大点的SSD,存个几年的数据应该是绰绰有余的
这个flag于2020年3月回收,磁盘满了。
观察日志可以发现,首先会报warn,说磁盘空间已满,写不进去了。
再之后preometheus就会自己退出。
其实观察了下,6个月的数据也才40个G,之前的估算是没有问题的,问题在于这个机器上还有其他占用磁盘的东西在跑着。。。
1 | 使用这个命令能排查机器上大文件 |
手动清理了tsdb的较早的监控数据
1 | influx -precision rfc3339 |
清理完成后,用df
命令查看磁盘,发现卡死在/nfs_shared
的一个疑似远程共享的盘
用mount
命令查看发现是通过tcp协议分享的其他机器上的磁盘
老老实实联系运维帮忙
之后学习到了一个,大体的解决思路参照此处
umount
掉有问题的/ndf_shared
停止
nfs
和rpcbind
服务使用排查命令检测问题
1
2
3
4
5cat /etc/mtab
netstat -ntlp
dmesg
crontab -l
cat /etc/issuesystemctl restart proc-sys-fs-binfmt_misc.automount
如果磁盘可用空间实在太小,可以考虑设置过期策略,参见官方文档
下面是一个简单的例子
1 | CREATE RETENTION POLICY "800_day_only" ON "prometheus" DURATION 800d REPLICATION 1 |
参考链接
版权声明:
除另有声明外,本博客文章均采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 进行许可。
分享