《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的 HertzBeat赫兹跳动是一个易用友好的高性能监控告警系统。
项目介绍
HertzBeat 支持自定义监控 ,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
HertzBeat 模块化,manager, collector, scheduler, warehouse, alerter 各个模块解耦,方便理解与定制开发。
HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版,邮件钉钉微信飞书等及时通知送达。
模块
- manager 提供监控管理,系统管理基础服务
提供对监控的管理,监控应用配置的管理,系统用户租户后台管理等。
- collector 提供监控数据采集服务
使用通用协议远程采集获取对端指标数据。
- scheduler 提供监控任务调度服务
采集任务管理,一次性任务和周期性任务的调度分发。
- warehouse 提供监控数据仓储服务
采集指标结果数据管理,数据落盘,查询,计算统计。
- alerter 提供告警服务
告警计算触发,监控状态联动,告警配置,告警通知。
- web-app 提供可视化控制台页面
快速开始
依赖服务部署
HertzBeat最少依赖于 关系型数据库MYSQL5+ 和 时序性数据库TDengine2+
HertzBeat安装
HertzBeat支持通过源码安装启动,Docker容器运行和安装包方式安装部署。
Docker方式快速安装
docker run -d -p 1157:1157 -v /opt/application.yml:/opt/hertzbeat/config/application.yml --name hertzbeat tancloud/hertzbeat:[版本tag]
通过安装包安装
- 下载您系统环境对应的安装包
https://gitee.com/dromara/hertzbeat/releases
- 配置HertzBeat的配置文件 hertzbeat/config/application.yml
- 部署启动 $ ./startup.sh
自定义监控
配置自定义监控类型需新增配置两个YML文件
- 用监控类型命名的监控配置定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/app/ 下
- 用监控类型命名的监控参数定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/param/ 下
- 重启hertzbeat系统,我们就适配好了一个新的自定义监控类型。
监控配置定义文件
样例:自定义一个名称为example的自定义监控类型,其使用HTTP协议采集指标数据。
文件名称: example.yml 位于 /define/app/example.yml
# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控category: custom# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...app: examplename: zh-CN: 模拟应用类型 en-US: EXAMPLE APP# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串# 强制固定必须参数 - hostconfigmap: - key: host type: 1 - key: port type: 0 - key: username type: 1 - key: password type: 2# 指标组列表metrics:# 第一个监控指标组 cpu# 注意:内置监控指标有 (responseTime - 响应时间) - name: cpu # 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集 # 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度 priority: 0 # 指标组中的具体监控指标 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: hostname type: 1 instance: true - field: usage type: 0 unit: '%' - field: cores type: 0 - field: waitTime type: 0 unit: s# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换 aliasFields: - hostname - core1 - core2 - usage - allTime - runningTime# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime calculates: - hostname=hostname - cores=core1+core2 - usage=usage - waitTime=allTime-runningTime# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk protocol: http# 当protocol为http协议时具体的采集配置 http: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ # url请求接口路径 url: /metrics/cpu # 请求方式 GET POST PUT DELETE PATCH method: GET # 是否启用ssl/tls,即是http还是https,默认false ssl: false # 请求头内容 headers: apiVersion: v1 # 请求参数内容 params: param1: param1 param2: param2 # 认证 authorization: # 认证方式: Basic Auth, Digest Auth, Bearer Token type: Basic Auth basicAuthUsername: ^_^username^_^ basicAuthPassword: ^_^password^_^ # 响应数据解析方式: default-系统规则,jsonPath-jsonPath脚本,website-网站可用性指标监控 # todo xmlPath-xmlPath脚本,prometheus-Prometheus数据规则 parseType: jsonPath parseScript: '$' - name: memory priority: 1 fields: - field: hostname type: 1 instance: true - field: total type: 0 unit: kb - field: usage type: 0 unit: '%' - field: speed type: 0 protocol: http http: host: ^_^host^_^ port: ^_^port^_^ url: /metrics/memory method: GET headers: apiVersion: v1 params: param1: param1 param2: param2 authorization: type: Basic Auth basicAuthUsername: ^_^username^_^ basicAuthPassword: ^_^password^_^ parseType: default
更多内容:https://gitee.com/dromara/hertzbeat
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除