すべてのプロダクト
Search
ドキュメントセンター

Managed Service for Prometheus:Managed Service for Prometheus のルールを使用したアラートルールのコードとしての管理

最終更新日:Dec 12, 2025

Managed Service for Prometheus の promtool の ruleup コマンドは、PrometheusRule 設定ファイルを読み取り、検証し、管理します。ローカルディレクトリからルールファイルを読み込み、検証し、Managed Service for Prometheus インスタンスにアップロードします。

このソリューションは、以下の場合に適用されます。

  • Infrastructure as Code (IaC) を使用してアラートルールを管理したいユーザー。

  • このトピックは、CI パイプラインを設定してアラートルールを公開したいユーザーを対象としています。

事前準備

  1. promtool ツールのダウンロード

    curl -fsSL "https://o11y-addon-hangzhou-public.oss-cn-hangzhou.aliyuncs.com/share/promtool/install.sh" | bash
  2. ルールファイルのフォーマットの理解

    PrometheusRule ファイルは、次のフォーマットに従う必要があります。

    # 拡張フィールド、データソース設定 (必須)
    datasources:
      - type: aliyun_prometheus #
        instance: <prometheus-instance-id>
        regionId: <region-id>
    
    # ルールグループ
    groups:
      - name: <group-name>
        interval: <evaluation-interval>  # オプション、例: "30s"
        rules:
          - alert: <alert-name>
            expr: <promql-expression>
            for: <duration>  # オプション、例: "5m"
            labels:
              severity: <severity-level>  # 例: warning、critical、info
              # その他のラベル...
            annotations:
              summary: <summary-text>
              description: <description-text>
              # その他のアノテーション...

    データソースの設定

    • type:データソースのタイプを指定します。aliyun_prometheus のみがサポートされています。

    • instance:Managed Service for Prometheus インスタンスの ID を指定します。

    • regionId:Alibaba Cloud リージョン ID を指定します。例:cn-hangzhoucn-beijing

    ルールレベルのマッピング

    ルール内の labels.severity フィールドは、Managed Service for Prometheus のアラートルールの level フィールドにマッピングされます。マッピングは次のとおりです。

    • warningwarning

    • criticalcritical

    • infoinfo

    • その他の値 → warning (デフォルト)

注意事項

  1. セキュリティ

    • AccessKey ID や AccessKey Secret などの機密情報をコマンドラインに直接入力しないでください。

    • 環境変数または設定ファイルを使用して認証情報を管理してください。

    • ルールファイルに機密情報が含まれていないことを確認してください。

  2. データソースの設定

    • アップロードおよび削除操作は、ルールファイルで設定されているすべてのデータソースに影響します。

    • 操作エラーを防ぐために、データソースの設定が正しいことを確認してください。

  3. ルールの上書き

    • アップロード操作は、ターゲットデータソース内の同じ名前のルールグループを上書きします。

    • 削除操作は、指定されたルールグループ内のすべてのルールを削除します。

  4. ネットワーク要件

    • アップロードおよび削除操作には、Alibaba Cloud API へのアクセスが必要です。

    • 安定したネットワーク接続と必要なアクセス権限があることを確認してください。

  5. 同時操作

    • 同じルールグループに対して、同時にアップロードと削除を行わないでください。

    • 操作が完了したら、次の操作を開始する前に少し待機してください。

  6. 終了コード

    • 0:操作は成功しました。

    • 1:操作は失敗しました。これは、検証の失敗、アップロードの失敗、または削除の失敗が原因である可能性があります。

ベストプラクティス

