Cacti というsnmp+RRDtool ベースなモニタリングツールを利用して監視していたものを
prometheus+grafana+長期保存ストレージ に移行した話。
Cacti とは、
SNMPを利用したモニタリングツールで、ネットワーク監視などに主に使われている。
0.8x のころ、 weathermap というプラグインがあり、ネットワーク図を描いて、どこからどこへの通信が多いのか可視化できる便利さがあったが、1.0になったころ、対応せず、使えなくなった。という経緯がある。
データストアとしてRRDToolを利用している。
RRDTool とは
時系列データのためのデータベースツール。直近のデータは細かく、古いデータはaggregateして大雑把に保存したりできる高性能なツール
古いデータをaggregateすることで、長期間のデータをコンパクトに保存できる。
prometheus とは
モニタリングとアラートのためのツール。
時系列データを扱うことができる。
grana とは
ダッシュボードツール。prometheusのデータを可視化できる。
なぜ移行したのか
そもそも、Cacti以外にも社内では複数の監視ツールが動いており、個別に運用するのが手間だったので統一したかった。
統一先としてproemtheusが筋がよさそうだった。(ので、本記事ではCactiを対象にしているけれど、もういくつかの監視ツールを移行した。)
監視対象の追加はつど依頼を受けて設定する。という方法をとっており、時間がとられていたし、リードタイムもそこそこかかっていた。
proemtheusになって、設定ファイルをgit管理し、pull requestを出してもらってレビュー、mergeで自動反映させることができるようになり、監視対象追加にかかる、時間とリードタイムが減った。
移行手順
- 各機器のsnmpで取得している情報を洗い出す
- これはCacti の設定を見ていことで可能
- 必要な監視項目を洗い出す
- 今となっては不要な項目が存在する場合があるので忘れずに
- 足りない項目があれば足す
-
SNMP Exporter を導入する
- 通信制限がかけられていることがあるため、snmp監視している端末から行う
- prometheus でデータが取得できていることを確認する
- grafana でデータを可視化しつつ、必要なダッシュボードを整備す
- prometheusのデータをremote writeという機能を利用して長期保存ストレージにコピーする
- Cactiとprometheusで取得できているデータに差がないことを確認できたらCactiからのデータ取得をやめる
- 忘れずに新しいデータはproemtheusにあることを利用者に伝える
- Cactiからデータ移行は大変なのでCacti は read only で残しておく
- snmp監視から他のexporterに移行できないか検討する
- linuxであれば node_exporter が利用できる
- カスタムsnmpメトリクスについても、良いexporter がないか探す
- 他のexporterに移して問題なければ snmnp_exporterから対象を削除していく
- grafanaもしくは Alertmanagerでアラートを設定していく
移行してどんないいことがあったか
- データ取得が速くなった
snmpはデータ取得にそこそこ時間がかかっていたが、snmpの利用をかなり縮小できて、結果、速くなった - 冗長化できた
proemtheusを2台動かして、両方から同じデータを取得しており、片方が止まっても大丈夫になった
Cactiは設定がデータベースにあるため、設定の同期が大変で冗長化できていなかった - ダッシュボードがモダナイズされた。
見た目が今風なのはとてもいい。
初見でもわりとダッシュボードが作れる(proemtheusへのクエリを少し覚える必要はあるけれど) - 権限管理が楽になった
SAMLやgoogleログインが可能なので、ユーザ管理が楽 - 監視が民主化された
上記2点の結果でもあるのだけれど、誰でもダッシュボードやアラートが設定できるようになったので
苦労したところ
監視対象の洗い出しと必要な項目の洗い出しがとても大変だった。
そもそもすでに動いていない監視対象もCactiには存在していて、そもそも量が膨大だった。
監視項目の洗い出しでは、取得しているけど使っていないだろう。という項目について、取得をやめる。という決断がしにくかった。
今まで取得していたのだからとりあえず欲しい(でも見てない)。に対抗するのはそれなりに大変。
難しいところ
prometheus 自体としては標準で2週間分くらいのデータしか保持しないようになっており、期間を増やすことも推奨されていないので
長期保存には別のデータストアを用意する必要がある。
データストアとしてはThanos, cortex, victoriametrics, Mimir などがある。
データストアにはaggregate機能があるもの、ないものがあるので自分たちの用途にあったものを探す必要がある。
実際、aggregate機能のないデータストアを選択し、保存期間もCactiのころの2年より短くした。
proemtheus 1台で膨大な量のデータを扱うのが難しいらしい。その場合、proemetheusを複数台動かして、データ取得対象を分散させる必要があるとのこと。
これは、オンプレミスの限られた範囲での利用だったので問題になるほどではなかった。
大規模事例としてはLINEの事例がある。