以太坊2.0 POS挖矿(ETH2 Staking)教程(三)Topaz测试网-告警篇

在之前的教程中已经介绍了开启Staking的方法和监控稳定性的方式:
以太坊2.0 POS挖矿(ETH2 Staking)教程(一)Topaz测试网
以太坊2.0 POS挖矿(ETH2 Staking)教程(二)Topaz测试网-监控篇

Prometheus提供的独立工具Alertmanager可以轻松实现异常告警。本文将介绍如何使用此工具来实现Staking余额异常告警。

概览

Alertmanager是一个专注于发送告警信息的组件,虽然由同一个团队开发,但独立于Prometheus server。这意味着它非常适合配合Prometheus进行告警信息的发送,也可以配合其他的系统进行运作。官方示意图如下:


Prometheus生态示意图

如图所示,Prometheus将告警内容发送至Alertmanager,Alertmanager根据配置将告警信息发送至目标。
因此,要完成Staking的异常告警,我们需要进行3项工作:

  1. 搭建Alertmanager,以接收Prometheus发来的告警信息
  2. 配置Prometheus,将其与Alertmanager通信
  3. 配置Alertmanager的告警规则

想仔细探究的话可以访问官方文档:https://prometheus.io/docs/alerting/overview/
以下将会以监控地址余额变动为例,完成告警配置的整个流程。

搭建Alertmanager

下载代码

tar xvfz alertmanager-*.tar.gz
cd alertmanager-*

修改配置文件

目录中的alertmanager.yml为配置文件。首先我们尝试通过邮件的方式发送告警信息。
我们需要在其中配置发送邮箱和接受邮箱。发送邮箱需要配置STMP服务的参数,接受邮箱只要填写邮件地址即可。
配置如下,我们在global部分配置了发送邮箱,在receivers部分配置了接受邮箱。
其中需要修改的地方已经在行位用#注释标出。

global:
  resolve_timeout: 5m
  smtp_from: 'xxx@qq.com' #email will be sent through this
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: 'xxx@qq.com' #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: 'xxxx@xxx.com' #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服务,之后把授权码填入此处即可。
修改完后保存文档退出即可。

配置Prometheus,将其与Alertmanager通信

这一步非常简单,修改Prometheus路径下的prometheus.yml文档,将alertmanager:9093这行的注释去掉即可。alerting部分如下所示:

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - alertmanager:9093 # delete comment of this line

修改完成后保存,然后使用kill -HUP PID使Prometheus重新载入配置即可。

配置Alertmanager的告警规则

我们需要新建一个告警规则配置文档,然后将文档添加到prometheus.yml中。

新建告警规则配置文档并配置规则

新建一个配置文档,比如eth2_rules.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分钟之前的余额,则触发告警。各部分解释:

  • alert:告警名称
  • expr:PromQL查询语句,此处指如果验证者当前余额低于5分钟前的余额,则触发告警(刚触发时并不会直接发送给Alertmanager,见下面对for的解释)。想了解更多可自行搜索或查阅官方文档
  • for:该规则触发后持续多久才会将告警信息通知给Alertmanager。这里设置15分钟,即验证者当前额度低于5分钟前额度的时间连续超过15分钟时,才会将此告警信息发送到Alertmanager。
  • annotations:告警内容,此处包括summary和description。此处用{{ $value }}显示余额较5分钟前减少的数额,用{{ $labels.pubkey }}显示验证者地址。

保存后打开prometheus.yml,将该告警规则配置文档添加到rule_files部分:

# 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的邮件发送功能是否正常。

查看Prometheus的告警规则是否生效

在Alert页面(http://localhost:9090/alert)可看到如下显示,则说明告警规则已经成功添加。

告警规则添加成功

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非常接地气地实现了一些常见的通讯软件的配置,比如微信,见官方文档中的<wechat_config>
  • 如果Prometheus中没有找到validator的相关指标,则需要重启验证者客户端并添加参数:
    ./prysm.sh validator --enable-account-metrics
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容