ルールのアップロード

  1. ルールファイルの検証:ルールファイルを検証して、その整合性と Prometheus Query Language (PromQL) 式の構文をチェックします。

    promtool ruleup --dir /path/to/rules --check

    出力例 (検証成功):

    Found 1 rule file(s) in directory: /path/to/rules
    
    File: /path/to/rules/prometheus-rules.yml
    Type: prometheus
    Validation: OK

    出力例 (検証失敗)

    Found 1 rule file(s) in directory: /path/to/rules
    
    File: /path/to/rules/prometheus-rules.yml
    Type: prometheus
    Validation errors:
      - group "system_resources": rule "HighCPUUsage": invalid PromQL expression: syntax error
      - group "application_services": rule "HighHTTPErrorRate": missing 'for' duration

    検証が失敗した場合、コマンドは終了コード 1 で終了します。

  2. ルールのアップロード:ルールが検証された後、Managed Service for Prometheus にアップロードします。

    promtool ruleup --dir /path/to/rules --upload --access-key-id YOUR_ACCESS_KEY_ID --access-key-secret YOUR_ACCESS_KEY_SECRET --user-id YOUR_USER_ID

    対話型の確認:コマンドはアップロード設定を表示し、確認を求めます:

    === Upload Configuration ===
    User ID: 123456789
    Rule groups to upload: 5
      [1] system_resources (4 rules)
      [2] application_services (4 rules)
      [3] database (3 rules)
      [4] kubernetes (3 rules)
      [5] business_metrics (2 rules)
    Total rules to upload: 16
    Datasources: 2
      [1] Region: cn-hangzhou, Instance: rw-dfaa8e87409285b4b422b3c862ee
      [2] Region: cn-beijing, Instance: rw-abc123456789
    Workspace: will be automatically retrieved from instance
    
    Do you want to proceed with the upload? (yes/no): 

    yes または y を入力して続行します。それ以外の入力はアップロードをキャンセルします。

    アップロード結果の例:

    === Upload Result ===
    Total uploads: 10 (rule groups × datasources)
    Success: 10, Failed: 0
    
    Datasource [1]: Region=cn-hangzhou, Instance=rw-dfaa8e87409285b4b422b3c862ee
      Group: system_resources, Request ID: 12345678-1234-1234-1234-123456789abc
        Uploaded rules: 4
          - HighCPUUsage (ID: rule-001, Status: enabled, Level: warning)
          - HighMemoryUsage (ID: rule-002, Status: enabled, Level: warning)
          - HighDiskUsage (ID: rule-003, Status: enabled, Level: critical)
          - HighDiskIO (ID: rule-004, Status: enabled, Level: warning)
    
    Upload completed! 10 datasource(s) succeeded.

Managed Service for Prometheus からのルールの削除

指定されたルールグループを Managed Service for Prometheus インスタンスから削除できます。アップロード時に実行されるのと同じ検証が、削除前にも実行されます。

promtool ruleup \
  --dir /path/to/rules \
  --delete \
  --access-key-id YOUR_ACCESS_KEY_ID \
  --access-key-secret YOUR_ACCESS_KEY_SECRET \
  --user-id YOUR_USER_ID

対話型の確認:コマンドは削除設定を表示し、確認を求めます。

=== Delete Configuration ===
User ID: 123456789
Rule groups to delete: 5
  [1] system_resources
  [2] application_services
  [3] database
  [4] kubernetes
  [5] business_metrics
Datasources: 2
  [1] Region: cn-hangzhou, Instance: rw-dfaa8e87409285b4b422b3c862ee
  [2] Region: cn-beijing, Instance: rw-abc123456789

WARNING: This will delete all rules in the specified groups from the datasources!
Do you want to proceed with the deletion? (yes/no): 

削除結果の例:

=== Delete Result ===
Total deletions: 10 (rule groups × datasources)
Success: 10, Failed: 0

Datasource [1]: Region=cn-hangzhou, Instance=rw-dfaa8e87409285b4b422b3c862ee
  Group: system_resources deleted, Request ID: 12345678-1234-1234-1234-123456789abc
  All rules in group deleted successfully

Deletion completed! 10 deletion(s) succeeded.

ルールファイルの基本情報の表示

指定されたディレクトリ内のすべてのルールファイルの基本情報を表示できます。この情報には、ファイルタイプ、ルールグループの数、データソースの数が含まれます。

promtool ruleup --dir /path/to/rules

出力例:

Found 2 rule file(s) in directory: /path/to/rules

File: /path/to/rules/prometheus-rules.yml
Type: prometheus
  PrometheusRule: 5 group(s), 2 datasource(s)
  Total rules: 15

File: /path/to/rules/alertmanager.yml
Type: alertmanager
  AlertManagerRule: 3 receiver(s)
  Route configured: yes

完全なワークフローの例

  1. アップロードする前にルールを検証します。

  2. バージョン管理の使用:

    • ルールファイルを Git などのバージョン管理システムで管理します。

    • ルールを変更する前に、既存の設定をバックアップします。

  3. 環境ごとの管理:

    • 開発、ステージング、本番などの環境ごとに、異なるルールファイルディレクトリを使用します。

    • 環境を区別するために、異なるデータソース設定を使用します。

  4. ルールの命名規則に従う:

    • ルールグループには、system_resourcesapplication_services のように意味のある名前を使用します。

    • アラート名には、HighCPUUsageServiceInstanceDown のようにアラートを明確に説明する名前を使用します。

  5. データソースの設定:

    • データソース設定の instanceregionId の値が正確であることを確認します。

    • インスタンス ID が存在し、アクセス可能であることを確認します。

  6. バッチ操作前の確認:

    • アップロードまたは削除操作は、複数のデータソースに影響を与える可能性があります。続行する前に、設定情報を注意深く確認してください。

    • 本番環境で操作を実行する前に、ステージング環境で検証してください。

