Nightingale滴滴夜莺监控系统入门(四)—聊聊夜莺的后端储存
1-默认版本
默认是使用夜莺的两个组件来实现:TSDB+INDEX
TSDB实际上使用的是老牌的图形数据库rrdtool,记录ts和value,有很多老牌的监控使用比如Cacti;INDEX是索引模块,夜莺把监控metric记录在这里,查询数据的时候是通过索引去查询;
存储目录分别对应
TSDB:/home/n9e/data
INDEX:/home/n9e/.index
[root@n9e data]# tree
.
└── 8011
├── 00
│ └── 008eda9f02684c8e39c600da1d70c0d3_GAUGE_30.rrd
├── 03
│ └── 0390f9f1acaf9d6856ead184fdbce879_GAUGE_30.rrd
└─── 04
└── 0449c36de47cbf0c000b1f441cc62b30_GAUGE_30.rrd
[root@n9e .index]# tree
.
└── db
├── endpoint
│ └── 192.168.21.216
└── nid
├── 15
├── 16
└── 17
优点:
- .rrd文件是新增metric就被新建了,且文件大小不会随数据增多而增加,新数据是被插到环形图里;利于后期维护,避免磁盘不足数据无法写入的情况;
- 新数据保存在内存中,可以设置保存近N个时间内的数据存在内存,提高查询效率;
- tsdb会降采样,老数据会有归档策略;
- 时序数据库的使用肯定是比zabbix这种还在用关系型数据库的监控要高效的多;
缺点:
- 对磁盘IO要求较高,滴滴内部用的是NVME的固态;
- 多节点时,index支持集群部署,但是全量索引;
tsdb也支持多集群多写,index+tsdb的这种形式是经过滴滴,小米这些公司生产验证过,稳定性还是可以的。
2-M3DB
从3.X版本以后,夜莺开始支持M3DB,而且也是被强烈推荐
M3DB是UBER开源出来的,m3在uber声称存储了66亿监控指标,有点牛皮。
2-2 安装M3DB
安装单节点的m3
1,下载夜莺团队打包好的压缩文件
[root@n9e home]# wget https://s3-gz01.didistatic.com/n9e-pub/tarball/m3dbnode-single-v0.0.1.tar.gz
[root@n9e home