特に説明がない限り、記事のコードブロック内のコマンドの順序に従って、一つずつ実行することで目標を達成できます。
対応システム:Debian 系ディストリビューション、Ubuntu を含む。他のディストリビューションでは、プロセスに従ってコマンドを少し変更すれば一般的に可能です。
デプロイ完了の予想時間:15 分(しかし、一度見るだけでも 15 分かかるので、30 分?)
記事内のワンクリックスクリプトは amd64 システム専用です。
Grafana、Prometheus、および Node Exporter は、システムやアプリケーションのさまざまな使用率を収集、保存、クエリし、視覚的に表示するための人気のあるオープンソースの監視ツールのセットです。各ツールには特定の機能があります:
- Grafana:視覚化ツールで、オープンソース版とエンタープライズ版があります。Grafana はクライアントからデータを収集せず、保存もしません。その機能は、Prometheus や他のデータソース(SQL など)から収集したデータを直感的かつ美しい形式で表示することです。ユーザーはパネルをカスタマイズでき、アラート、注釈、ダッシュボード変数、プラグイン、認証をサポートしています。
- Prometheus:オープンソースのシステム監視および警告プログラムで、HTTP プロトコルを使用してクライアントをポーリングして必要なデータを取得します。結果を保持する時系列データベースを維持し、事前定義された時間間隔で各クライアントをポーリングすることで、クライアントの長期的なパフォーマンスの概要を構築できます。
- Node Exporter:クライアントノード上でさまざまなコレクターを使用できますが、Prometheus は独自の Node Exporter ツールの使用を推奨しています。CPU、ディスク I/O、メモリ、ネットワークなどの多数のハードウェアおよびカーネル指標を収集し、収集可能な指標の完全なリストは https://github.com/prometheus/node_exporter ページで確認できます。
長文のため、より良い読書体験のためにブログをご覧ください: https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/
リソース使用率#
Grafana と Prometheus をデプロイした後、メモリ使用量は 200MB 以上増加しました;監視対象のクライアントが 3 つの場合、1 日運用後にメモリ使用量は 300MB に達しました。全体的に、リソース消費量は大きく、2GB のメモリと 20GB のディスクスペースを持つマシンを監視サーバーとして使用するのが適しています。
top コマンドを使用すると、node_exporter は約 20MB のメモリを使用しています。
top -p $(pgrep node_exporter)
デプロイプロセス#
デフォルトでは、Grafana の Web インターフェースはポート 3000
でアクセスされ、Prometheus はポート 9090
、Node Exporter はポート 9100
を使用します。ファイアウォールを開放します:
sudo ufw allow 9090 comment 'prometheus'
sudo ufw allow 3000 comment 'grafana'
# Node Exporterは異なるので後述します
最良の結果を得るために、同じサーバー上で Prometheus と Grafana を実行してください。以下では、Prometheus と Grafana をホストするサーバーのシステムを「監視サーバー」と呼びます。監視されるシステムは「クライアント」となります。
この記事の手順は非 root ユーザー向けに書かれています。権限を昇格させる必要があるコマンドには sudo
を前置きします。
監視サーバーでファイアウォールを開放しました✔#
スクリプトを使用したくない場合や、インストールプロセスを理解したい場合は、原文をご覧ください: https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/ 、長文のためこのように配置しています。
監視サーバーに Prometheus をインストールし、サービスとして実行します#
ワンクリックで Prometheus をインストール:(https://github.com/AhFeil/bash-script/blob/main/install-prometheus.sh)
wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-prometheus.sh' | sudo bash
実行後に active (running) が表示されれば、インストールは成功です。
http://ip_addr:9090
で Prometheus の Web インターフェースとダッシュボードにアクセスします。ip_addr
を監視サーバーのアドレスに置き換えてください。
すべてのクライアントに Node Exporter をインストールし、ファイアウォールを開放します。#
クライアントは Linux ディストリビューションでも Windows などでもかまいませんが、Node Exporter は Linux 専用です。
クライアントでは監視サーバーの IP に対して 9100 ポートのみを開放し、監視サーバーの IP を変更することを忘れないでください:
sudo ufw allow from 監視サーバーIP to any port 9100 comment 'node_exporter'
ワンクリックで Node Exporter をインストール:(https://github.com/AhFeil/bash-script/blob/main/install-node_exporter.sh)
wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-node_exporter.sh' | sudo bash
実行後に active (running) が表示されれば、インストールは成功です。
更新する場合は、再度実行すれば大丈夫です。
Prometheus を設定してクライアントを監視します#
クライアントノードは現在監視の準備が整いました。クライアントを prometheus.yml
に追加するには、以下の手順に従ってください:
Prometheus を実行している監視サーバーで、prometheus.yml
を開いて編集します。
sudo vim /etc/prometheus/prometheus.yml
scrape_configs
を見つけます。ここにはジョブのリストがあります。現在、prometheus
という名前のジョブがあります。このジョブはポート 9090
でローカルの Prometheus タスクを監視しています。
prometheus
ジョブの下に、job_name
を remote_collector
とする 2 番目のジョブを追加します。以下の情報を含めます。
- 抽出間隔を設定します:
scrape_interval: 10s
- 監視する IP とポート番号
:9100
を追加し、各エントリをカンマで区切ります。 - ローカルサーバーの監視を有効にするには、
localhost:9100
エントリをリストに追加し、ローカルに Node Exporter をインストールします。
このエントリは以下の例のようになります。remote_addr
をクライアントの実際の IP アドレスに置き換えてください。
...
- job_name: "remote_collector"
scrape_interval: 10s
static_configs:
- targets: ["remote_addr:9100", "localhost:9100"]
すぐに Prometheus を再起動します、
sudo systemctl restart prometheus
Web ブラウザで監視サーバーのポート 9090
にある Prometheus の Web ポータルに再度アクセスします。 【Status】-【Targets】を選択します。remote_collector
ジョブの 2 番目のリンクが表示され、クライアントのポート 9100
を指します。リンクをクリックして統計を表示します。
Grafana サーバーのインストールとデプロイ#
Prometheus が収集した統計情報は、生データのダンプとしてしか見られません。読みづらく、あまり役に立ちません。
Grafana は、Prometheus が収集した統計情報を表示するインターフェースを提供します。Prometheus をデータソースとして追加し、Prometheus を実行している同じサーバーに Grafana をインストールします。
前提準備、
# 必要なユーティリティをいくつかインストールします
sudo apt-get install -y apt-transport-https software-properties-common
# Grafana GPGキーをインポートします
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
# Grafana「安定版」リポジトリを追加します
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Grafana のオープンソース版をインストールします。
sudo apt-get update && sudo apt-get install grafana
systemctl
デーモンを再読み込みします。
sudo systemctl daemon-reload
自動起動に追加し、すぐに起動します
sudo systemctl enable --now grafana-server.service
状態を確認します
sudo systemctl status grafana-server
Grafana と Prometheus を関連付けます#
すべてのシステムコンポーネントがインストールされましたが、Grafana と Prometheus はまだ関連付けられていません。残りは Grafana の Web インターフェースを使用して完了できます。
Grafana と Prometheus を統合するには、以下の手順に従ってください:
- ブラウザで監視サーバーの
3000
ポートにアクセスします。例えば、http://ip_addr:3000
と入力し、ip_addr
を実際の IP アドレスに置き換えます。 - Grafana がログインページを表示します。ユーザー名とデフォルトパスワードはどちらも
admin
です。プロンプトが表示されたら、パスワードをより安全な値に変更します。 - パスワードを正常に変更すると、Grafana は Grafana ダッシュボードを表示します。
- Prometheus をデータソースとして追加するには、歯車のアイコン(設定を表す)をクリックし、データソースを選択します。
- 次の画面で、「データソースを追加」ボタンをクリックします。
- Prometheus をデータソースとして選択します。
- ローカル Prometheus ソースの場合、URL を
http://localhost:9090
に設定します。他のほとんどの設定はデフォルトのままで構いません。
- 設定に満足したら、画面の下部にある【Save & test】ボタンを選択します。
- すべての設定が正しければ、Grafana は
Data source is working
と確認します。
Grafana を使用してダッシュボードテンプレートをインポートします#
カスタムダッシュボードを作成することもできます。しかし、Prometheus はすでに Node Exporter をサポートするダッシュボード「Node Exporter Full」を作成しています。以下はインポートの手順です。
カスタムダッシュボードを作成するには、4 つの正方形のようなダッシュボードボタンをクリックします。次に、+ 新しいダッシュボードを選択します。詳細については、Grafana のダッシュボード構築ガイドを参照してください。
- Grafana ダッシュボードで、4 つの正方形で構成されたダッシュボードアイコンを選択します。
- 右側の【New】-【Import】を選択します。
- 次に、【Import via grafana.com】で、前のステップの ID
1860
を入力します。次に【Load】を選択します。
- 次の画面でインポートの詳細を確認します。データソースとして
Prometheus
を選択し、【Import】ボタンをクリックします。
Node Exporter Full
ダッシュボードがすぐに有効になります。クライアントノードのパフォーマンス指標と状態が表示され、メモリ、RAM、CPU の詳細が含まれます。
原文リンク: https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/
版权声明:本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 https://blog.vfly2.com/ 。
私の記事が役に立ったと思われる場合は、RSS での購読を歓迎し、コメントでの指摘もお待ちしています。