Prometheus と Grafana で Nomad メトリクスの可視化
前回つくった Vagrant の VM 上の Nomad と Traefik のサンプルを使用して、 Nomad のメトリクスを可視化してみます。
またも記事書くのが遅れてしまいましたが、エイプリルフールに続いてゴールデンウィークなので許してください。
さて、今回は Nomad のメトリクスを可視化するための例として、 Nomad と Prometheus と Grafana の連携方法を紹介します。 Nomad 上で何個のコンテナが動作していて、それぞれのコンテナの使用メモリはどれぐらいなのかなど、 Nomad を運用しているとそのメトリクスの可視化が気になるところです。 公式ドキュメントでは Nomad の Telemetry の設定として、 statsite, statsd, datadog, prometheus, circonus などたくさんのツールと連携できると書かれています。
telemetry Stanza - Agent Configuration - Nomad by HashiCorp
個人的には Prometheus ぐらいしか触れたことがないので、 Nomad の GitHub リポジトリに書かれていた方法でメトリクスの可視化を行います。 Nomad - (Consul) - Prometheus - Grafana を連携させる形です。
nomad/integrations/grafana_dashboards at v0.8.3 · hashicorp/nomad · GitHub
前回と同様のリポジトリで動作が確認できます。 Nomad v0.7 系だとおそらくメトリクスの名前が違ったり種類が少なかったりすると思うので、ついでに Nomad や Consul をアップデートしました。 コードの変更としては VM への Prometheus と Grafana のインストールが加わっていますが、やっつけのシェルなので全く頑張ってませんw真似しないでください。
Nomad の起動方法に関しては前回のエントリと変わっていないので vagrant up
で一発です。
具体的な連携方法ですが、それぞれのツールを理解していれば特に難しいことはありません。
まずは Nomad で Telemetry を有効化 します。
... telemetry { publish_allocation_metrics = true publish_node_metrics = true prometheus_metrics = true }
これで Prometheus が読めるフォーマットでメトリクスが取得できるようになりました。 続いて Prometheus の設定 を行うのですが、これは Nomad の GitHub リポジトリのサンプルそのままで正常に動作しました。
nomad/prometheus.yml at v0.8.3 · hashicorp/nomad · GitHub
server: 'localhost:8500'
という設定がありますが、これは同じ VM 上で動作している Consul を指しています。 Consul の Service Discovery を利用して Nomad を参照し、 metrics_path: /v1/metrics
でメトリクスを取得していると思われます。
ここまで正しく設定できていれば、次のように Prometheus で Nomad のメトリクスを確認することができますね。
では最後に Grafana で可視化 します。久々の Grafana 、最新版を使ってみたらログイン画面が宇宙っぽくてカッコよくなってましたw
設定はデフォルトのままなので、 http://localhost:3000
にアクセスして admin/admin
でログイン可能です。まずはデータソースを登録します。
データソースは yaml でも設定できるようになったようですね。 ダッシュボードは Nomad の GitHub リポジトリのものだとメトリクス名が古いのか正しく表示できなかったので、修正したものをコミットしておきました。
json をインポートしてあげれば完了です。さあいよいよグラフ表示です。こんな感じになります。
公式のサンプルだけだと質素ですが、もちろんこれ以外にもたくさんのメトリクスが取得可能です。ただかっこいいグラフを作ろうとすると Prometheus のクエリの知識が必要になります。お目当ての Nomad のタスクごとのメモリ RSS のグラフの例はこちらです。クエリは単純に nomad_client_allocs_memory_rss
だけで良いです。
Nomad の Job がたくさんある場合には Nomad の Web UI だと一覧するにはあまり見やすいものではないので、今回のように可視化をすると Nomad を運用する上で重要かつ便利になってくると思います。 OSS のコンテナマネージメントプラットフォームを運用するのはなかなか大変ですが、必要なところに必要なツールを組み合わせて対処していく他なさそうです。
Effective DevOps ―4本柱による持続可能な組織文化の育て方
- 作者: Jennifer Davis,Ryn Daniels,吉羽龍太郎,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る