プロジェクト

全般

プロフィール

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 緑 を設定


約2ヶ月前に更新