Hitachi

JP1 Version 13 JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス


promtool

〈このページの構成〉

機能

Prometheus serverの定義ファイルの書式チェックとアラートルールのテストを行うコマンドです。

形式

promtool check config Prometheus設定ファイル名
         check rules アラート設定ファイル名
         test rules テストファイル名 ・・・

実行権限

なし

格納先ディレクトリ

Windowsの場合

Agentパス\tools\

Linuxの場合

/opt/jp1ima/tools/

引数

check config Prometheus設定ファイル名

Prometheus設定ファイルの書式に誤りがないかをチェックします。

Prometheus設定ファイルの詳細については,「Prometheus設定ファイル(jpc_prometheus_server.yml)」を参照してください。

check rules アラート設定ファイル名

アラート設定ファイルの書式に誤りがないかをチェックします。

アラート設定ファイルの詳細については,「アラート設定ファイル(jpc_alerting_rules.yml)」を参照してください。

test rules テストファイル名 ・・・

テストファイルに記述したアラートルールのテストを実行します。テストファイルは最大10個まで指定できます。

戻り値

0

書式正常,アラートルールのテスト成功

0以外

書式不正,アラートルールのテスト失敗

アラートルールのテストファイルの内容

形式

YAML形式で記述します。

ファイル

任意の名前.yml

記述内容

項目名

説明

デフォルト値

rule_files:

[ - <file_name> ]

テストのために考慮すべきルールファイルをリストで指定します。

ファイル名はワイルドカードで指定できます。

[ evaluation_interval: <duration> | default = 1m ]

アラートルールの評価間隔を指定します。

1m

group_eval_order:

[ - <group_name> ]

グループ名の順序を指定できます。

グループ名の順序は,ルールグループの評価の順序(特定の評価時間)になります。指定した順序は,記述したグループ名に対してだけ保証されます。

すべてのグループを記述する必要はありません。

次に示す記述例のように,<rule_files:>に記述したルールファイルの評価順序を指定できます。

<記述例>

group_eval_order:

- test02.yml

- test01.yml

tests:

[ - <test_group> ]

すべてのテストを列挙します。

(凡例)

−:該当なし

  • <test_group>

    項目名

    説明

    デフォルト値

    interval: <duration>

    「input_series:」のデータ発生間隔を指定します。

    input_series:

    [ - <series> ]

    シリーズのデータを指定します。

    [ name: <string> ]

    <test group>の名前を指定します。

    alert_rule_test:

    [ - <alert_test_case> ]

    アラートルールのテストを指定します。

    指定したファイルからアラートルールを検討します。

(凡例)

−:該当なし

  • <series>

    項目名

    説明

    デフォルト値

    series: <string>

    シリーズのデータを次の形式で指定します。

    'メトリック名 {ラベル名 = ラベル値, ...}'

    <記述例>

    series_name{label1="value1", label2="value2"}

    go_goroutines{job="prometheus", instance="localhost:9090"}

    values: <string>

    発生するデータをスペース区切りで指定します。

    次に示す展開表記を使用できます。

    <展開表記の例>

    'a+bxc' becomes 'a a+b a+(2*b) a+(3*b) … a+(c*b)'

    'a-bxc' becomes 'a a-b a-(2*b) a-(3*b) … a-(c*b)'

    <記述例>

    '-2+4x3' becomes '-2 2 6 10'

    ' 1-2x4' becomes '1 -1 -3 -5 -7'

(凡例)

−:該当なし

  • <alert_test_case>

    項目名

    説明

    デフォルト値

    eval_time: <duration>

    テストを評価する(アラートをチェックする)タイミングを「time = 0s」からの経過時間を指定します。

    <test_group>の「interval:」に指定したデータ発生間隔で「eval_time:」に指定した経過時間までを評価します。

    例えば,<test_group>の「interval:」に指定したデータ発生間隔が1mで,「eval_time:」に指定した経過時間が5mの場合,「input_series:」で指定したデータの6番目を取得したタイミングで評価されます。

    alertname: <string>

    テストするアラートの名前を指定します。

    アラート設定ファイルの「alert:」に記述した値を指定します。

    exp_alerts:

    [ - <alert> ]

    発生を期待するアラートの内容をリストで指定します。

    アラートルールを実行しないことをテストする場合は,「exp_alerts」の指定を空にします。

(凡例)

−:該当なし

  • <alert>

    項目名

    説明

    デフォルト値

    exp_labels:

    [ <labelname>: <string> ]

    発生を期待するアラートのラベルを指定します。

    ラベルには,アラートに関連付けられたサンプルのラベルも含まれます。

    exp_annotations:

    [ <labelname>: <string> ]

    発生を期待するアラートの注釈を指定します。

(凡例)

−:該当なし

アラート設定ファイルとアラートルールのテストファイルのサンプル

■「up」メトリックの例
  • アラート設定ファイルの記述例

groups:
- name: alerts
  rules:
 
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
        severity: page
    annotations:
        summary: "Instance {{ $labels.instance }} down"
        description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."
  • アラートルールのテストファイルの記述例

rule_files:
    - jpc_alerting_rules.yml
 
evaluation_interval: 1m
 
tests:
    # Test
    - interval: 1m
      # Series data.
      input_series:
          - series: 'up{job="prometheus", instance="localhost:9090"}'
            values: '0 0 0 0 0 0 0 0 0 0 0 0 0 0 0' # success
 
      # Unit test for alerting rules.
      alert_rule_test:
          # Unit test 1.
          - eval_time: 5m
            alertname: InstanceDown
            # alertname: AnotherInstanceDown
            exp_alerts:
                # Alert 1.
                - exp_labels:
                      severity: page
                      instance: localhost:9090
                      job: prometheus
                  exp_annotations:
                      summary: "Instance localhost:9090 down"
                      description: "localhost:9090 of job prometheus has been down for more than 5 minutes."
