7个版本 (4个稳定版)

1.0.3 2022年8月9日
1.0.2 2022年8月8日
0.1.2 2022年7月20日
0.1.1 2022年7月20日
0.1.0 2022年7月20日

#7 in #block-height

GPL-3.0-or-later

31KB
604 代码行

ecg

Integration Delivery Crate License

ecg是cosmos验证者的死亡开关


只要监控器从ecg收到心跳,就不会触发警报。这种“默认失败”的方法使这种类型的监控能够抵御可能导致您无法收到任何警报的失败。

示例

  • 您的整个基础设施失去连接
  • 监控服务与验证者同时故障
  • 监控服务无法访问验证者
  • 监控服务失去对其数据源(例如:LCD)的访问权限

警告

监控至关重要。ecg和心跳式监控是其他监控工具和方法的补充。我们建议将ecg作为额外的安全措施,与更主动的工具一起使用。

有多个SaaS平台,如Better UptimeDead Man's Snitch,实现了心跳监控。

功能

ecg

  1. 对于每个目标,从所有客户端获取状态
  2. 保留最新状态(最高区块高度)
  3. 对其进行检查
  4. 如果它们都通过,则发送心跳

检查包括

  • 区块高度增加
  • 验证者错过区块没有增加
  • 验证者没有被关押
  • 验证者没有被石碑化

入门指南

此工具可以作为crate安装。

cargo install ecg

或作为Docker镜像提供。

docker pull ghcr.io/setten-io/ecg

使用

ecg
Heartbeats for cosmos validators

USAGE:
    ecg [OPTIONS]

OPTIONS:
    -h, --help           Print help information
    -p, --path <PATH>    Path to yaml config [env: ECG_CONFIG_PATH=] [default: ecg.yaml]
    -V, --version        Print version information

可以通过ECG_LOG环境变量或通过RUST_LOG环境变量更改ecg日志级别。

配置

ecg通过yaml文件配置。

默认路径为./ecg.yaml,但可以通过-/--path标志或ECG_CONFIG_PATH环境变量指定。

示例

ecg.yaml
targets:
  phoenix:
    url: https://betteruptime.com/api/v1/heartbeat/fFKHCd3YNkayv8Fr6MJAFE3w
    valcons_address: terravalcons1qqyfhs9oacvteimwdpbt77fis88mie5gx6gxf2
    interval: 10
    clients:
      - type: lcd
        url: https://phoenix-lcd.terra.dev
      - type: lcd
        url: https://terra-api.polkachu.com
      - type: setten-lcd
        project_id: ea08855653b64998bb47b2c03bf66de7
        key: 02215b36969446c28b22059e63b4301b
        network: phoenix
        blockchain: terra
  kaiyo:
    url: https://betteruptime.com/api/v1/heartbeat/t6xm2P7Ujfjz3ph5TNBFti8X
    valcons_address: kujiravalcons14rt55jpahf4giiupxrxivy85ecog2onb29a2ev
    interval: 2
    clients:
      - type: lcd
        url: https://lcd.kaiyo.kujira.setten.io
      - type: lcd
        url: https://kujira-api.polkachu.com

规范

目标.<名称>

您的目标名称;应该是自解释的。

目标.<名称>.URL

发送 GET http 心跳请求的监控 URL。

目标.<名称>.valcons_address

验证器 valcons 地址。

可以使用 cosmos sdk 链二进制 CLI 找到它。

terrad tendermint show-address
目标.<名称>.interval

可选,默认为 30

每个周期(运行检查+发送心跳)之间的秒数间隔。

您必须根据监控器期望接收的心跳频率和链块时间来设置此参数。

目标.<名称>.clients

并行查询的冗余客户端数组。

目标.<名称>.clients[*].type

类型定义了客户端的种类以及可用的配置键。

可用的客户端类型及其配置

lcd
  • url - 查询 LCD 端点(例如:https://kujira-api.polkachu.com
setten-lcd
  • project_id - Setten 项目 ID(例如:ea08855653b64998bb47b2c03bf66de7
  • key - Setten 项目密钥(例如:02215b36969446c28b22059e63b4301b
  • network - Setten 网络别名(例如:phoenix
  • blockchain - Setten 区块链别名(例如:terra

有关网络和区块链别名的详细信息,请参阅 Setten 的文档

依赖关系

~13–27MB
~428K SLoC