

配置Alertmanager的告警规则 我们需要新建一个告警规则配置文档。Alertmanager的邮件发送功能是否正常 可以在eth2_rules.yml中再添加一条必定会触发的规则作为测试。比如如下规则: - alert: ETH2 alert test expr: validator_balance - validator_balance offset 5m >= 0 for: 1m annotations: summary: "ETH2 alert test" description: "ETH2 balance increased {{ $value }} ETH. Pubkey: {{ $labels.pubkey }}" 规则生效后不久如果收到如下格式的邮件则说明邮件发送功能正常: 其他事项 Alertmanager非常接地气地实现了一些常见的通讯软件的配置。
在之前的教程中已经介绍了开启Staking的方法和监控稳定性的方式: 以太坊2.0 POS挖矿(ETH2 Staking)教程(一)Topaz测试网 以太坊2.0 POS挖矿(ETH2 Staking)教程(二)Topaz测试网-监控篇
Prometheus提供的独立工具Alertmanager可以轻松实现异常告警。本文将介绍如何使用此工具来实现Staking余额异常告警。
Alertmanager是一个专注于发送告警信息的组件,虽然由同一个团队开发,但独立于Prometheus server。这意味着它非常适合配合Prometheus进行告警信息的发送,也可以配合其他的系统进行运作。官方示意图如下:

如图所示,Prometheus将告警内容发送至Alertmanager,Alertmanager根据配置将告警信息发送至目标。 因此,要完成Staking的异常告警,我们需要进行3项工作:
tar xvfz alertmanager-*.tar.gz cd alertmanager-*
global: resolve_timeout: 5m smtp_from: '[email protected]' #email will be sent through this smtp_smarthost: 'smtp.qq.com:465' smtp_auth_username: '[email protected]' #email address smtp_auth_password: 'xxxxxxxxxxxxx' #auth code, not password of email! smtp_require_tls: false smtp_hello: 'qq.com' route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'eth2staking' receivers: - name: 'web.hook' webhook_configs: - url: 'http://127.0.0.1:5001/'# add this receiver - name: 'eth2staking' email_configs: - to: '[email protected]' #email to receive alert notification
inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
我们使用qq邮箱进行发送。注意smtp_auth_password不是邮箱登录密码,而是第三方客户端登录邮箱所需的授权码。在qq邮箱的
设置->账户 中开启SMTP服务,之后把授权码填入此处即可。 修改完后保存文档退出即可。
# Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - alertmanager:9093 # delete comment of this line 修改完成后保存,然后使用kill -HUP PID使Prometheus重新载入配置即可。
我们需要新建一个告警规则配置文档,然后将文档添加到prometheus.yml中。
groups: - name: staking rules: # Staking loss
- alert: ETH2 staking loss expr: validator_balance - validator_balance offset 5m < 0 for: 15m annotations: summary: "ETH2 balance(offset 5m) decreased." description: "ETH2 balance(offset 5m) decreased by {{ $value }} ETH. Pubkey: {{ $labels.pubkey }}"
这条规则的意思是验证者当前余额低于5分钟之前的余额,则触发告警。各部分解释:
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "eth2_rules.yml" 然后使用kill -HUP PID使Prometheus重新载入配置即可。
我们需要检查:1. Prometheus的告警规则是否生效。 2. Alertmanager的邮件发送功能是否正常。
- alert: ETH2 alert test expr: validator_balance - validator_balance offset 5m >= 0 for: 1m annotations: summary: "ETH2 alert test" description: "ETH2 balance increased {{ $value }} ETH. Pubkey: {{ $labels.pubkey }}" 规则生效后不久如果收到如下格式的邮件则说明邮件发送功能正常:
