DUICUO

簡単に学べる Prometheus: 強力なオープンソースの監視およびアラート システム - インストールと使用方法。

I. 過去と現在の人生

Prometheusは、完全にオープンソースのシステム監視およびアラートツールキットです。Google社内のBorgMon監視システムに着想を得て、2012年からSoundCloudで元Googleエンジニアによってオープンソースソフトウェアとして開発が始まりました。それ以来、多くの企業や組織が監視およびアラートツールとしてPrometheusを採用しています。Prometheusは非常に活発な開発者およびユーザーコミュニティを擁しており、現在ではどの企業からも独立してメンテナンスできる独立したオープンソースプロジェクトとなっています。

Prometheusは2012年のローンチ以来、数多くの企業や組織に採用され、非常に活発な開発者・ユーザーコミュニティを誇っています。現在では、特定の企業から独立して維持管理される独立したオープンソースプロジェクトとなっています。このことを強調し、プロジェクトのガバナンス構造を明確にするため、Prometheusは2016年にCloud Native Computing Foundationに加盟し、Kubernetesに次ぐ2番目のマネージドプロジェクトとなりました。

Prometheus の主な機能は次のとおりです。

  • 時系列データがインジケーター名とキー/値のペアによって識別される多次元データ モデル。
  • PromQL は、この側面を活用する柔軟なクエリ言語です。
  • 分散ストレージに依存せず、各サーバー ノードは自律的です。
  • 時系列データの収集は、HTTP 経由のプル モデルによって実行されます。
  • 時系列データは中間ゲートウェイを介してプッシュできます。
  • ターゲットは、サービス検出または静的構成を通じて検出できます。
  • 複数のグラフィカルおよびダッシュボード サポート モード。

II. アーキテクチャ図

次の図は、Prometheus のアーキテクチャとそのエコシステム コンポーネントの一部を示しています。

III. インストール

カーネル ルーティング転送を有効にします。

 echo -e "net.ipv4.ip_forward = 1\nnet.ipv4.conf.default.rp_filter = 0 \nnet.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf sysctl -p

設定ファイルを作成します。

 vim prometheus.yml
 # my global config global: scrape_interval: 15s # 采集被监控段指标的一个周期evaluation_interval: 15s # 告警评估的一个周期# 告警的配置文件alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # 告警规则配置rule_files: # - "first_rules.yml" # 被监控端的配置,目前只有一个节点,就是prometheus本身scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']

イメージを起動し、メイン構成ファイルをコンテナにマウントします。

 docker run -d -p 9090:9090 \ --name prometheus \ --restart on-failure \ -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus

実行後、イメージファイルをダウンロードする必要がありますが、これにはしばらく時間がかかります。

