ざっくり理解するPrometheusを使った監視システム #1

こんにちは、ウィルゲートで開発室開発基盤ユニットのマネージャーをしている池添(@for__3)です。

ウィルゲートでは2019年に監視システムをPrometheusに移行して運用して来ました。

tech.willgate.co.jp

tech.willgate.co.jp

ですが、社内のメンバーの入れ替わりとともにPrometheusの設定や運用を理解しているメンバーも減ってきていました。 そこで、改めてPrometheusのできることやPrometheusを使った監視の仕組みについての社内勉強会を行いました。 今回はその際の資料の一部をブログ用に修正しました。

監視システム全体の構成

『【運用監視ツール比較】ZABBIXからPrometheusへの移行を開始しました』のブログでも解説していますが、もう少しイメージしやすいようにしたものが下図です。

prometheus

Prometheusを使った監視システムでは役割ごとに複数のサービスを用いています。今回は上図の中でも特に大事なPrometheusとExporterについて説明します。

Prometheus

Prometheusは各Exporterから送信されてきたメトリクスを収集し、予め設定されたアラートルールに従いAlertManagerにアラートを発火するのが主な仕事です。その他にもPromQLという記法を使いExporterから取得してとりためているデータを取得することが可能です。一番重要な機能を担っている心臓部分と言っても過言ではないでしょう。

Exporter

Exporterは対象のメトリクスを収集し、Prometheus向けに公開するのが仕事です。 Exporterには様々な種類があり、例えばnode_exporterでは対象ホストのリソース状況をメトリクスとして収集します。

さまざまなExporterがあり、Exporter自身は任意のportでPrometheusの形式に対応したtextを返すだけのAPIのようなものです。 弊社で使っている代表的なExporterについて説明していきます。

node_exporter

基本中の基本。nodeの各種statsをexportしてくれます。 サーバのCPU使用率やメモリ使用状況、ディスク使用率など基本的なサーバの情報を取得できます。

blackbox_exporter

エンドポイント監視。URLにblackbox_exporterから定期的にリクエストを投げ、結果を公開してくれる。 サーバから直接リクエストを投げるため、社内ツールにおいてはbasic認証やIP制限の解除などをすることで対応しています。

nginx_vts_exporter

nginxの各種メトリクスを取得してくれるExporterです。リクエストのサクセスレートなどを集計してSLO(Service Level Objective)として利用しています。

proxy_exporter

Exporterは特定のポートで情報を公開しますが、Exporterが増えてくると公開するポートが増え煩雑になってしまいます。 このExporterでは複数のExporterを束ねエンドポイントごとにExporterをプロキシしてくれるExporterです。

まとめ

今回はPrometheusの中でも特に大事なPrometheus本体と監視データを取得しPrometheusが取得できるようにしてくれるExporterの役割の説明とよく使われるExporterを紹介しました。 次回は設定したExporterをPrometheusから取得しに行くための設定方法やその際に気をつけるべきこと、取得したデータを元にアラートを発行する設定などを紹介したいと思います。

また社内でも、このような勉強会を開催することで、実際にPrometheusを触れる人が増え、各人でいろいろな活用事例も増えてくれましたので、今後もいろんな知見共有や勉強会を開催していきたいと思います。