Ubuntu14.04にDockerを使用してPrometheusをインストールする方法

前書き

Prometheusは、オープンソースの監視システムおよび時系列データベースです。これには、メトリックの生成と収集、ダッシュボードへの結果データのプロット、異常な状況に対するアラートの発行など、監視の多くの側面が含まれます。この目標を達成するために、個別に、しかし組み合わせて動作するさまざまなコンポーネントを提供します。

Dockerは、Linuxコンテナー(または他のパッケージングテクノロジー)を使用してサーバープロセスをカプセル化し、それらの管理と分離を容易にする方法を提供します。 Dockerの詳細については、[Dockerエコシステム:一般的なコンポーネントの概要](https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction-to-common-components)を参照してください。

このチュートリアルでは、Prometheusの3つの主要コンポーネントをDockerにインストールする方法を学習します。これらは:

Prometheusエコシステムにはさらに多くのコンポーネントがありますが、これら3つのコンポーネントはPrometheusを使用するための良い出発点を提供します。

準備 ##

このチュートリアルに従うには、次のものが必要です。

**注:**この記事は、1 CPU / 512 MB RAM Ubuntu14.04ドロップレットでテストされています。 Prometheusの構成は、この記事のステップ1の指示に従って調整して、さまざまな量の利用可能なリソースを取得する必要があります。

ステップ1-Prometheusをインストールする

このセクションでは、Dockerを使用してメインのPrometheusサーバーをインストールする方法を紹介します。続行する前に、「**前提条件」**セクションに従ってDockerをインストールしてください。 Prometheusサーバーは、Prometheusエコシステムのコア部分であり、メトリックの収集と保存、式クエリの処理、およびアラートの生成を担当します。

すべてのPrometheusコンポーネントのDockerコンテナイメージは、DockerHubの** prom **組織の下でホストされています。他のオプションを指定せずに prom / prometheus Dockerイメージを実行すると、Prometheusサーバーが起動します。このサーバーには、 / etc / prometheus / prometheus.ymlコンテナー内にあるサンプル構成ファイルが含まれています。また、コンテナ内にインストールされた / prometheus Dockerデータボリュームを使用して、収集されたメトリックデータを格納します。このデータボリュームディレクトリは実際にはホスト上のディレクトリであり、Dockerはコンテナが初めて起動されたときにこのディレクトリを自動的に作成します。その中のデータは、同じコンテナを再起動しても変更されません。

デフォルトの構成ファイルをオーバーライドする方法は複数あります。たとえば、カスタム構成ファイルをDockerデータボリュームとしてホストファイルシステムからコンテナーに渡すことも、派生Dockerコンテナーを作成して、独自の構成ファイルをコンテナーイメージにベイクすることもできます。このチュートリアルでは、ホストシステムから構成ファイルをインポートすることを選択します。

組織のメトリックを保存するためのさまざまなモードもあります。このチュートリアルでは、Dockerイメージのデフォルトの動作を使用します。Dockerデータボリュームを使用してメトリックを保存します。ニーズをより適切に満たすために、データボリュームコンテナの作成を検討することもできます。

まず、ホストファイルシステムに最小限のPrometheus構成ファイル 〜/ prometheus.ymlを作成します。

nano ~/prometheus.yml

以下をファイルに追加します( your_server_ipをドロップレットのIPアドレスに置き換えます)。

# 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:['your_server_ip:9100']

この設定例では、Prometheusがそれ自体(PrometheusはPrometheusと互換性のある形式でメトリックも公開するため)および後で設定するノードエクスポータからメトリックを取得できます。 Prometheusは localhostホスト名を使用してコンテナ内で自身に接続できますが、ノードエクスポータは別のネットワーク名前名を持つ別のコンテナで実行されるため、サーバーの外部IPを使用してノードエクスポータをスクレイプする必要があります。

外部構成ファイルを使用してPrometheusDockerコンテナーを開始します。

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ハブからDockerイメージがプルされます。

このコマンドは非常に長く、多くのコマンドラインオプションが含まれています。それをもっと詳しく見てみましょう:

次のコマンドを使用して、実行中のすべてのDockerコンテナを一覧表示できます。

docker ps

たとえば、PrometheusDockerコンテナに似た次のように表示されます。

CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
6 a89ac39911e        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 container_id

