Blog

Prometheusでログ監視を試してみた

はじめに

こんにちは、ニフティ株式会社 基幹システムグループの石坂です。普段の業務では課金系システムの開発運用をしています。
今回は、社内のサーバーを監視するためにPrometheusを触ってみましたので、共有したいと思います。

Prometheusとは

PrometheusはOSSのリソース監視システムです。
監視対象に監視エージェント(Exporter)を入れることでHTTP経由でメトリクス収集を行います。Exporterには様々な種類がありますが、今回はログ監視に用いるgrok-exporterを使ってみます。
また、Prometheusには収集したデータをグラフ表示する機能がありますが、Prometheus単体だと機能が充実していません。そのため、データ可視化ツールであるGrafanaと組み合わせて使われることが多いようです。

実際にログ監視してみる

Prometheusはdockerイメージが提供されているため、ローカルで簡単に試すことができます。今回はPrometheus、Grafana、監視対象としてCentOSのコンテナをdocker-composeを用いて起動します。

docker-compose.yml

監視対象のサーバーを「target-server」としています。

prometheus.yml

Prometheusの設定ファイルです。監視対象のサーバーをここに記載しておきます。 それでは実際に起動していきます。 監視対象サーバーに入ってgrok_exporterをインストールします。 以下が今回ログ監視したいサンプルログファイルとなります。 以下の設定ファイルに監視設定を記載します。
metricsのtypeで監視対象ログから取得する値の種類を指定することができます。
サンプルでは、typeを「counter」として、エラーログの件数を取得する設定が記載されています。
typeには他にもgaugeやhistogram、summaryなどがあり、例えばgaugeを指定すると、一致する各ログ行で記録される数値を取得することができます。 設定ファイルを指定してgrok_exporterを起動します。 Grafanaにログインします。(username: admin / password: admin) データソースとしてPrometheusを設定します。
設定→Configuration→Add data sourceから、Prometheusを選択して画像のようにURLを設定。Save&testを押下したら紐付け完了です。
あとはDashboardからPanelを追加して、可視化したいメトリクスを指定することでグラフを表示することができます。
以下の画像は「Unrouteable address」のサンプルエラーログが何件発生してるかを表示しています。

おわりに

PrometheusやGrafanaは今も頻繁にアップデートされており、UIや仕様変更が多いため、参考にできるナレッジが少ない印象でした。
ですが、今回dockerで試してみたように動作確認することは比較的やりやすいので、興味のある方は一度触ってみると面白いかもしれません。

We are hiring!

ニフティでは、さまざまなプロダクトへ挑戦するエンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトよりお気軽にご連絡ください! Tech TalkやMeetUpも開催しております!
こちらもお気軽にご応募ください!