■CPUの例
  • アラート設定ファイルの記述例

groups:
  - name: alerts
    rules:
      - alert: cpu_alert_rule
        expr: sum(rate(windows_cpu_time_total{mode!="idle"}[1m])) < 50
        for: 2m
        labels:
          severity: page
        annotations:
          summary: "CPU alert rule summary"
          description: "CPU alert rule description"
  • アラートルールのテストファイルの記述例

rule_files:
    - jpc_alerting_rules.yml
 
evaluation_interval: 1m
 
tests:
    # Test
    - interval: 1m
      # Series data.
      input_series:
          - series: 'windows_cpu_time_total'
            #values: '0+3000x10' # fail
            values: '0+2800x10'  # success
 
      # Unit test for alerting rules.
      alert_rule_test:
          # Unit test 1.
          - eval_time: 7m
            alertname: cpu_alert_rule
            exp_alerts:
                # Alert 1.
                - exp_labels:
                      severity: page
                  exp_annotations:
                      summary: "CPU alert rule summary"
                      description: "CPU alert rule description"
■メモリーの例(その1)
  • アラート設定ファイルの記述例

groups:
  - name: alerts
    rules:
      - alert: memory_alert_rule
        expr: windows_memory_available_bytes < 1073741824
        for: 3m
        labels:
          severity: page
        annotations:
          summary: "Memory alert rule summary"
          description: "Memory alert rule description"
  • アラートルールのテストファイルの記述例

rule_files:
    - jpc_alerting_rules.yml
 
evaluation_interval: 1m
 
tests:
    # Test
    - interval: 1m
      # Series data.
      input_series:
          - series: 'windows_memory_available_bytes'
            values: '1073741822 1073741826 1073741823 1073741823 1073741823 1073741823 1073741828 1073741822' # success
            #values: '1073741822 1073741822 1073741826 1073741823 1073741823 1073741823 1073741828 1073741822' # fail
 
      # Unit test for alerting rules.
      alert_rule_test:
          # Unit test 1.
          - eval_time: 5m
            alertname: memory_alert_rule
            exp_alerts:
                # Alert 1.
                - exp_labels:
                      severity: page
                  exp_annotations:
                      summary: "Memory alert rule summary"
                      description: "Memory alert rule description"
■メモリーの例(その2)
  • アラート設定ファイルの記述例

groups:
  - name: alerts
    rules:
      - alert: memory_alert_rule
        expr: windows_memory_available_bytes < 1073741824
        for: 3m
        labels:
          severity: page
        annotations:
          summary: "Memory alert rule summary"
          description: "Memory alert rule description"
  • アラートルールのテストファイルの記述例

rule_files:
    - jpc_alerting_rules.yml
 
evaluation_interval: 1m
 
tests:
    # Test
    - interval: 1m
      # Series data.
      input_series:
          - series: 'windows_memory_available_bytes'
            values: '1073741822 1073741826 1073741823 1073741823 1073741823 1073741823 1073741828 1073741822' # success
            #values: '1073741822 1073741822 1073741826 1073741823 1073741823 1073741823 1073741828 1073741822' # fail
 
      # Unit test for alerting rules.
      alert_rule_test:
          # Unit test 1.
          - eval_time: 5m
            alertname: memory_alert_rule
            exp_alerts:
                # Alert 1.
                - exp_labels:
                      severity: page
                  exp_annotations:
                      summary: "Memory alert rule summary"
                      description: "Memory alert rule description"
■割り込みの例
  • アラート設定ファイルの記述例

groups:
  - name: alerts
    rules:
      - alert: alerts_rules_increase
        expr: increase(windows_cpu_interrupts_total{core="0,0"}[3m]) > 100
        for: 0m
        labels:
          severity: critical
        annotations:
          summary: "Alert test case of increase."
          description: "Use increase function in unit test."
 
      - alert: alerts_rules_increase_all
        expr: sum(increase(windows_cpu_interrupts_total[5m])) > 240
        for: 0m
        labels:
          severity: critical
        annotations:
          summary: "Alert test case of increase."
          description: "Use increase function in unit test."
  • アラートルールのテストファイルの記述例

rule_files:
    - jpc_alerting_rules.yml
 
evaluation_interval: 1m
 
tests:
    # Test
    - interval: 1m
      # Series data.
      input_series:
          - series: 'windows_cpu_interrupts_total{core="0,0"}'
            #values: '0 10 20 30 110 120 130 140 150 160 170' #fail
            values: '0+10x3 111+10x6'  #success
          - series: 'windows_cpu_interrupts_total{core="0,1"}'
            values: '0+10x3 98+13x6'
 
      # Unit test for alerting rules.
      alert_rule_test:
          # Unit test 1.
          - eval_time: 4m
            alertname: alerts_rules_increase
            exp_alerts:
                # Alert 1.
                - exp_labels:
                      core: "0,0"
                      severity: critical
                  exp_annotations:
                      summary: "Alert test case of increase."
                      description: "Use increase function in unit test."
          - eval_time: 8m
            alertname: alerts_rules_increase_all
            exp_alerts:
                # Alert 1.
                - exp_labels:
                      severity: critical
                  exp_annotations:
                      summary: "Alert test case of increase."
                      description: "Use increase function in unit test."

使用例