mcpField
P
prometheus

prometheus

github.com/alphaonedevクラウド・DevOps51 回インストール
リポジトリ

prometheus について

prometheusは、DevOps/SRE環境でインフラ、アプリケーション、サービスを監視するためのスキルです。HTTPによるメトリクス収集、PromQLクエリ、アラートルール、時系列データの保持、複数インスタンスのフェデレーションを扱います。

主な機能

  1. 01HTTP経由のメトリクス収集
  2. 02PromQLによる時系列データの検索
  3. 03YAMLアラートルールの設定
  4. 04データ保存と保持期間の設定
  5. 05複数Prometheusインスタンスの集約

活用シーン

  1. 01サーバーやアプリのメトリクス監視
  2. 02CPU使用率などの稼働データ検索
  3. 03高CPU使用率やエラー率へのアラート設定
  4. 04複数インスタンスのメトリクス集約

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill prometheus

インストール後、Claude Code で/prometheusを入力して読み込まれたか確認します。

詳細

prometheus

目的

Prometheus は、さまざまなターゲットのメトリクスを監視し、アラートを通知するために使用します。HTTP プルで時系列データを収集して保存し、クエリによってアラートを発動できます。

使用する場面

DevOps/SRE 環境でインフラストラクチャ、アプリケーション、サービスを監視する際に、このスキルを使用します。リアルタイムのメトリクス収集、異常検知、スケーリングの判断などに適用できます。たとえば、Kubernetes クラスターのサーバーの状態を追跡したり、マイクロサービスのエラー率が高い場合にアラートを通知したりできます。

主な機能

  • メトリクスの収集:設定可能なジョブを使用して HTTP エンドポイントをスクレイプします。YAML 設定でターゲットを指定します。例:scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100']。
  • クエリ:データの取得には PromQL を使用します。例:rate(node_cpu_seconds_total{mode="idle"}[5m]) で CPU 使用率をクエリします。
  • アラート:YAML ファイルでルールを定義してアラートを発動します。例:groups: - name: example rules: - alert: HighCPU usage: (avg by(instance) (rate(node_cpu_seconds_total{mode="system"}[5m])) > 0.8) for: 1m。
  • ストレージと保持期間:設定可能な保持期間で時系列データを処理します。--storage.tsdb.retention.time=15d フラグで設定します。
  • フェデレーション:複数の Prometheus インスタンスからメトリクスを集約し、大規模な環境に対応します。

使用パターン

ターゲットを監視するには、まずスクレイプジョブを含む YAML 設定ファイル(例:prometheus.yml)を作成します。その設定ファイルを指定して Prometheus サーバーを実行します。クエリには、組み込み API を使用するか、Grafana などのツールと連携します。アラートルールは早い段階で必ず設定してください。コンテナーで使用する場合は、設定ボリュームをマウントし、Web ポート(デフォルトは 9090)を公開します。本番環境では、--web.external-url を設定し、$PROMETHEUS_AUTH_USER や $PROMETHEUS_AUTH_PASS などの環境変数を使ってベーシック認証を設定してください。

よく使うコマンド/API

  • CLI コマンド:prometheus --config.file=prometheus.yml --web.listen-address=":9090" --storage.tsdb.path="/prometheus" でサーバーを起動します。curl -X POST http://localhost:9090/-/reload で設定を動的に再読み込みします。ルールのテストには promtool を使用します:promtool check rules prometheus.rules.yml。
  • API エンドポイント:GET /api/v1/query にクエリパラメーターを指定してメトリクスをクエリします。例:curl "http://localhost:9090/api/v1/query?query=up"。範囲クエリには GET /api/v1/query_range?query=up&start=1630000000&end=1630003600&step=15s を使用します。認証が必要な場合は、Authorization: Bearer $PROMETHEUS_API_KEY などのヘッダーを含めます。
  • コードスニペット:
    // Simple Go client to query Prometheus
    client, err := prometheus.NewClient(http.Client{}, "http://localhost:9090")
    result, err := client.Query(context.Background(), "up", time.Now())
    
    # Python example using prometheus-api-client
    from prometheus_api_client import MetricsList
    metrics = MetricsList('http://localhost:9090/api/v1/query?query=up')
    print(metrics)
    
  • 設定形式:メイン設定には YAML を使用します。設定例:global: scrape_interval: 15s。アラートルールには、「主な機能」に示すように YAML 配列を使用します。

連携に関する注意事項

設定にスクレイプジョブを追加して、Prometheus をエクスポーター(システムメトリクス用の Node Exporter など)と連携させます。可視化には、URL(例:http://prometheus:9090)と環境変数 $GRAFANA_PROM_DS_KEY による認証を指定して、Grafana に Prometheus データソースを追加します。フェデレーションを行うには、YAML でリモート書き込みを設定します:remote_write: - url: 'http://federate-prometheus:9090/api/v1/write'。Kubernetes と併用する場合は、Helm チャートでデプロイし、ラベル付きの ServiceMonitor を設定します。セキュリティを確保するため、API キーは環境変数で扱い、たとえば $PROMETHEUS_API_KEY としてエクスポートしてください。

エラー処理

よくあるエラーには、設定構文の問題(promtool check config prometheus.yml で確認)、スクレイプの失敗(設定内のターゲットとタイムアウトを確認)、クエリエラー(不正なクエリに対する 422 などの API 応答コードを確認)があります。デバッグするには、--log.level=debug でロギングを有効にし、"error scraping target" のようなメッセージがないかログを確認します。API 呼び出しでは、HTTP エラーを処理します。ステータスが 500 の場合は、指数バックオフで再試行します。次のようなコードを使用します:

if err != nil && strings.Contains(err.Error(), "context deadline exceeded") { log.Fatal("Scrape timeout; increase timeout in config") }

まず /api/v1/query エンドポイントで PromQL クエリを検証してください。認証に失敗する場合(例:401)は、環境変数 $PROMETHEUS_AUTH_TOKEN が設定され、正しく渡されていることを確認してください。

具体的な使用例

  1. ローカル Web サーバーを監視する:次の内容で prometheus.yml を作成します:scrape_configs: - job_name: 'web' metrics_path: '/metrics' static_configs: - targets: ['localhost:8080']。Prometheus を起動します:prometheus --config.file=prometheus.yml。稼働状況をクエリします:curl "http://localhost:9090/api/v1/query?query=up{job='web'}"。これにより、15 秒ごとにメトリクスが収集され、サーバーが停止した場合にアラートを送信できます。
  2. CPU アラートを設定する:ルールファイルを定義します:groups: - name: instance rules: - alert: HighCPU expr: avg by(instance) (rate(node_cpu_seconds_total{mode="system"}[5m])) > 0.9 for: 2m。prometheus.yml に rule_files: ["alert.rules.yml"] を追加して、設定から読み込みます。prometheus --config.file=prometheus.yml を実行します。次の内容を追加して Alertmanager と連携します:alerting: alertmanagers: - static_configs: - targets: ['localhost:9093']。これにより、高 CPU 使用率のアラートが発生し、通知が送信されます。

グラフ上の関連性

  • クラスターに属する:devops-sre
  • タグ:monitoring、metrics、alerting
  • 関連スキル:(タグなどを介して)可視化用の grafana、通知用の alertmanager

コメント