0

特定の条件 (Tomcat がダウンするなど) が満たされたときに通知するアラート システムを作成する必要があります。異なる場所 (異なるタイム ゾーン) にデプロイされた複数のリモート サーバーが Tomcat サービスをホストし、Prometheus によって監視されています。現地時間の 8:05 から 22:45 の間だけアラートを受信する必要があるため、次のように進めます。

  1. サーバーの現地時間が [8:05,22:45] の場合は 1 を返し、それ以外の場合は 0 を返すカスタム ルール「check_system_time_in_interval」を定義しました。
  2. ルール 1) を使用して、「prometheus.rule.yml」で営業時間外にアラートを禁止するアラートを定義します。
- name: quite_hours
  rules:
    - alert: Inhibit alert during NO working hours
      expr: check_system_time_in_interval==0
      labels:
        notification: none
        severity: critical
  1. 「alertmanager.yml」ファイルで、監視対象のサーバー時間が間隔内にない場合にアラートTOMCAT ダウン(TOMCAT サービスが停止している場合にアラートを発生させる)を禁止する新しいinhibit_rule を定義しました。
inhibit_rules:
- source_match:
    alertname: Inhibit alert during NO working hours
  target_match_re:
    alertname: (TOMCAT down)

TOMCAT down は、Tomcat が起動しているかどうかを確認するカスタム ルール「tomcat_up」を使用します。今ではかなり適切に動作しているようですが、このアプローチではタイムゾーンが原因で問題が発生します: Prometheus サーバーが配置されていても、監視対象サーバーのローカル時間が [8:05,22:45] にある場合は通知を受ける必要があります異なるタイムゾーンに。

簡単な解決策の 1 つは、check_system_time_in_interval 時系列の「インスタンス」ラベルが TOMCAT ダウンの「インスタンス」ラベルと等しい場合にのみアラートを禁止することです (たとえば、check_system_time_in_interval{instance="10.41.0.118"}=0 および tomcat_up{instance= の場合)。 「10.41.0.118}=1」はアラートを発しますが、それを行うために「inhibit_rule」を変更する方法がわかりません。

4

1 に答える 1