この例では、コマンドは次のようになります。

docker logs 6a89ac39911e

インジケータストレージボリュームが保存されているホストファイルシステムの場所を見つけるには、container_idを使用して次のコマンドを実行できます。

docker inspect container_id

これにより、インストールされているDockerボリュームのホストパスなど、コンテナ構成に関する情報が出力されます。

出力でこれに似たものを見つけてください:

..." 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 / volume / 821b0abc470a9c758ff35ed5cff69077423a629566082a605a01d8207d57cd6c / _dataホストシステムに保存されています。 Prometheusコンテナを初めて起動すると、Dockerはこのディレクトリを自動的に作成します。 / prometheusコンテナ内のディレクトリにマップされます。同じコンテナを再起動しても、このディレクトリのデータは変更されません。必要に応じて、既存のホストディレクトリをインストールしてメトリックデータを保存することもできます。

これで、 http:// your_server_ip:9090 /にあるPrometheusサーバーにアクセスできるようになります。 「** Target」セクションの「http:// your_server_ip:9090 / status」をポイントし、「prometheus」ジョブの「http:// localhost:9090 / metrics」エンドポイントを見つけて、自分自身に関する情報を収集していることを確認しますの指標。この目標の状態列には、目標の状態が HEALTHY として表示されます。対照的に、 http:// localhost:9100 / metrics(ノードエクスポーター)エンドポイントは不健康**として表示されます。ノードエクスポーターが開始されていないため、削除できません。

全体として、ホストファイルシステム 〜/ prometheus.ymlにあるカスタムPrometheus構成ファイルを使用して、PrometheusをDockerコンテナとして実行しています。メトリックストレージは、コンテナの / prometheusディレクトリにあり、このセクションで説明する dockerinspectコマンドで示されるパスを介してホストシステムにバックアップされます。

ステップ2-ノードエクスポータを設定する

このセクションでは、Prometheusノードエクスポータをインストールします。ノードエクスポータは、実行中のホスト(ノード)に関するPrometheusメトリックを公開するサーバーです。これには、コンピューターファイルシステム、ネットワーク機器、プロセッサー使用量、メモリー使用量などに関するインジケーターが含まれます。

DockerでNodeExporterを実行すると、実行中のホストに関するメトリックを公開することが全体の目的であるため、いくつかの課題が発生することに注意してください。他のオプションを指定せずにDockerで実行すると、Dockerのファイルシステムやネットワークデバイスなどのリソースの名前名により、ホストの環境とは異なるコンテナ環境に関するメトリックのみがエクスポートされます。したがって、通常は、Docker以外のホストシステムでNodeExporterを直接実行することをお勧めします。ただし、Dockerを使用してすべてのプロセスを管理する必要がある場合は、Dockerからホストメトリックをエクスポートするための合理的な概算を提供する回避策について説明します。

Dockerを使用して、ポート9100でノードエクスポーターを起動します。

docker run -d -p 9100:9100-v "/proc:/host/proc"-v "/sys:/host/sys"-v "/:/rootfs"--net="host" prom/node-exporter -collector.procfs /host/proc -collector.sysfs /host/proc -collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

次のDockerフラグとNodeExporterフラグは、* host *メトリックの妥当な近似値を提供するために使用されます。

一部のメトリックは、ホスト上で直接実行されているノードエクスポーターとはまだ異なることに注意してください。具体的には、ファイルシステムの使用状況について報告されたメトリックには、コンテナ内のこのプレフィックスの下でルートファイルシステムにマウントしているため、 mountpointタグ値の / rootfsにプレフィックスが含まれます。説明されている回避策が将来のNodeExporter機能に十分であるという保証はないため、DockerでNodeExporterを実行することを決定できます。

これで、Prometheusサーバーがノードエクスポーターのクロールを自動的に開始するはずです。 http:// your_server_ip:9090 / statusPrometheusサーバーのステータスページに移動し、 nodeジョブの http:// your_server_ip:9100 / metricsターゲットが** HEALTHY **ステータスとして表示されていることを確認します。

ステップ3-Grafanaを設定する

最後に、Grafanaを作成します。 Grafanaは、データをグラフにクエリするためのバックエンドとしてPrometheusをサポートするグラフィカルダッシュボードビルダーです。

