Prometheusの共同作成者Julius Volzの記事
前書き
プロメテウスは、オープンソースの監視システムおよび時系列データベースです。 メトリックの生成や収集、ダッシュボードでの結果データのグラフ化、異常に関するアラートなど、監視の多くの側面に対処します。 これを実現するために、個別に実行されるが組み合わせて使用されるさまざまなコンポーネントを提供します。
Dockerは、Linuxコンテナー(または他のカプセル化テクノロジー)を使用してサーバープロセスをカプセル化する方法を提供します。これにより、サーバープロセスをより簡単に管理し、相互に分離できます。 Dockerの詳細については、https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction-to-common-components [The Docker Ecosystem:An Introduction to Common Components]を参照してください。
このチュートリアルでは、DockerでPrometheusを使用するための3つの主要コンポーネントをインストールする方法を学習します。 これらは:
-
メトリックを収集してそれらを照会するPrometheusサーバー
-
Prometheus互換形式でシステムメトリックをエクスポートするNode Exporter
-
Grafana、他のバックエンドの中でプロメテウスをサポートするWebベースのグラフィカルダッシュボードビルダー
Prometheusエコシステムにはさらに多くのコンポーネントがありますが、これら3つはPrometheusを使用するための良い出発点となります。
前提条件
このチュートリアルを実行するには、次のものが必要です。
-
Ubuntu 14.04ドロップレット
-
`+ sudo +`アクセスを持つユーザー(詳細については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 [Ubuntu 14.04での初期サーバーセットアップ]チュートリアルを参照してください)
-
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-14-04 [インストール方法]の*ステップ1 *の手順でインストールされたDocker Ubuntu 14.04でのDocker Composeの使用]
ステップ1-Prometheusのインストール
このセクションでは、Dockerを使用してメインのPrometheusサーバーをインストールする方法について説明します。 続行する前に、必ず*前提条件*セクションでDockerをインストールしてください。 Prometheusサーバーは、Prometheusエコシステムの中心部分であり、メトリックの収集と保存、および式クエリの処理とアラートの生成を担当します。
すべてのPrometheusコンポーネントのDockerコンテナイメージは、Docker Hubの* https://hub.docker.com/u/prom/ [prom] *組織の下でホストされます。 オプションなしで + prom / prometheus +
Dockerイメージを実行すると、コンテナ内の `+ / etc / prometheus / prometheus.yml `にある設定ファイルの例でPrometheusサーバーが起動します。 また、 ` / prometheus +にマウントされたhttps://www.digitalocean.com/community/tutorials/how-to-work-with-docker-data-volumes-on-ubuntu-14-04[Dockerデータボリューム]も使用します。 `収集されたメトリックデータを保存するコンテナ内。 このデータボリュームディレクトリは、実際には、コンテナが最初に起動されたときにDockerが自動作成するホスト上のディレクトリです。 内部のデータは、同じコンテナを再起動するまで保持されます。
デフォルトの構成ファイルをオーバーライドする方法は複数あります。 たとえば、ホストファイルシステムからDockerデータボリュームとしてカスタム構成ファイルをコンテナーに渡すことも、コンテナーイメージにベイクした独自の構成ファイルを使用して派生Dockerコンテナーを構築することもできます。 このチュートリアルでは、ホストシステムから構成ファイルを渡すことを選択します。
メトリックのストレージを整理するためのさまざまなパターンもあります。 このチュートリアルでは、https://www.digitalocean.com/community/tutorials/how-to-work-with-docker-data-volumes-on-ubuntu-14-04を使用するDockerイメージのデフォルトの動作を使用します[Docker data volume]:メトリックを保存します。 代わりに、必要に応じてデータボリュームコンテナの作成を検討することもできます。
最初に、ホストファイルシステムの `+〜/ prometheus.yml +`に最小限のPrometheus設定ファイルを作成します。
nano ~/prometheus.yml
次の内容をファイルに追加します(「++」をドロップレットのIPアドレスに置き換えます)。
〜/ prometheus.yml
# A scrape configuration scraping a Node Exporter and the Prometheus server
# itself.
scrape_configs:
# Scrape Prometheus itself every 5 seconds.
- job_name: 'prometheus'
scrape_interval: 5s
target_groups:
- targets: ['localhost:9090']
# Scrape the Node Exporter every 5 seconds.
- job_name: 'node'
scrape_interval: 5s
target_groups:
- targets: [':9100']
この構成例では、Prometheus自体からメトリックをスクレイプします(PrometheusはPrometheus互換の形式で自身に関するメトリックも公開するため)とともに、後で設定するNode Exporterからも取得します。 Prometheusは「+ localhost +」ホスト名を使用してコンテナ内で自身に接続できますが、Node Exporterは別のネットワーク名前空間を持つ別のコンテナで実行されるため、サーバーの外部IPを使用してNode Exporterをスクレイピングする必要があります。
外部構成ファイルを使用してPrometheus Dockerコンテナーを開始します。
docker run -d -p 9090:9090 -v ~/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus -config.file=/etc/prometheus/prometheus.yml -storage.local.path=/prometheus -storage.local.memory-chunks=10000
このコマンドを初めて実行すると、Docker HubからDockerイメージがプルされます。
このコマンドは非常に長く、多くのコマンドラインオプションが含まれています。 もっと詳しく見てみましょう。
-
`+ -d `オプションは、Prometheusコンテナを分離モードで起動します。つまり、コンテナはバックグラウンドで起動され、 ` CTRL + C +`を押しても終了しません。
-
`+ -p 9090:9090 +`オプションは、PrometheusのWebポート(9090)を公開し、ホストシステムの外部IPアドレスを介して到達可能にします。
-
+ -v […] +`オプションは、 `+ prometheus.yml +`設定ファイルをホストファイルシステムからPrometheusが期待するコンテナ内の場所( `+ / etc / prometheus / prometheus.yml +
)にマウントします。 -
`+ -config.file +`オプションは、_container_内のPrometheus設定ファイルの場所に応じて設定されます。
-
`+ -storage.local.path`オプションは、コンテナ内のメトリックスの保存場所を設定します。
-
最後に、このチュートリアルの「+ -storage.local.memory-chunks +」オプションは、Prometheusのメモリ使用量をホストシステムのごく少量のRAM(512 MBのみ)と少数の時系列(1000未満)に調整します。 デフォルトの1048576ではなく、10000個のサンプルチャンクのみをメモリに保持するようにPrometheusに指示します(シリーズごとに約10個のチャンク)。 *これは、より多くのRAMを搭載したマシンでPrometheusを実行する場合、およびより多くの時系列を保存する場合に、必ず調整する必要がある値です。 これに関する詳細については、Prometheusのhttp://prometheus.io/docs/operating/storage/[storage documentation]を参照してください。
次のコマンドを使用して、実行中のすべてのDockerコンテナーを一覧表示できます。
docker ps
たとえば、Prometheus Dockerコンテナの場合、次のようなものが表示されます。
Output of `docker ps`CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a89ac39911e prom/prometheus "/bin/prometheus -con" 2 hours ago Up 2 hours 0.0.0.0:9090->9090/tcp stoic_pike
`+ docker ps +`の出力に表示されるコンテナIDを使用して、実行中のPrometheusサーバーのログを次のコマンドで検査できます。
docker logs
この例では、コマンドは次のようになります。
docker logs
ホストのファイルシステムのどこにメトリックスストレージボリュームが保存されているかを調べるには、次を使用して次を実行できます。
docker inspect
これにより、マウントされたDockerボリュームのホストパスなど、コンテナーの構成に関する情報が出力されます。
出力で次のようなセクションを見つけます。
Output of `docker inspect`...
"Mounts": [
{
"Source": "/home/sammy/prometheus.yml",
"Destination": "/etc/prometheus/prometheus.yml",
"Mode": "",
"RW": true
},
{
"Name": "821b0abc470a9c758ff35ed5cff69077423a629566082a605a01d8207d57cd6c",
"Source": "/var/lib/docker/volumes/821b0abc470a9c758ff35ed5cff69077423a629566082a605a01d8207d57cd6c/_data",
"Destination": "/prometheus",
"Driver": "local",
"Mode": "",
"RW": true
}
],
...
この例では、メトリックはホストシステムの「+ / var / lib / docker / volumes / 821b0abc470a9c758ff35ed5cff69077423a629566082a605a01d8207d57cd6c / _data 」に保存されます。 このディレクトリは、Prometheusコンテナを最初に起動したときにDockerによって自動的に作成されました。 コンテナの ` / prometheus +`ディレクトリにマッピングされます。 このディレクトリのデータは、同じコンテナを再起動しても保持されます。 必要に応じて、メトリックデータを保存するために既存のホストディレクトリをマウントすることもできます。 方法については、https://www.digitalocean.com/community/tutorials/how-to-work-with-docker-data-volumes-on-ubuntu-14-04 [Ubuntu 14.04でDockerデータボリュームを操作する方法]を参照してください。これを達成するために。
これで、Prometheusサーバーに + http://:9090 / +`でアクセスできるはずです。 `+ http://:9090 / status +`に移動し、* Targets の `+ prometheus +`ジョブの `+ http:// localhost:9090 / metrics +`エンドポイントを見つけて、自身に関するメトリックを収集していることを確認しますセクション。 このターゲットの State 列には、ターゲットの状態が HEALTHY として表示されます。 対照的に、ノードエクスポータはまだ開始されていないためスクレイピングできないため、 `+ http:// localhost:9100 / metrics +
(ノードエクスポータ)エンドポイントは