こんにちは、hmです。

ここ最近、監視ツールの調査をしており、面白そうなものを見つけたので、
紹介したいと思います。

なお、今回はあくまで特徴をお伝えするにとどめます。
構築手順は別途お伝えしますが、すごく楽です。
(この点もPrometheusのいいところでもあります。)

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つです。
・情報をあつめて、ためる。
・アラートを上げる
・クエリへの回答

architecture of prometheus

Web UI
下記は実際に構築したものです。ただし、このWeb UIだけではパッと見て、
わかりづらいかなというのが個人的な意見です。ですので、Grafanaで可視化をしてあげると
よりわかりやすいのかなと。別の記事で紹介をしようかと思います。

下記はホーム画面です。デフォルトは、http://localhost:9090/graphです。
WS000003
クエリはこんな感じでリストになってます。
WS000004
これはmetricsです。監視対象にexporter(エージェント)が入ってないため、
prometheusサーバー自身の情報を表示してます。
WS000005
PrometheusのコンフィグもWeb UIからのぞけます。
WS000000

今回は、ここまでです。次回は、Grafanaの可視化とservice discoveryを設定してみたいと思います。

お付き合いいただきありがとうございました。

備考:
性能については、ユースケースをもとにKibana+Elasticsearchとの組み合わせと比較をしている下記が参考になります。
http://qiita.com/sugitak/items/ff8f5ad845283c5915d2#%E9%AB%98%E6%80%A7%E8%83%BD

TOP