Grafanaは、ダッシュボードのメタデータ(どのダッシュボードが存在し、どのチャートを表示するかなど)を構成可能なSQLベースのデータベースに保存します。 Grafanaは、ローカルファイルおよび[MySQL](https://cloud.tencent.com/product/cdb?from=10680)や[PostgreSQL](https://cloud.tencent.com/product/postgresql?from=10680)などの外部データベースサーバーでサポートされているSQLite3データベースの使用をサポートしています。

このチュートリアルでは、Dockerデータボリュームに支えられたSQLite3データベースを使用します。

選択した管理者パスワード( admin_password)を使用して、GrafanaをDockerコンテナとして起動します。

docker run -d -p 3000:3000-e "GF_SECURITY_ADMIN_PASSWORD=admin_password"-v ~/grafana_db:/var/lib/grafana grafana/grafana

これにより、DockerHubからGrafanaDockerイメージがダウンロードされ、ホストシステムに新しいDockerボリュームが作成され、 〜/ grafana_db / var / lib / grafanaにコンテナファイルシステムが作成されます。コンテナ内で、GrafanaはSQLite3データベース / var / lib / grafana / grafana.dbを自動的に作成して初期化します。

-eフラグを使用すると、Dockerコンテナで開始されたプロセスに環境変数を渡すことができます。ここでは、これを使用して、 GF_SECURITY_ADMIN_PASSWORD環境変数を目的のダッシュボード管理者パスワードに設定し、デフォルトのパスワード adminを上書きします。環境変数を使用して、他のGrafana構成設定をオーバーライドすることもできます。詳細については、[環境変数の使用](http://docs.grafana.org/installation/configuration/#using-environment-variables)を参照してください。

Grafanaが正しく機能していることを確認するには、 http:// your_server_ip:3000 /にアクセスしてください。管理者のユーザー名は adminで、パスワードはDockerコンテナを起動したときに選択したパスワードです。

ログインすると、Grafanaのメインビューが表示されます。

Grafanaの使用を開始する方法の詳細については、[Grafanaドキュメント](http://docs.grafana.org/)を参照してください。 [Prometheus Grafana Document](http://prometheus.io/docs/visualization/grafana/#using)では、Prometheus、特にGrafanaの使用方法についても説明しています。

結論として ##

おめでとう! Prometheusサーバー、Node Exporter、Grafanaをセットアップしました。これらはすべてDockerを使用します。これらは現在すべて同じマシンで実行されていますが、これはデモンストレーションのみを目的としています。実稼働環境では、通常、ノードエクスポーター、複数のPrometheusサーバー(組織のニーズに応じて)、および単一のGrafanaサーバーが、これらのサーバーからのデータをマッピングするために、監視対象の各コンピューターで実行されます。

Prometheusの一般的な使用法の詳細については、その[ドキュメント](http://prometheus.io/docs/introduction/overview/)を参照してください。

その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。

参照:「Ubuntu14.04でDockerを使用してPrometheusをインストールする方法」

Recommended Posts

Ubuntu14.04にDockerを使用してPrometheusをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法
Ubuntu18.04にDockerComposeをインストールする方法
Ubuntu20.04にDockerをインストールして使用する方法
Ubuntu16.04にDockerをインストールして使用する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu18.04にJenkinsをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にRをインストールする方法
Ubuntu16.04にMoodleをインストールする方法
Ubuntu14.04にSolr5.2.1をインストールする方法
Ubuntu16.04にTeamviewerをインストールする方法
Ubuntu20.04にMariaDBをインストールする方法
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にMonoをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu20.04にZoomをインストールする方法
Ubuntu16.04にNginxをインストールする方法
Ubuntu20.04にOpenCVをインストールする方法
Ubuntu20.04にSpotifyをインストールする方法
Ubuntu18.04にPostmanをインストールする方法
Ubuntu16.04にGo1.6をインストールする方法
Ubuntu18.04にGoをインストールする方法
Ubuntu14.04にMySQLをインストールする方法
Ubuntu20.04にPostgreSQLをインストールする方法
Ubuntu18.04にVLCをインストールする方法
Ubuntu20.04にTeamViewerをインストールする方法
Ubuntu20.04にWebminをインストールする方法
Ubuntuにdockerをインストールする
RaspberryPiにUbuntuをインストールする方法
Ubuntu14.04にBaculaServerをインストールする方法