prometheus について
prometheusは、DevOps/SRE環境でインフラ、アプリケーション、サービスを監視するためのスキルです。HTTPによるメトリクス収集、PromQLクエリ、アラートルール、時系列データの保持、複数インスタンスのフェデレーションを扱います。
主な機能
- 01HTTP経由のメトリクス収集
- 02PromQLによる時系列データの検索
- 03YAMLアラートルールの設定
- 04データ保存と保持期間の設定
- 05複数Prometheusインスタンスの集約
活用シーン
- 01サーバーやアプリのメトリクス監視
- 02CPU使用率などの稼働データ検索
- 03高CPU使用率やエラー率へのアラート設定
- 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 が設定され、正しく渡されていることを確認してください。
具体的な使用例
- ローカル 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 秒ごとにメトリクスが収集され、サーバーが停止した場合にアラートを送信できます。 - 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