単独の説明がない限り、記事のコードブロック内のコマンドの順序に従って、一つずつ実行することで目標を達成できます。
対応システム: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 は約 20 MB のメモリを使用しています。
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 のダッシュボードが表示されます。
- 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 での購読を歓迎し、コメントでの指摘もお待ちしています。