完全に起動すると、Prometheus の組み込み UI (http://xx.xx.xx.xx:9090/) にアクセスできるようになります。

組み込みの Web UI は比較的シンプルです。より機能が豊富なダッシュボードである Grafana については後ほど説明します。

IV. 使用法

cAdvisor は、コンテナリソースの使用状況、ネットワークトラフィック、ファイルシステムの使用状況などのメトリクスを収集できる、Google のオープンソース コンテナ監視ツールです。cAdvisor は、Kubernetes クラスタ内の各ノードにデプロイして、クラスタ内のすべてのコンテナから監視データを収集できます。

cAdvisor を導入する目的は次のとおりです。

  • コンテナの実行状況の監視: cAdvisorは、コンテナのリソース使用量、ネットワークトラフィック、ファイルシステム使用量などのメトリクスを収集できます。これらのデータは、コンテナの実行状況を把握し、異常をタイムリーに検出するのに役立ちます。
  • コンテナのパフォーマンスボトルネックの分析: cAdvisor によって収集された監視データを分析することで、コンテナのパフォーマンスボトルネックを特定し、最適化するための対策を講じることができます。
  • コンテナ リソースの使用率を向上:コンテナ リソースの使用率を監視することで、リソースを合理的に割り当て、コンテナ リソースの使用率を向上させることができます。

cAdvisor は Kubernetes クラスターに不可欠な監視ツールであり、コンテナをより適切に理解して管理するのに役立ちます。

cAdvisorの利点

  • オープンソース: cAdvisor は完全にオープンソースであり、無料で使用できます。
  • 軽量: cAdvisor は、クラスターに過度の負荷をかけない軽量アプリケーションです。
  • 使いやすい: cAdvisor は設定も使用も非常に簡単です。

cAdvisorのデメリット

  • データ保存容量の制限: cAdvisor はデフォルトで監視データをメモリに保存するため、データ量が多いとメモリ オーバーフローが発生する可能性があります。
  • 視覚化機能が限られている: cAdvisor 自体は視覚化ツールを提供しておらず、監視データを視覚化するにはサードパーティのツールが必要です。

cAdvisorの展開

  • Helm を使用したデプロイ: Helm は、cAdvisor をデプロイするために使用できる Kubernetes パッケージ管理ツールです。
  • Docker を使用したデプロイ: cAdvisor は Docker コンテナとして実行でき、Docker を使用してデプロイできます。
  • 手動デプロイ: cAdvisor バイナリをダウンロードし、Kubernetes クラスターに手動でデプロイできます。

以下では、Docker を使用して cAdvisor をデプロイする方法について説明します。

 docker run -d \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest

リアルタイムで収集されたデータを確認するには、このアドレスにアクセスしてください: http://xx.xx.xx.xx:8080/containers/。

http://xx.xx.xx.xx:8080/metrics/ は、cAdvisor が提供するデータ インターフェイスです。

次に、prometheus.yml を変更します。

 vim /data/prometheus/prometheus.yml

Prometheus 構成ファイルを変更し、ジョブ ファイルをコピーします。ここで、job_name はジョブ名、targets は cAdvisor サーバー アドレス (IP とポート) です。

 # global config global: scrape_interval: 15s # 采集被监控段指标的一个周期evaluation_interval: 15s # 告警评估的一个周期# 告警的配置文件alerting: alertmanagers: - static_configs: - targets: # 告警规则配置rule_files: # - "first_rules.yml" # 被监控端的配置,目前只有一个节点,就是prometheus本身scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'prometheus docker' static_configs: - targets: ['10.9.2.50:8080']

変更を加えたら、Prometheus を再起動します。

 docker restart prometheus

http://xx.xx.xx.xx:9090/targets の監視メトリックは、データ取得が成功したことを示しています。

V. 監視インターフェース

Grafanaは、様々なデータソースに接続し、チャート、ダッシュボード、レポートの形式でデータを表示できるオープンソースの監視・可視化ツールです。Kubernetesクラスター、Webアプリケーション、IoTデバイスなど、あらゆる種類のシステムの監視に使用できます。

Grafanaの機能

  • さまざまなデータ ソースへの接続: Grafana は、Prometheus、InfluxDB、Elasticsearch、MySQL、PostgreSQL など、さまざまなデータ ソースへの接続をサポートしています。
  • チャート、ダッシュボード、レポートの形式でデータを表示: Grafana は、さまざまなデータ表示ニーズを満たすために、豊富なチャート タイプを提供します。
  • カスタム ダッシュボードをサポート: Grafana を使用すると、ユーザーは特定の監視ニーズに合わせてダッシュボードをカスタマイズできます。
  • アラートをサポート: Grafana は Slack、電子メール、その他の方法でアラート通知を送信できます。

Grafanaの利点

  • オープンソース: Grafana は完全にオープンソースであり、無料で使用できます。
  • 柔軟性: Grafana はさまざまなデータ ソースに接続し、さまざまな方法でデータを表示できます。
  • 使いやすい: Grafana は設定も使用も非常に簡単です。

Grafanaの欠点

  • データ保存容量が限られている: Grafana 自体はデータ保存機能を提供しないため、データを保存するにはサードパーティのツールが必要です。
  • 視覚化機能が限られている: Grafana ではチャートの種類が限られているため、複雑な監視ニーズを満たせない可能性があります。

Grafanaのデプロイメント

  • Docker を使用したデプロイ: Grafana は Docker コンテナとして実行でき、Docker を使用して Grafana をデプロイできます。
  • 手動デプロイ: Grafana バイナリをダウンロードし、手動でサーバーにデプロイできます。

以下では、Docker を使用して Grafana をデプロイする方法について説明します。

 docker run -d --name=grafana -p 3000:3000 grafana/grafana

実行後、イメージをダウンロードして起動します。http://xx.xx.xx.xx:3000、デフォルトのユーザー名/パスワード: admin/admin。

「最初のデータ ソースを追加する」を選択します。

中に入ったら、Prometheus を選択します。

関連情報を入力してください。

Prometheus テンプレートを追加します。

ID番号193を入力してください。

下にスクロールして、Prometheus を選択し、インポートします。

Prometheus からのデータが正常に表示されました。