刷新了本地监控工具的故事
我之前使用了一个名为Cacti的基于SNMP+RRDTool的监控工具来进行监视。
从 Prometheus 和 Grafana 迁移到长期保存存储的故事。
Cacti 是指仙人掌。
使用SNMP进行监控的工具主要用于网络监视等。在0.8x版本中,有一个名为Weathermap的插件,可以绘制网络图,并可视化显示从哪里到哪里的通信最多,非常方便。但是在1.0版本中,不再支持并且无法使用。数据存储方面使用RRDTool。
RRDTool是什么?
用于时间序列数据的数据库工具。最近的数据可以细分,而旧数据可以进行聚合并粗略保存,这是一个高性能的工具。通过对旧数据进行聚合,可以将长时间的数据压缩保存。
普羅米修斯(Prometheus)是指
用于监控和警报的工具。
能够处理时间序列数据。
格拉納是什麼意思?
仪表板工具。可视化Prometheus的数据。
为什么进行了迁移?
在公司内部,除了Cacti之外,还有多个监控工具在运行,独立运维这些工具很麻烦,所以希望统一起来。作为统一的选择,Prometheus似乎是个不错的选项。(因此,在本文中我们将以Cacti为目标进行讨论,但我们已经迁移了一些其他的监控工具。)
通过为了添加监视对象进行请求,并进行设置。这种方法需要花费时间,并且需要一定的前期时间。现在使用Prometheus,将配置文件进行git管理,并提交pull request进行审查和合并,可以实现自动应用。这样,添加监视对象所需的时间和前期时间就减少了。
过渡步骤
-
- 洗出每台机器通过SNMP获取的信息。
这可以通过查看Cacti的设置来实现。
确定所需的监视项目。
由于可能存在不需要的项目,所以不要忘记检查,并添加缺少的项目。
引入SNMP Exporter。
由于可能存在通信限制,因此需要从正在进行SNMP监视的设备上执行。
确认在prometheus中获取数据。
在grafana中可视化数据,并整理必要的仪表板。
使用prometheus的远程写入功能将数据复制到长期保存的存储。
确认Cacti和prometheus获取的数据没有差异后,停止从Cacti获取数据。
不要忘记向用户传达新数据现在在prometheus中的事实。
由于从Cacti迁移数据很麻烦,保留Cacti以只读模式。
考虑是否可以从SNMP监视切换到其他exporter。
如果是Linux,则可以使用node_exporter。
对于自定义SNMP度量指标,寻找合适的exporter。
如果成功迁移至其他exporter并没有问题,则从snmp_exporter中删除相应内容。
在grafana或Alertmanager中设置警报。
转变后有哪些好事发生了?
-
- データ取得が速くなった
-
- snmpはデータ取得にそこそこ時間がかかっていたが、snmpの利用をかなり縮小できて、結果、速くなった
-
- 冗長化できた
-
- proemtheusを2台動かして、両方から同じデータを取得しており、片方が止まっても大丈夫になった
-
- Cactiは設定がデータベースにあるため、設定の同期が大変で冗長化できていなかった
-
- ダッシュボードがモダナイズされた。
-
- 見た目が今風なのはとてもいい。
-
- 初見でもわりとダッシュボードが作れる(proemtheusへのクエリを少し覚える必要はあるけれど)
-
- 権限管理が楽になった
-
- SAMLやgoogleログインが可能なので、ユーザ管理が楽
-
- 監視が民主化された
- 上記2点の結果でもあるのだけれど、誰でもダッシュボードやアラートが設定できるようになったので
经历了困难的时刻
監控目标的筛选和所需项目的筛选非常困难。
首先,在Cacti中已经存在不再运行的监视对象,而且数量本来就非常庞大。
在对监视项目进行审查时,对于那些已经获取但未使用的项目,要决定停止获取是件困难的事情。
因为之前一直获取了,所以暂时想要(但没有查看)。对这种想法进行反击相当困难。
困难的地方 de
由于Prometheus本身只保留大约两周的数据,而且也不推荐延长这个时间,所以需要准备另一个数据存储系统来进行长期保存。
作为数据存储,有Thanos、cortex、victoriametrics、Mimir等选项。
由於數據存儲庫中存在具有聚合功能和沒有聚合功能的選項,我們需要尋找符合自己需求的選項。實際上,我們選擇了一個沒有聚合功能並且保存期限比Cacti時代的兩年更短的數據存儲庫。
据说一台Proemetheus很难处理大量的数据。在这种情况下,需要运行多台Proemetheus并分散数据获取的目标。
因为这仅限于本地使用,所以并没有成为一个大问题。
作为一个大规模的案例,有LINE的案例。