こんにちは。よっしーです(^^)
今日は、dockerで構築した開発環境において、Prometheusを追加する手順をご紹介します。
実行環境
この記事では、下記の記事で構築している開発環境を前提にしていますので、環境構築をされていない方は、記事を参考に環境構築をお願いします。
Prometheusの追加
今回は、Prometheusで監視するリソースは Docker desktop for Mac になります。docker上で起動しているサービスを一つのリソースとして監視しようと思いますが、その手順については後日ご紹介しようと思います。今回は、サンプルとして、Docker desktop for Macを選択しました。
ディレクトリ構造
ディレクトリ構造は下記のようになっています。赤字の箇所が新規&更新になります。
.
├── LICENSE
├── Makefile
├── README.md
└── app
├── docker-compose.yml (更新)
├── flyway
├── mysql
├── prometheus (新規)
│ ├── Dockerfile
│ └── prometheus.yml
├── schemaspy
├── sys
└── web
docker-compose.yml
下記の内容をファイル(docker-compose.yml)110-117行目に追記します。
prometheus:
build: ./prometheus
container_name: prometheus
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- '9090:9090'
prometheus/Dockerfile
下記の内容で新規ファイル(prometheus/Dockerfile)を作成します。
FROM prom/prometheus
prometheus/prometheus.yml
下記の内容で新規ファイル(prometheus/prometheus.yml)を作成します。
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'docker-for-mac'
static_configs:
- targets: ['docker.for.mac.host.internal:9323']
Docker Daemon のメトリックを有効化
Docker Desktop for Mac の設定を開いて、configurationファイルに下記の文言を追記し、再起動します。
"experimental": true,
"metrics-addr": "127.0.0.1:9323"
再起動後に、ブラウザで「http://127.0.0.1:9323/metrics」にアクセスすると、メトリクス情報が表示されるようになっていれば、成功です。
動作確認
下記のコマンドを実行して、サービスを起動します。
make setup
サービスが起動後、ブラウザで「http://localhost:9090/targets」にアクセスして、下図のようにUPになっていれば、成功です。
解説
Prometheusとは
Prometheusは、オープンソースのシステム監視ツールであり、コミュニティベースで開発されています。Prometheusは、システムの監視、収集、分析、可視化を行うことができ、特にクラウドネイティブアプリケーションの監視に最適化されています。
プル型のメトリクス収集方式を採用しており、定期的に監視対象となるシステムからメトリクス情報を収集します。メトリクス情報は、HTTPエンドポイントから収集され、Prometheusは、エンドポイントからメトリクス情報を取得するために、自身がHTTPサーバーとして動作することができます。
収集したメトリクス情報をPromQLと呼ばれるクエリ言語を使用して分析し、可視化することができます。PromQLは、SQLに似た構文を持ち、メトリクスデータのフィルタリング、集約、算術演算、関数をサポートしています。
グラフィカルなダッシュボードを提供せず、メトリクスデータを可視化するためには、Grafanaなどの可視化ツールと連携する必要があります。Grafanaは、Prometheusとの連携に最適化されており、Prometheusから収集されたメトリクスデータをグラフィカルに表示することができます。
最後に、Prometheusは、Kubernetes、Docker、AWS、GCPなどのクラウドプラットフォームに対応しており、クラウドネイティブアプリケーションの監視に最適化されています。クラウドネイティブアプリケーションでは、コンテナやマイクロサービスなどが使用されるため、複雑な監視が必要となります。Prometheusは、このような環境においても高いパフォーマンスを発揮し、システムの監視を行うことができます。
Dockerメトリクスの取得について
Prometheus を使って Docker そのものを監視する方法については、下記のサイトを参考にしています。
おわりに
今日は、dockerで構築した開発環境にPrometheusを追加する方法をご紹介しました。次回以降、各サービスを監視できるようにするのと、Grafanaを使用して、可視化したいと思います。
今回使用したファイルは下記のGitHubにタグ付けしています。
また明日お会いしましょう!
コメント