こんにちは、hmです。
ここ最近、監視ツールの調査をしており、面白そうなものを見つけたので、
紹介したいと思います。
なお、今回はあくまで特徴をお伝えするにとどめます。
構築手順は別途お伝えしますが、すごく楽です。
(この点もPrometheusのいいところでもあります。)
ふわっと特徴をお伝えすると、
1.Pull型のOSS監視ツール
Pull型とは、サーバー側から監視先ホストのポートをたたいて回ります。
そのため、サーバー側にはホストの情報を覚えさえてなければなりませんが、
すべて書く必要はなく、service discoveryを使えば簡単に設定、かつ監視対象の絞り込みが
できます。
scrape_configs:
- job_name: ‘my_ec2_hosts’
# EC2 Service Discovery Config
ec2_sd_configs:
- region:
access_key:#アクセスキー
secret_key:#シ-クレットキー
port: 9100 # 監視対象ポート
2.Golang製
3.扱えるのは数値のみ(ログ監視もできそうですが、まだ調査中です)
ここは私がまだわかってないところですが、サーバーがとってくる情報は、数値情報です。
ログの文字列をとってくるというのは、exporter(エージェント)を書かなければならないのですが、あるのかは今はまだ調査中です。
4.ラベルで監視したい項目の絞り込みが簡単
例えば、「この役割で、このステージで、こういうグループの…」
みたいな絞り込みが可能です。
・サービスやステージにかかわらず、Webサーバーのロードアベレージが見たい!
ということであれば、下記のようなクエリを投げれば見ることができます。
node_load5{Role="web"}
また、クエリ自身もぱっとみてわかりやすく、使いやすいです。
クエリ詳細はこちらから!
アーキテクチャ
Prometheusでやっていることは、主に下記の3つです。
・情報をあつめて、ためる。
・アラートを上げる
・クエリへの回答
Web UI
下記は実際に構築したものです。ただし、このWeb UIだけではパッと見て、
わかりづらいかなというのが個人的な意見です。ですので、Grafanaで可視化をしてあげると
よりわかりやすいのかなと。別の記事で紹介をしようかと思います。
下記はホーム画面です。デフォルトは、http://localhost:9090/graphです。
クエリはこんな感じでリストになってます。
これはmetricsです。監視対象にexporter(エージェント)が入ってないため、
prometheusサーバー自身の情報を表示してます。
PrometheusのコンフィグもWeb UIからのぞけます。
今回は、ここまでです。次回は、Grafanaの可視化とservice discoveryを設定してみたいと思います。
お付き合いいただきありがとうございました。
備考:
性能については、ユースケースをもとにKibana+Elasticsearchとの組み合わせと比較をしている下記が参考になります。
http://qiita.com/sugitak/items/ff8f5ad845283c5915d2#%E9%AB%98%E6%80%A7%E8%83%BD