Prometheus¶
はじめに¶
Prometheusはネットワークを介したシステム監視ツールです。
監視対象のステータスを収集し、保存、検索、可視化、通知の機能を持ちます。
収集には、対象機器にエージェントをインストールして監視データを取得する方法、SNMPを利用して監視データを取得する方法、監視対象に追加することはせずにICMP pingやTCPコネクションを使用して監視データを取得する方法、Pushgatewayを介して監視データを受け取る方法などがあります。
保存には、Prometheusが内部に保持する時系列データベースを使用します。
検索には、Prometheus専用の問い合わせ言語 PromQL を使用します。
可視化については、Prometheus独自のWeb UIがありますが、Grafana を可視化のフロントエンドとして利用するケースが多いようです。
経緯¶
2012年に Soundcloud社のオープンソースプロジェクトとして開発開始、2015年に公開され、以降特定の企業に属さず開発が継続しています。2024年にメジャーバージョンアップがありました。
リリース履歴¶
https://github.com/prometheus/prometheus
抜粋(およそ1年毎)
| ver | date |
|---|---|
| 3.13.0 | 2026-07-01 |
| 3.8.0 | 2025-11-28 |
| 3.0.0 | 2024-11-14 |
| 2.45.3 | 2024-01-24 |
| 2.48.0 | 2023-11-16 |
| 2.40.0 | 2022-11-09 |
| 2.32.0 | 2021-12-09 |
| 2.23.0 | 2020-11-26 |
| 2.14.0 | 2019-11-11 |
| 2.5.0 | 2018-11-06 |
| 2.0.0 | 2017-11-08 |
| 1.0.0 | 2016-07-18 |
| 0.11.0 | 2015-02-23 |
3.0.0¶
- ユーザーインタフェースの刷新
- OpenTelemetry対応の進捗(OTLP)
- UTF-8対応
セットアップ¶
Ubuntu Linux 24.04¶
aptパッケージ¶
Ubuntu 24.04の公式リポジトリから prometheus-2.45.3 が提供されています。
~$ sudo apt install prometheus :
- prometheusユーザー・グループが作成されます(uid=110, gid=110)
- systemctl に、prometheus.serviceとprometheus-node-exporter.serviceが追加され、自動起動設定・起動されます
- 設定ファイルは、/etc/prometheus/prometheus.yml
- 9090ポートで Web UIにアクセス
- 自身の各種メトリクスが監視・保存・検索できます
監視設定¶
死活監視(外部から)¶
Prometheusのエージェント(exporter)を監視対象機器に入れずに、ICMP pingやTCPポートの状況を監視します。
Prometheusサーバー側に、Blackbox exporter をインストールし、icmpモジュールまたはtcp_connectモジュールを使用します。
BlackBox exporter¶
blackbox.yml に、監視手段(プロトコル)を定義します。aptでインストールするとデフォルト設定が記述されています。
- http_2xx HTTPステータスコードをチェック
- http_post_2xx 同上
- tcp_connect TCP接続をチェック
- pop3s_banner
- grpc
- grpc_plain
- ssh_banner
- irc_banner
- icmp
- icmp_ttl5
ICMPによる監視¶
modules:
ping_check:
prober: icmp
timeout: 3s
icmp:
preferred_ip_protocol: "ipv4"
prometheus.yml に、監視対象を定義します。
scrape_configs:
- job_name: "blackbox-icmp"
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 192.168.63.131 # 監視対象PCのIPアドレス
- 192.168.63.132
- 192.168.63.133
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115 # Blackbox exporter実行マシン
最近のLinuxは、ICMPのソケット受信を開くのに特別な権限を必要とします。
- prometheusアカウントのグループIDを確認(/etc/group)
- /etc/sysctl.d/99-allow-ping.conf を新規作成、以下を記述(prometheusアカウントのグループIDが110の場合)
net.ipv4.ping_group_range = 110 110
設定を反映します。
$ sudo sysctl --system
prometheus-blackbox-exporterサービスおよびprometheusサービスを再起動します。
Prometheus Web UIから確認¶
- Prometheusサーバーの9090ポートにWebブラウザで接続し、[Status] > [Targets] をクリック
- job名に定義した blackbox-icmp の結果が表示
Grafana から確認¶
- Grafana 上で、PrometheusへのData Sourceを作成
[Connections] > [Add new connection] で 一覧から [Prometheus]を選択 - ダッシュボードにパネルを追加
例)パネルの種類にState timeline を選択、Queriesの定義でData sourceを[prometheus]選択、Metricに[probe_success]
Color schemeは[Single color]として、Value mappingsで、0 → DOWN 赤、1 → UP 緑を設定