PrometheusとGrafanaで始めるLinux監視入門

Linuxサーバーのリソース監視とパフォーマンス可視化を実現するなら、PrometheusとGrafanaの組み合わせが最適解です。この記事では、実際の運用現場で即戦力となる監視環境をゼロから構築する具体的な手順を解説します。
目次
Linux監視の基礎知識
なぜPrometheusと…
監視対象の選定とメトリクス設計
Prometheusの導入…
サーバー要件とインストール手順
基本設定と起動確認
Exporterを活用した…
Grafanaの導入とダッ…
Grafanaのインストー…
Prometheusデータ…
実践的なダッシュボード設計
運用に役立つ高度な設定
アラートルールの設定と通知
長期データ保存のためのスト…
セキュリティ設定のベストプ…
まとめと次のステップ
—Linux監視の基礎知識
なぜPrometheusと…
Linuxサーバーの監視環境を構築する際、PrometheusとGrafanaの組み合わせは圧倒的な柔軟性と拡張性を提供します。Prometheusは時系列データに特化した監視システムで、Grafanaはそのデータを直感的なダッシュボードで可視化するツールです。この組み合わせにより、システム管理者はリアルタイムのパフォーマンス監視から長期的なトレンド分析まで、一貫した監視フローを実現できます。
具体的なメリットとして、以下の点が挙げられます。
- 軽量で高性能:PrometheusはGo言語で実装されており、単一のバイナリで動作します。メモリ使用量が少なく、高負荷環境でも安定稼働します。
- 多言語対応のExporter:Node Exporterをはじめとする多数のExporterが提供されており、Linuxシステムのあらゆるメトリクスを収集できます。
- 強力なクエリ言語:PromQLを使用して、複雑な条件のメトリクス集計やアラート条件を柔軟に定義できます。
- 直感的な可視化:Grafanaの豊富なグラフ表現により、監視データをわかりやすく表示できます。
- アラート機能:Prometheusのアラートマネージャーと連携して、異常発生時に即座に通知を受け取れます。
実際の運用現場では、PrometheusとGrafanaの組み合わせがデファクトスタンダードとなっており、多くの企業で採用されています。例えば、GitLabやKubernetesなどの大規模システムでもこの組み合わせが活用されています。
監視対象の選定とメトリクス設計
Linuxサーバーの監視対象を選定する際は、システムの用途や重要度に応じて優先順位を付けることが重要です。一般的なLinuxサーバーで監視すべき主要なメトリクスは以下の通りです。
| カテゴリ | 監視項目 | 重要度 | 説明 |
|---|---|---|---|
| システムリソース | CPU使用率 | 高 | システム全体の負荷状況を示す。1分間の平均値を監視する。 |
| メモリ使用率 | 高 | 物理メモリとスワップの使用状況を監視。メモリリークの検出に有効。 | |
| ディスクI/O | 中 | ディスクの読み書き速度と待ち時間を監視。ボトルネックの特定に役立つ。 | |
| ネットワークトラフィック | 中 | 送受信データ量とエラー率を監視。帯域幅の逼迫や不正アクセスの検出に有効。 | |
| プロセス | プロセス数 | 中 | 実行中のプロセス数を監視。リソース枯渇の予兆を検出。 |
| 特定プロセスのCPU/メモリ使用率 | 高 | 重要なサービスプロセスのリソース使用状況を個別に監視。 | |
| プロセスの応答時間 | 高 | サービスのレスポンスタイムを監視。パフォーマンス低下の早期発見に有効。 | |
| システムステータス | システムログエラー | 高 | syslogやjournalctlからエラーメッセージを抽出し監視。 |
| システム時刻の同期状態 | 中 | NTPサービスの状態を監視し、時刻同期の異常を検出。 |
メトリクス設計においては、以下のポイントに注意してください。
- 粒度の設定:監視間隔は用途に応じて調整します。一般的なシステムでは15秒から1分間隔が推奨されます。
- 保持期間の決定:短期的なトラブルシューティングには直近1週間のデータが、長期的なトレンド分析には1年以上のデータが必要です。
- アラート閾値の設定:CPU使用率90%以上でアラートを発報するなど、適切な閾値を設定します。
- ラベルの活用:Prometheusのラベル機能を活用して、サーバー名、サービス名、環境などでメトリクスを分類します。
具体的な設計例として、Webサーバーを監視する場合のメトリクス構成を紹介します。
- システムリソース:CPU、メモリ、ディスクI/O、ネットワークトラフィック
- Webサーバープロセス:Nginx/Apacheのプロセス数、リクエスト処理数、レスポンスタイム
- アプリケーション:アプリケーションログのエラー数、データベース接続数
- セキュリティ:不正なアクセス試行数、ファイアウォール拒否数
Prometheusの導入…
サーバー要件とインストール手順
Prometheusを導入する際のサーバー要件は、監視対象の規模によって異なります。一般的な目安は以下の通りです。
| 監視対象数 | CPUコア | メモリ | ストレージ | 推奨OS |
|---|---|---|---|---|
| 10台以下 | 2コア以上 | 4GB以上 | 50GB以上(SSD推奨) | Ubuntu 22.04 LTS / CentOS 7/8 |
| 10〜100台 | 4コア以上 | 8GB以上 | 100GB以上(SSD推奨) | Ubuntu 22.04 LTS / RHEL 8 |
| 100台以上 | 8コア以上 | 16GB以上 | 200GB以上(NVMe SSD推奨) | Ubuntu 22.04 LTS / RHEL 9 |
Prometheusのインストール手順は以下の通りです。本記事ではUbuntu 22.04 LTSを例に解説します。
- Prometheusユーザーの作成
sudo useradd --no-create-home --shell /bin/false prometheus sudo mkdir /etc/prometheus sudo mkdir /var/lib/prometheus sudo chown prometheus:prometheus /etc/prometheus sudo chown prometheus:prometheus /var/lib/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 sudo cp prometheus-2.47.0.linux-amd64/prometheus /usr/local/bin/ sudo cp prometheus-2.47.0.linux-amd64/promtool /usr/local/bin/ sudo chown prometheus:prometheus /usr/local/bin/prometheus sudo chown prometheus:prometheus /usr/local/bin/promtool - 設定ファイルの作成
Prometheusの設定ファイル(prometheus.yml)を作成します。
sudo nano /etc/prometheus/prometheus.yml以下は基本的な設定例です。
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - サービスファイルの作成
Prometheusをサービスとして登録します。
sudo nano /etc/systemd/system/prometheus.service以下の内容を記述します。
[Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries Restart=always [Install] WantedBy=multi-user.target - サービスの起動と有効化
sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus - ファイアウォールの設定
PrometheusのWebインターフェース(ポート9090)へのアクセスを許可します。
sudo ufw allow 9090/tcp - 動作確認
ブラウザで http://<サーバーIP>:9090 にアクセスし、PrometheusのWebインターフェースが表示されることを確認します。
インストールが完了したら、PrometheusのWebインターフェースで以下の点を確認してください。
- Status → Targets:監視対象が正常に登録されていること
- Status → Configuration:設定ファイルが正しく読み込まれていること
- Status → Runtime & Build Information:バージョン情報が正しく表示されること
基本設定と起動確認
Prometheusの基本設定には、以下の重要なパラメータがあります。
| パラメータ | 説明 | 推奨値 |
|---|---|---|
| global.scrape_interval | メトリクス収集の間隔 | 15s(デフォルト) |
| global.evaluation_interval | ルール評価の間隔 | 15s(デフォルト) |
| global.scrape_timeout | メトリクス収集のタイムアウト | 10s |
| storage.tsdb.retention.time | データ保持期間 | 30d(30日間) |
| storage.tsdb.path | 時系列データベースの保存先 | /var/lib/prometheus |
| web.listen-address | Webインターフェースのリスニングアドレス | :9090 |
これらのパラメータは、コマンドライン引数または設定ファイルで指定できます。例えば、コマンドラインで指定する場合は以下のようになります。
prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.retention.time=30d \
--web.listen-address=":9090"Prometheusの起動確認方法は以下の通りです。
- プロセスの確認
ps aux | grep prometheusPrometheusのプロセスが実行されていることを確認します。
- ログの確認
journalctl -u prometheus -fPrometheusのログをリアルタイムで確認し、エラーが発生していないことを確認します。
- Webインターフェースの確認
ブラウザで http://<サーバーIP>:9090 にアクセスし、PrometheusのWebインターフェースが正常に動作していることを確認します。
- メトリクスの取得確認
PrometheusのWebインターフェースで “Graph” タブを開き、以下のクエリを実行してメトリクスが取得できることを確認します。
up{job="prometheus"}このクエリは、Prometheus自身のステータスを示すメトリクスで、値が1であれば正常に動作しています。
Prometheusの基本的な動作確認が完了したら、次は監視対象を追加する設定を行います。
Exporterを活用した…
Prometheusは直接Linuxシステムのメトリクスを収集する機能を持っていません。そのため、Prometheus Exporterと呼ばれるエージェントソフトウェアを使用して、システムメトリクスを収集します。Linuxシステムの監視に最適なExporterはNode Exporterです。
Node Exporterの特徴は以下の通りです。
- LinuxシステムのCPU、メモリ、ディスク、ネットワークなどの主要なメトリクスを収集
- 軽量で動作負荷が少ない
- 多数のメトリクスを提供(300以上のメトリクス)
- 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 sudo cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/ sudo chown root:root /usr/local/bin/node_exporter - Node Exporterのサービスファイル作成
sudo nano /etc/systemd/system/node_exporter.service以下の内容を記述します。
[Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=root Group=root Type=simple ExecStart=/usr/local/bin/node_exporter Restart=always [Install] WantedBy=multi-user.target - Node Exporterの起動と有効化
sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter - ファイアウォールの設定
Node Exporterのポート(9100)へのアクセスを許可します。
sudo ufw allow 9100/tcp - 動作確認
ブラウザで http://<サーバーIP>:9100/metrics にアクセスし、メトリクスが取得できることを確認します。
Node Exporterが正常に動作したら、Prometheusの設定ファイルに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インターフェースで “Targets” を確認し、node_exporterのステータスが “UP” になっていることを確認します。
Node Exporterで収集できる主要なメトリクスは以下の通りです。
| カテゴリ | メトリクス名(例) | 説明 |
|---|---|---|
| CPU | node_cpu_seconds_total | CPUの使用時間(秒単位) |
| node_cpu_guest_seconds_total | ゲストOSのCPU使用時間 | |
| node_load1 | 1分間のロードアベレージ | |
| node_load5 | 5分間のロードアベレージ | |
| node_load15 | 15分間のロードアベレージ | |
| メモリ | node_memory_MemTotal_bytes | 総メモリ量(バイト) |
| node_memory_MemFree_bytes | ||
| node_memory_Buffers_bytes | バッファメモリ量 | |
| node_memory_Cached_bytes | キャッシュメモリ量 | |
| node_memory_SwapTotal_bytes | 総スワップ量 | |
| ディスク | node_disk_io_time_seconds_total | ディスクI/O時間(秒単位) |
| node_disk_read_bytes_total | ディスク読み込みバイト数 | |
| node_disk_written_bytes_total | ディスク書き込みバイト数 | |
| node_filesystem_free_bytes | ファイルシステムの空き容量 | |
| ネットワーク | node_network_receive_bytes_total | ネットワーク受信バイト数 |
| node_network_transmit_bytes_total | ネットワーク送信バイト数 | |
| node_network_receive_errs_total | ネットワーク受信エラー数 | |
| node_network_transmit_drop_total | ネットワーク送信ドロップ数 |
Grafanaの導入とダッ…
Grafanaのインストー…
Grafanaは、Prometheusを含む様々なデータソースからのデータを可視化するためのオープンソースツールです。Grafanaを使用することで、監視データを直感的なダッシュボードで表示し、異常検知やパフォーマンス分析を効率的に行うことができます。
Grafanaの主な特徴は以下の通りです。
- 複数のデータソースに対応(Prometheus、InfluxDB、MySQL、Elasticsearchなど)
- 豊富なグラフ表現(時系列、ゲージ、ヒートマップ、表形式など)
- ダッシュボードの共有と再利用が容易
- アラート機能による異常検知
- コミュニティによる豊富なダッシュボードテンプレート
Grafanaのインストール手順は以下の通りです。本記事ではUbuntu 22.04 LTSを例に解説します。
- 依存パッケージのインストール
sudo apt-get update sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget - Grafanaリポジトリの追加
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 -y grafana - Grafanaサービスの起動と有効化
sudo systemctl daemon-reload sudo systemctl start grafana-server sudo systemctl enable grafana-server - ファイアウォールの設定
GrafanaのWebインターフェース(ポート3000)へのアクセスを許可します。
sudo ufw allow 3000/tcp - 動作確認
ブラウザで http://<サーバーIP>:3000 にアクセスし、Grafanaのログイン画面が表示されることを確認します。
初期ユーザー名は “admin”、初期パスワードは “admin” です。ログイン後、パスワードの変更を求められますので、新しいパスワードを設定してください。
Grafanaの初期設定が完了したら、以下の基本設定を行います。
- データソースの追加
GrafanaにPrometheusをデータソースとして追加します。
- 左側メニューの “Configuration” → “Data Sources” を選択します。
- “Add data source” ボタンをクリックします。
- データソースの種類として “Prometheus” を選択します。
- 以下の設定を行います。
- “Save & Test” ボタンをクリックして、接続が成功することを確認します。
項目 値 Name Prometheus URL http://localhost:9090 Access Server (default) - ダッシュボードの作成
新しいダッシュボードを作成します。
- 左側メニューの “Create” → “Dashboard” を選択します。
- “Add new panel” ボタンをクリックします。
- クエリエディタで、以下のPromQLクエリを入力します。
- グラフの種類を “Gauge” に変更します。
- パネルのタイトルを “CPU Usage” に設定します。
- “Apply” ボタンをクリックして、ダッシュボードにパネルを追加します。
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
Prometheusデータ…
GrafanaとPrometheusを接続することで、Prometheusに蓄積された監視データをGrafanaで可視化できます。接続手順は以下の通りです。
- Grafanaへのログイン
GrafanaのWebインターフェースにログインします。
- データソースの設定
以下の手順でPrometheusをデータソースとして追加します。
- 左側メニューの “Configuration” → “Data Sources” を選択します。
- “Add data source” ボタンをクリックします。
- データソースの種類として “Prometheus” を選択します。
- 以下の設定を行います。
- “Save & Test” ボタンをクリックして、接続が成功することを確認します。
- 接続に成功すると、”Data source connected and labels found.” というメッセージが表示されます。
項目 値 Name Prometheus URL http:// :9090 Access Server (default) Basic Auth 無効 Scrape interval 15s - データソースの確認
データソースが正しく設定されていることを確認します。
- 左側メニューの “Explore” を選択します。
- データソースとして “Prometheus” を選択します。
- 以下のクエリを実行して、メトリクスが取得できることを確認します。
- クエリの実行結果が表示され、値が1であれば正常に動作しています。
up{job="node_exporter"}
PrometheusとGrafanaの接続が完了したら、以下のような基本的なダッシュボードを作成できます。
- システムリソース(CPU、メモリ、ディスク、ネットワーク)の概要
- プロセスごとのリソース使用状況
- システムログのエラー監視
- ネットワークトラフィックの可視化
実践的なダッシュボード設計
実践的なダッシュボード
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。




