《开源精选》是我们分享 Github、Gitee 等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的 HertzBeat 赫兹跳动是一个易用友好的高性能监控告警系统。
项目介绍
HertzBeat 支持自定义监控 ,只用通过配置 YML 文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
HertzBeat 模块化,manager
, collector
, scheduler
, warehouse
, alerter
各个模块解耦,方便理解与定制开发。
HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版,邮件钉钉微信飞书等及时通知送达。
模块
-
• manager 提供监控管理,系统管理基础服务
提供对监控的管理,监控应用配置的管理,系统用户租户后台管理等。
-
• collector 提供监控数据采集服务
使用通用协议远程采集获取对端指标数据。
-
• scheduler 提供监控任务调度服务
采集任务管理,一次性任务和周期性任务的调度分发。
-
• warehouse 提供监控数据仓储服务
采集指标结果数据管理,数据落盘,查询,计算统计。
-
• alerter 提供告警服务
告警计算触发,监控状态联动,告警配置,告警通知。
路线图
快速开始
依赖服务部署
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: example
name:
zh-CN: 模拟应用类型
en-US: EXAMPLE APP
# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
# 强制固定必须参数 - host
configmap:
- 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
传送门
开源协议:Apache 2.0
开源地址:https://gitee.com/dromara/hertzbeat
-END-
原文始发于微信公众号(开源技术专栏):HertzBeat赫兹跳动-高性能监控告警系统
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79590.html