EaseProbe
EaseProbe是一个简单、独立且轻量级的工具,用Go语言编写,可以进行健康/状态检查。
目录
1. 简介
EaseProbe设计用于执行三类工作 - 探测、通知和报告。
1.1 探测
EaseProbe支持多种探测方法,如:
- HTTP。检查HTTP状态码,支持mTLS、HTTP基本认证、设置请求头/体,以及XPath响应评估。(HTTP探测手册)
- TCP。检查是否可以建立TCP连接。(TCP探测手册)
- Ping。ping一个主机以检查其是否可达。(Ping探测手册)
- Shell。运行Shell命令并检查结果。(Shell命令探测手册)
- SSH。通过SSH运行远程命令并检查结果。支持堡垒机/跳板服务器(SSH命令探测手册)
- TLS。使用TLS连接到指定端口,并(可选)验证证书是否已吊销或过期(TLS探测手册)
- 主机。在远程主机上运行SSH命令,检查CPU、内存和磁盘使用情况。(主机负载探测手册)
- 客户端。支持以下原生客户端。它们都支持mTLS和数据检查。(原生客户端探测手册)
- MySQL。连接到MySQL服务器并运行
SHOW STATUS
SQL。 - Redis。连接到Redis服务器并运行
PING
命令。 - Memcache。连接到Memcache服务器并运行
version
命令或验证给定的键值对。 - MongoDB。连接到MongoDB服务器并执行ping操作。
- Kafka。连接到Kafka服务器并列出所有主题。
- PostgreSQL。连接到PostgreSQL服务器并运行
SELECT 1
SQL。 - Zookeeper。连接到Zookeeper服务器并运行
get /
命令。
- MySQL。连接到MySQL服务器并运行
1.2 通知
EaseProbe支持以下通知方式:
- Slack。使用Slack Webhook发送通知
- Discord。使用Discord Webhook发送通知
- Telegram。使用Telegram Bot发送通知
- Teams。支持Microsoft Teams通知发送
- 电子邮件。支持向一个或多个电子邮件地址发送通知
- AWS SNS。支持AWS简单通知服务
- 企业微信。支持企业微信通知发送
- 钉钉。支持钉钉通知发送
- 飞书。支持飞书通知发送
- 短信。支持多个短信服务提供商的短信通知发送
- 日志。将通知写入日志文件或Syslog
- Shell。运行shell命令发送通知(参见示例)
- RingCentral。使用RingCentral Webhook发送通知
注意:
默认情况下,通知是边缘触发模式。如果您想将其配置为具有不同间隔和最大通知次数的水平触发模式,请参阅手册 - 告警间隔。
Windows 平台不支持使用 syslog 作为通知方法。
查看通知手册了解如何配置。
1.3 报告和指标
EaseProbe 支持以下报告和指标:
- SLA 报告通知。EaseProbe 会使用定义的
notify:
方法发送每日、每周或每月的 SLA 报告。 - SLA 实时报告。EaseProbe 默认会监听
0.0.0.0:8181
端口。访问此服务可获得 HTML 格式的实时 SLA 报告(http://localhost:8181/
)或 JSON 格式的报告(http://localhost:8181/api/v1/sla
)。 - SLA 数据持久化。SLA 数据默认会持久化在
$CWD/data/data.yaml
中。您可以通过编辑配置文件的settings
部分来配置此路径。
更多信息,请查看全局设置配置
- Prometheus 指标。EaseProbe 默认会监听
8181
端口。访问此服务可在http://easeprobe:8181/metrics
获得 Prometheus 指标。
指标以 easeprobe_
为前缀,详细文档请参阅 Prometheus 指标导出器
2. 入门
您可以通过以下任一方法开始使用 EaseProbe:
- 从 https://github.com/megaease/easeprobe/releases 下载适用于您平台的发行版
- 使用可用的 EaseProbe docker 镜像
docker run -it megaease/easeprobe
- 从源代码构建
easeprobe
2.1 构建
编译器要求 Go 1.21+
(支持泛型编程),查看 Go 安装指南 了解如何在您的平台上安装 Go。
使用 make
构建并生成 easeprobe
二进制文件。可执行文件会生成在 build/bin
目录下。
$ make
2.2 配置
阅读用户手册获取有关如何配置所有 EaseProbe 参数的详细说明。
使用 ./resources/config.yaml 中的配置模板创建一个配置文件(例如 $CWD/config.yaml
),该模板包含了完整的配置参数列表。
以下是一个简单的配置示例,可用于快速入门:
http: # http 探测
- name: EaseProbe Github
url: https://github.com/megaease/easeprobe
notify:
log:
- name: log file # 本地日志文件
file: /var/log/easeprobe.log
settings:
probe:
timeout: 30s # 所有探测的超时时间
interval: 1m # 所有探测的间隔时间为每分钟
您可以查看 EaseProbe JSON Schema 部分,使用 JSON Schema 文件来简化配置文件的编辑过程。
2.3 运行
构建完成后,您可以运行以下命令启动 EaseProbe
$ build/bin/easeprobe -f config.yaml
-f
配置文件或 URL 或多个文件的路径(将自动合并为一个)。也可以通过设置环境变量PROBE_CONFIG
实现-d
干运行。也可以通过设置环境变量PROBE_DRY
实现
3. 部署
EaseProbe 可以通过 Systemd、Docker、Docker-Compose 和 Kubernetes 进行部署。
详细信息可以在部署指南中找到
4. 用户手册
有关详细说明和功能,请参阅用户手册
5. 基准测试
我们对 EaseProbe 进行了广泛的基准测试。有关基准测试结果,请参阅 - 基准测试报告
6. 贡献
如果您有兴趣为项目做出贡献,请花点时间阅读我们的 贡献指南
7. 社区
- 加入 Slack 工作空间 讨论需求、问题和开发。
- Twitter 上的 MegaEase
8. 许可证
EaseProbe 采用 Apache 2.0 许可证。详情请见 LICENSE 文件。