[監視システム] Promethus は、Alertmanager 監視とアラーム電子メール通知を統合します
Alertmanager は、アラートを管理および監視するためのオープンソース ソフトウェアです。これは、人気のあるオープンソースの監視および警告システムである Prometheus と緊密に統合されています。Alertmanager は、複数のソースからアラートと通知を受信し、一連の構成ルールに基づいてそれらのアラートを処理および送信する方法を決定します。
したがって、Alertmanager の機能は次のように要約できます。
- 監視システムからのアラートを受信する
- 設定されたルールに従って受信したアラートを処理し、重複を排除します。
- 通知アラートを送信する
Alertmanager は、電子メール、DingTalk などのさまざまな通知方法をサポートしています。
Prometheus のアラーム ルールは次のもので構成されます。
- アラーム名: ユーザーはアラーム ルールに名前を付ける必要があります
- アラーム ルール: 主に PromQL によって定義され、式 (PromQL) クエリ結果がアラームをトリガーするまでの持続時間 (During) を示します。
主な特徴:
- グループ化: システムのダウンタイムにより多数のアラームが同時にトリガーされる場合など、詳細なアラーム情報を 1 つの通知に結合します。
- 抑制: アラームが送信されるとき、アラーム爆撃を避けるために、このアラームによって引き起こされる他のアラームを繰り返し送信するメカニズムを停止できます。
- Silence: ラベルに従ってアラームを沈黙させます。受信したアラームが沈黙設定に準拠している場合、Alertmanager はアラーム通知を送信しません。
アラートマネージャーのインストール
1.下载Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
2.解压
tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz
#启动
./alertmanager --config.file=alertmanager.yml
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &
- http://ip:9093/#/alerts などの IP+ポートにアクセスします。
Alertmanager の使用プロセスについて:
- Prometheus の rules.yaml は、アラート ルールを作成し、Prometheus を構成し、どのような状況でアラートが送信されるかを定義します。
- アラートマネージャーを設定し、電子メール、DingTalk、または SMS 受信プログラムを追加し、アラーム通知のターゲットと通知メディアを指定します。
- 警報ルーティングを確立し、警報レベルを区別して分類するための警報ルーティング方法を定義し、警報対象ごとに異なる火災通知方法を設定します。
アラートの 3 つの状態:
pending:警报被激活,但是低于配置的持续时间。这里的持续时间即rule里的FOR字段设置的时间。改状态下不发送报警。
firing:警报已被激活,而且超出设置的持续时间。该状态下发送报警。
inactive:既不是pending也不是firing的时候状态变为inactive
プロメテウスがアラームをトリガーするプロセス:
prometheus—> トリガーしきい値—> 期間超過—>alertmanager—> グループ化 | サプレッション | サイレント—> メディア タイプ—> メール | DingTalk | WeChat など。
OK、Alertmanager をデプロイしたので、アプリケーションを監視する必要があります。アプリケーションがハングした場合は、開発者に電子メールが送信されるようにトリガーします。
まず、Promethus のルート ディレクトリに移動し、rule.yml ファイルを作成します。
まず、rule.yaml の構成プロパティを簡単に紹介します。
groups: # 告警规则组
- name: server-alarm
rules: #规则,可以配置多个alert告警
- alert: # 告警名称
expr: # 告警表达式,基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
for: # 评估等待时间,可选,用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生告警 的状态为pending。
labels: #自定义标签,允许用户指定要附加到告警上的一组附加标签。
severity: # 告警严重程度
annotations: #用于指定一组附加信息,比如用于描述告警详细信息的文字等
summary: # 告警摘要
description: # 告警详细描述
重大度には、次の一般的に使用される値があります。
- クリティカル (深刻な)、システムの主な機能に影響を与える、あるいはシステムのクラッシュを引き起こす状況を表すために使用されます。
- 警告は、例外が存在するがシステムのクラッシュやサービスの停止を引き起こさない状況を説明するために使用されます。
- info (情報) は、ビジネスの通常の動作に対応する通常のステータス情報を記述するために使用されます。
- debug は、問題のトラブルシューティングに使用できるデバッグ情報を記述するために使用されます。
#配置规则
groups:
- name: server-alarm
rules:
- alert: "InstanceDown"
expr: up == 0
for: 1m
labels:
severity: warning
annotations:
summary: "{
{ $labels.instance }}"
description: "{
{ $labels.instance }} of job {
{ $labels.job }} has been down for more than 1 minutes."
Prometheus を構成して、Alertmanager アドレスを関連付け、ルール ルールを有効にします。
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.140.133:9093
rule_files:
- "rule.yml"
構成を動的に更新するcurl -X POST http://localhost:9090/-/reload
Alertmanagerのalertmanager.yml設定ファイルを設定します。
alertmanager.yml には主に 2 つの部分が含まれています: ルート + レシーバー
- アラーム情報はコンフィグレーションの最上位ルート(ルート)からルーティングツリーに入り、ルーティングルールに従って対応する受信先にアラーム情報が送信されます。
alertmanager.yml ファイルを編集して保存します。
global:
smtp_smarthost: 'smtp.163.com:25' # SMTP服务器地址和端口
smtp_from: '[email protected]' # 显示在邮件“发件人”字段中的地址
smtp_auth_username: '[email protected]' # STMP认证时使用的用户名
smtp_auth_password: 'TCNTXJTZUXJHJJPX' # SMTP认证时使用的密码,不是密码
smtp_require_tls: false # SMTP服务器是否需要TLS加密
route:
receiver: 'email' # 发送告警通知的收件人,和下面的接受者名称匹配
group_wait: 10s # 在发送前等待各个警报的时间
group_interval: 30s # 相同警报名称的警报发送间隔
repeat_interval: 10m # 重复发送警报的时间间隔
group_by: ['alertname'] # 根据警报名分组告警接收者
# 告警接收者
receivers:
- name: 'email' # 接收者名称
email_configs:
- to: '[email protected]' # 接收告警邮件的收件人
- アラートマネージャーを再起動します
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &
Prometheus の設定とルールが有効かどうかを確認してください
アラートマネージャーを見てください。
さて、アラーム機能の検証を始めましょう。
まず、springboot アプリケーションを停止しましょう。
Prometheus でサービスがダウンしているのを確認しました。
Alertmanager でアラームが見つかりました。
メールをチェックする:
OK、これで終わりです。ブロガーをサポートすることを忘れないでください。