特定の条件 (Tomcat がダウンするなど) が満たされたときに通知するアラート システムを作成する必要があります。異なる場所 (異なるタイム ゾーン) にデプロイされた複数のリモート サーバーが Tomcat サービスをホストし、Prometheus によって監視されています。現地時間の 8:05 から 22:45 の間だけアラートを受信する必要があるため、次のように進めます。
- サーバーの現地時間が [8:05,22:45] の場合は 1 を返し、それ以外の場合は 0 を返すカスタム ルール「check_system_time_in_interval」を定義しました。
- ルール 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
- 「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」を変更する方法がわかりません。