完全なワークフローの例

# 1. ルールファイルの基本情報を表示
promtool ruleup --dir ./example/rule

# 2. ルールファイルを検証
promtool ruleup --dir ./example/rule --check

# 3. Alibaba Cloud にルールをアップロード (対話型の確認が必要)
promtool ruleup \
  --dir ./example/rule \
  --upload \
  --access-key-id $ALIYUN_ACCESS_KEY_ID \
  --access-key-secret $ALIYUN_ACCESS_KEY_SECRET \
  --user-id $ALIYUN_USER_ID

# 4. ルールを削除 (対話型の確認が必要)
promtool ruleup \
  --dir ./example/rule \
  --delete \
  --access-key-id $ALIYUN_ACCESS_KEY_ID \
  --access-key-secret $ALIYUN_ACCESS_KEY_SECRET \
  --user-id $ALIYUN_USER_ID
環境変数
export ALIYUN_ACCESS_KEY_ID="your-access-key-id"
export ALIYUN_ACCESS_KEY_SECRET="your-access-key-secret"
export ALIYUN_USER_ID="your-user-id"

一般的なエラー

ディレクトリ内にルールファイルが見つからない

  • 原因:指定されたディレクトリにルールファイルが見つかりませんでした。

  • 解決策:ディレクトリパスが正しいか確認してください。ディレクトリに有効な YAML ルールファイルが含まれていることを確認してください。

PrometheusRule ファイルが見つからない

  • 原因:ディレクトリ内に PrometheusRule タイプのファイルが見つかりませんでした。

  • 解決策:少なくとも 1 つのファイルに PrometheusRule 設定が含まれていることを確認してください。

PrometheusRule にルールグループが見つからない

  • 原因:PrometheusRule ファイルにルールグループが設定されていません。

  • 解決策:ルールファイルに少なくとも 1 つの groups 設定を追加してください。

PrometheusRule にデータソースが設定されていない

  • 原因:ルールファイルにデータソースが設定されていません。

  • 解決策:ルールファイルの先頭に datasources 設定を追加してください。

データソース [N] に instance フィールドがない

  • 原因:データソース設定で instance フィールドがないか、その値が空です。

  • 解決策:各データソースに有効な instance 値を設定してください。

データソース [N] に regionId フィールドがない

  • 原因:データソース設定で regionId フィールドがないか、その値が空です。

  • 解決策:各データソースに有効な regionId 値を設定してください。

ルールの検証に失敗した

  • 原因:ルールの検証に失敗しました。これは、PromQL の構文エラーまたは必須フィールドの欠落が原因である可能性があります。

  • 解決策--check パラメーターを使用して詳細な検証エラーメッセージを確認してください。エラーを修正して再試行してください。

--upload が設定されている場合、--access-key-id は必須

  • 原因--upload を使用したときに AccessKey ID が指定されていませんでした。

  • 解決策--access-key-id パラメーターを追加してください。

--upload が設定されている場合、--user-id は必須

  • 原因--upload を使用したときにユーザー ID が指定されていませんでした。

  • 解決策--user-id パラメーターを追加してください。

関連ドキュメント

ruleup コマンドのヘルプ

promtool ruleup --help を実行して、コマンドのヘルプを表示します。次の表にパラメーターを示します。

パラメーター

タイプ

デフォルト値

説明

--dir

string

""

YAML ルールファイルを含むディレクトリのパス。

--check

bool

false

設定が有効かどうかをチェックします。エラーが見つかった場合、コマンドはゼロ以外の状態コードで終了します。

--upload

bool

false

PrometheusRule を Managed Service for Prometheus インスタンスにアップロードします。

--delete

bool

false

Managed Service for Prometheus インスタンスから PrometheusRule を削除します。

--access-key-id

string

-

ご利用の Alibaba Cloud アカウントの AccessKey ID。このパラメーターは、アップロードまたは削除に必要です。

--access-key-secret

string

-

ご利用の Alibaba Cloud アカウントの AccessKey Secret。このパラメーターは、アップロードまたは削除に必要です。

--user-id

string

-

ご利用の Alibaba Cloud アカウントの ID。このパラメーターは、アップロードまたは削除に必要です。