PrometheusとGrafanaでサーバー監視を始める手順

サーバー監視をゼロから構築するなら、PrometheusとGrafanaの組み合わせが最も効果的です。リアルタイムなメトリクス収集からダッシュボード作成まで、この2つのツールが提供する機能は圧倒的な柔軟性を持ちます。特にLinuxサーバーの監視においては、システムリソースの可視化だけでなく、アラート設定や長期的なデータ保存も可能になります。本記事では、実際に動作する監視システムを構築するまでの具体的な手順を、初心者でも理解できるように丁寧に解説します。
目次
- はじめに:監視システムの必要性とメリット
- 環境準備:必要なソフトウェアとハードウェア要件
- Prometheusの導入と基本設定
- Node Exporterの導入でLinuxサーバーのメトリクス収集
- Grafanaの導入とPrometheusとの連携
- 監視対象のカスタマイズとアラート設定
- トラブルシューティング:よくあるエラーと解決策
- まとめ:監視システムの運用と今後の展望
はじめに:監視システムの必要性とメリット
サーバー監視は、システムの安定稼働を維持するために不可欠な要素です。特にLinuxサーバーでは、CPU使用率、メモリ消費量、ディスクI/O、ネットワークトラフィックなど、さまざまなリソースを常に監視する必要があります。これらのメトリクスを可視化することで、パフォーマンスのボトルネックを早期に発見し、障害発生時の迅速な対応が可能になります。
PrometheusとGrafanaを組み合わせることで、以下のようなメリットが得られます。
- リアルタイム監視:Prometheusが収集するメトリクスは数秒単位で更新されるため、常に最新の状態を把握できます。
- 柔軟なダッシュボード:Grafanaを使用すれば、直感的な操作でカスタマイズ可能なダッシュボードを作成できます。
- アラート機能:CPU使用率が90%を超えた場合やディスク容量が不足した場合など、特定の条件でアラートを発報できます。
- 長期的なデータ保存:Prometheusは時系列データを保存するため、過去のパフォーマンスを分析できます。
- オープンソース:PrometheusとGrafanaはともにオープンソースソフトウェアであり、ライセンス費用が発生しません。
総務省の調査によると、2023年には日本国内の企業の68%が何らかの形でクラウドサービスを利用しており、その中でサーバー監視の重要性がますます高まっています(出典: 総務省「令和5年度情報通信利用動向調査」)。このような背景から、PrometheusとGrafanaを活用した監視システムの導入は、ITインフラの信頼性向上に直結します。
環境準備:必要なソフトウェアとハードウェア要件
PrometheusとGrafanaを導入する前に、適切な環境を整えることが重要です。以下に必要なソフトウェアとハードウェア要件をまとめます。
サポートされているOSとバ…
PrometheusとGrafanaは、以下のOSで動作が確認されています。
| ソフトウェア | サポートOS | 推奨バージョン |
|---|---|---|
| Prometheus | Linux (Ubuntu, CentOS, RHEL), Windows | 2.47.0以上 |
| Grafana | Linux (Ubuntu, CentOS, RHEL), Windows, macOS | 10.2.0以上 |
| Node Exporter | Linux (主要なディストリビューション) | 1.6.1以上 |
ハードウェア要件
監視対象のサーバー数や収集するメトリクスの量によって、必要なリソースは異なります。一般的な目安を以下に示します。
| 用途 | CPU | メモリ | ストレージ | ネットワーク |
|---|---|---|---|---|
| Prometheusサーバー(100台以下の監視) | 2コア以上 | 4GB以上 | SSD 50GB以上 | 1Gbps以上 |
| Grafanaサーバー | 2コア以上 | 2GB以上 | HDD 20GB以上 | 100Mbps以上 |
| 監視対象サーバー(Node Exporter) | 1コア以上 | 512MB以上 | HDD 1GB以上 | 100Mbps以上 |
ネットワーク要件
PrometheusとGrafana、Node Exporter間の通信は、以下のポートを使用します。
- Prometheus:9090/tcp(Web UIとAPI)
- Grafana:3000/tcp(Web UI)
- Node Exporter:9100/tcp(メトリクス収集)
ファイアウォールやセキュリティグループでこれらのポートを開放する必要があります。特にクラウド環境では、セキュリティグループの設定を慎重に行ってください。
前提条件
以下のコマンドが実行できる環境を用意してください。
wgetまたはcurltar(アーカイブ展開用)systemd(サービス管理用)- root権限またはsudo権限
本記事では、Ubuntu 22.04 LTSをベースに手順を解説しますが、他のLinuxディストリビューションでも同様の手順で導入できます。
Prometheusの導入と基本設定
Prometheusは、時系列データを収集・保存・クエリするためのオープンソースの監視システムです。高い拡張性と柔軟なクエリ言語(PromQL)を備えており、複雑な監視要件にも対応できます。
Prometheusのインストール手順
以下の手順でPrometheusをインストールします。
- Prometheusのダウンロード
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz最新バージョンは公式ダウンロードページから確認してください。
- アーカイブの展開
tar xvfz prometheus-2.47.0.linux-amd64.tar.gz - ディレクトリの移動
cd prometheus-2.47.0.linux-amd64 - バイナリファイルの確認
ls -l以下のファイルが表示されることを確認します。
prometheus:メインサーバーpromtool:設定ファイルの検証ツールprometheus.yml:設定ファイルconsoles/:Web UI用のテンプレートconsole_libraries/:テンプレートライブラリ
Prometheusの設定ファイル解説
Prometheusの動作はprometheus.ymlファイルで制御されます。以下は基本的な設定例です。
global:
scrape_interval: 15s # メトリクス収集の間隔
evaluation_interval: 15s # ルール評価の間隔
scrape_configs:
- job_name: 'prometheus' # 監視対象のジョブ名
static_configs:
- targets: ['localhost:9090'] # 監視対象のエンドポイント
主な設定項目は以下の通りです。
| 設定項目 | 説明 | デフォルト値 |
|---|---|---|
global.scrape_interval | メトリクス収集の間隔 | 15秒 |
global.evaluation_interval | アラートルールの評価間隔 | 15秒 |
scrape_configs | 監視対象の設定 | なし |
job_name | 監視ジョブの名前 | 必須 |
targets | 監視対象のエンドポイント(IP:ポート) | localhost:9090 |
この設定では、Prometheus自身のメトリクスをlocalhost:9090から15秒ごとに収集します。実際の運用では、Node Exporterや他の監視対象を追加します。
Prometheusの起動と動作確認
Prometheusを起動する前に、設定ファイルの検証を行います。
./promtool check config prometheus.ymlエラーがなければ、以下のコマンドでPrometheusを起動します。
./prometheus --config.file=prometheus.yml --web.listen-address=":9090" &または、systemdサービスとして登録することを推奨します。以下はsystemdサービスファイルの例です。
sudo tee /etc/systemd/system/prometheus.service <サービスを有効化し、起動します。
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus動作確認は、Webブラウザでhttp://<サーバーIP>:9090にアクセスします。PrometheusのWeb UIが表示されれば成功です。
Node Exporterの導入でLinuxサーバーのメトリクス収集
Node Exporterは、Linuxサーバーのシステムメトリクス(CPU、メモリ、ディスク、ネットワークなど)を収集するためのエージェントです。PrometheusがNode Exporterからメトリクスを取得することで、サーバーの状態を詳細に監視できます。
Node Exporter…
- Node Exporterのダウンロード
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz - アーカイブの展開
tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz - バイナリファイルの移動
cd node_exporter-1.6.1.linux-amd64 sudo cp node_exporter /usr/local/bin/ - Node Exporterの起動
sudo /usr/local/bin/node_exporter --web.listen-address=":9100" &
systemdサービスとして登録する場合は、以下のファイルを作成します。
sudo tee /etc/systemd/system/node_exporter.service <サービスを有効化し、起動します。
sudo useradd -rs /bin/false node_exporter
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporterPrometheusからN…
Node Exporterが起動したら、Prometheusの設定ファイルprometheus.ymlにNode Exporterを追加します。
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: [':9100']
設定ファイルを更新したら、Prometheusを再起動します。
sudo systemctl restart prometheusPrometheusのWeb UI(http://)にアクセスし、node_exporterジョブのステータスがUPになっていることを確認します。
Grafanaの導入とPrometheusとの連携
Grafanaは、時系列データを可視化するためのオープンソースのダッシュボードツールです。Prometheusと連携することで、リアルタイムなメトリクス監視やアラート通知をグラフィカルに表示できます。
Grafanaのインストール手順
以下の手順でGrafanaをインストールします。
- Grafanaのリポジトリ追加
sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list - パッケージリストの更新とGrafanaのインストール
sudo apt-get update sudo apt-get install grafana - Grafanaの起動
sudo systemctl daemon-reload sudo systemctl start grafana-server sudo systemctl enable grafana-server
GrafanaのWeb UIにアクセスするには、http://にアクセスします。初期ログインは以下の通りです。
- ユーザー名:
admin - パスワード:
admin
初回ログイン時にパスワードの変更が求められます。
Grafanaの初期設定とPrometheusデータソース追加
Grafanaにログインしたら、以下の手順でPrometheusをデータソースとして追加します。
- データソースの追加
- 左側メニューの
Configuration>Data Sourcesをクリックします。 Add data sourceをクリックし、Prometheusを選択します。
- 左側メニューの
- Prometheusの接続設定
Name:任意の名前(例:Prometheus-Server)URL:http://:9090 Access:Server (default)を選択Scrape interval:15s(Prometheusの設定に合わせる)
- 保存とテスト
Save & Testをクリックします。- 接続が成功すれば
Data source connected and labels foundと表示されます。
Grafanaダッシュボードの作成とカスタマイズ
Grafanaには、すでに多くのテンプレートダッシュボードが用意されています。Node Exporter用のダッシュボードをインポートする手順を以下に示します。
- ダッシュボードのインポート
- 左側メニューの
Dashboards>Importをクリックします。 Import via grafana.comに1860と入力し、Loadをクリックします。- 以下の設定を行います。
Name:任意の名前(例:Node Exporter Full)Prometheus:先ほど追加したデータソースを選択
Importをクリックします。
- 左側メニューの
- ダッシュボードの確認
- ダッシュボードが表示され、CPU、メモリ、ディスク、ネットワークなどのメトリクスがグラフィカルに表示されます。
ダッシュボードは自由にカスタマイズできます。例えば、特定のメトリクスを強調表示したり、アラートを設定したりすることが可能です。
監視対象のカスタマイズとアラート設定
PrometheusとGrafanaを活用することで、監視対象やアラートルールを柔軟にカスタマイズできます。ここでは、具体的な設定方法を解説します。
監視対象の追加
監視対象を追加するには、Prometheusの設定ファイルprometheus.ymlに新しいscrape_configsを追加します。例えば、複数のサーバーを監視する場合は以下のように設定します。
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets:
- 'server1:9100'
- 'server2:9100'
- 'server3:9100'
設定を反映させるには、Prometheusを再起動します。
sudo systemctl restart prometheusPrometheusのWeb UI(http://)で、すべてのターゲットがUP状態であることを確認します。
アラートルールの設定
Prometheusでは、特定の条件が発生した際にアラートを発報するルールを設定できます。アラートルールはrules.ymlファイルに定義し、Prometheusの設定ファイルから読み込みます。
以下は、CPU使用率が90%を超えた場合にアラートを発報するルールの例です。
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: (100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)) > 90
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
description: "CPU usage is {{ $value }}% on {{ $labels.instance }}"
このルールを有効にするには、Prometheusの設定ファイルprometheus.ymlに以下を追加します。
rule_files:
- "rules.yml"
設定を反映させるには、Prometheusを再起動します。
sudo systemctl restart prometheusアラートはPrometheusのWeb UI(http://)で確認できます。また、Grafanaと連携することで、アラートをメールやSlackなどに通知することも可能です。
Grafanaでのアラート設定
Grafanaでもアラートを設定できます。以下の手順でGrafanaのアラートを有効にします。
- アラートチャンネルの追加
- 左側メニューの
Alerting>Notification policiesをクリックします。 Add contact pointをクリックし、通知方法(メール、Slack、Webhookなど)を選択します。
- 左側メニューの
- ダッシュボードへのアラート追加
- ダッシュボード編集画面を開きます。
- アラートを設定したいパネルを選択し、
Editをクリックします。 Alertタブを開き、Create Alertをクリックします。- アラート名、条件、通知先を設定します。
Grafanaのアラートは、Prometheusのアラートルールと連携することで、より柔軟な通知体制を構築できます。
トラブルシューティング:よくあるエラーと解決策
PrometheusとGrafanaを導入する際に発生しやすいエラーとその解決策をまとめます。
Prometheus関連の…
| エラー内容 | 原因 | 解決策 |
|---|---|---|
Get "http://localhost:9100/metrics": dial tcp 127.0.0.1:9100: connect: connection refused | Node Exporterが起動していないか、ポートが開放されていない | Node Exporterを起動し、ファイアウォールでポート9100を開放 |
level=error ts=2023-10-01T12:34:56.789Z caller=main.go:337 msg="Error loading config" | 設定ファイルprometheus.ymlの構文エラー | promtool check config prometheus.ymlで構文を検証し、修正 |
scrape_interval too low, must be greater than 1s | scrape_intervalが1秒未満に設定されている | scrape_intervalを1秒以上に設定 |
Grafana関連のエラー
| エラー内容 | 原因 | 解決策 |
|---|---|---|
Data source connected but returned no data | Prometheusとの接続は成功したが、データが取得できない | PrometheusのtargetsがUP状態か確認し、データソース設定を再確認 |
Plugin health check failed | Grafanaのプラグインが正常に動作しない | Grafanaを再起動し、必要に応じてプラグインを再インストール |
一般的なトラブルシューティ…
- ログの確認
PrometheusとGrafanaのログは以下の場所に保存されます。
- Prometheus:
/var/log/prometheus.log(設定により異なる) - Grafana:
/var/log/grafana/grafana.log
journalctlコマンドでリアルタイムにログを確認できます。sudo journalctl -u prometheus -f sudo journalctl -u grafana-server -f - Prometheus:
- ポートの確認
PrometheusとGrafanaが正しいポートでリッスンしているか確認します。
sudo netstat -tulnp | grep -E '9090|9100|3000' - ファイアウォールの確認
ファイアウォールやセキュリティグループで必要なポートが開放されているか確認します。
sudo ufw status # Ubuntu sudo firewall-cmd --list-all # CentOS/RHEL - バージョンの確認
使用しているバージョンに問題がないか確認します。
prometheus --version grafana-server --version node_exporter --version
これらの手順でほとんどの問題は解決できます。それでも解決しない場合は、公式ドキュメントやコミュニティフォーラムを参照してください。
まとめ:監視システムの運用と今後の展望
PrometheusとGrafanaを活用したサーバー監視システムの導入は、ITインフラの信頼性とパフォーマンスを飛躍的に向上させます。本記事では、Linuxサーバーを対象とした監視システムの構築手順を、具体
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。




