Prometheus + Grafanaでサーバー監視するための学習メモ

通勤時間に調べ物をするも、帰宅して手を動かすまでのリードタイムが長くなかなか手を動かせていません。
そこで調べたものはメモし、ToDoまで落とし込んだ上で手を動かせるようスクラップを活用してみます。割と気軽に書き込みたい。

Prometheusとは
- サーバーリソース監視用OSSソフトウェア
- セットアップが簡単
- できること
- CPU、メモリ使用率などを収集
- 時系列グラフで可視化し分析できる
- イメージ
- 監視対象サーバーにexporter(メトリクスを収集しPrometheusに送るエージェントプログラム)をインストールする
- 監視サーバーを用意しPrometheusをセットアップする
- 収集したメトリクスはPrometheus組み込みの時系列データベース(TSDB)にデフォルト15日間保存

参考

Grafanaとは
- Prometheusで収集したメトリクスをダッシュボードで可視化できる
- 小規模ならPrometheusサーバーに同居させ、大規模なら別のサーバーやVMを使う
- 今ならコンテナを別々で立ててkubenetesか

家でやること
随時ステータス更新する
- Prometheus + Grafanaのセットアップ
- 監視対象コンテナ作成
- exporter導入し監視
- Alert設定
- Slack通知

プッシュ型とプル型の違い
サーバー監視ツールは2種類に大別される。
主語は監視対象サーバー側。
プル型
監視対象サーバーにインストールしたエージェント(Prometheusの場合はそれがexporter)が公開しているHTTPエンドポイントに対して定期的にアクセスし、メトリクスデータを取得する。これがプル型。
「いま元気?」と定期的に聞いてくるイメージ。
代表的なのはPrometheus、Zabbix(一部)らしい。
プッシュ型
監視対象サーバーにインストールしたエージェントが、収集したメトリクスデータを送信するタイプ。
「いまね、元気だよ!」と自分からハートビートしてくるイメージか。
代表的なサービスは、CloudWatch, DataDog, NewRelic, それからMackerel。
プッシュ型の方が多いのはなぜだろうか?

サーバー監視ツールにプッシュ型が多い理由
(復習: プッシュ型は「元気だよ!」と自分から言ってくるタイプ)
理由1.台数の増減
監視対象サーバー台数はクラウドで構築が当たり前の時代増えたり減ったりしやすい。
プル型で「元気?」と聞くタイプだと台数の前後で設定の手間が必要。
一方プッシュ型なら監視サーバーに対して自分から言ってくるので楽。監視サーバー側は待ち受けていればいいので。なるほど!
理由2.穴あけ
プル型で監視対象サーバーへポーリングするには毎度インバウンドの穴あけが必要でリスクある。プッシュ型ならアウトバウンドで監視サーバーへ向ければいいのでセキュリティリスクは下がる。
理由3.監視漏れを防ぐ
ポーリングのタイミングを合わせるより、監視対象サーバーの起動後エージェントが動いてすぐ「いま元気!」と言い始めれば監視漏れを防げる。

結論クラウドと相性がいいからプッシュ型の監視ツールが多いようだ、なるほど🧐