HertzBeat监控系统扩展教程:基于HTTP协议自定义监控类型
前言
在现代IT基础设施监控领域,能够灵活地扩展和自定义监控类型是监控系统的重要能力。HertzBeat作为一款开源实时监控系统,提供了强大的扩展能力,允许用户自定义各种监控类型。本文将详细介绍如何在HertzBeat中基于HTTP协议自定义一个监控类型,并以监控HertzBeat自身API为例进行实际操作演示。
HTTP协议监控概述
HTTP协议作为互联网最广泛使用的应用层协议,许多服务和系统都通过HTTP API暴露其运行状态和指标数据。HertzBeat支持通过HTTP协议采集这些数据,并将其转化为可监控的指标。
常见HTTP响应结构
大多数HTTP API会采用标准化的响应结构,典型格式如下:
{
"code": 200,
"msg": "success",
"data": {
// 实际业务数据
}
}
这种结构具有良好的可读性和一致性,便于客户端处理。我们的目标就是从这样的响应中提取出需要监控的指标数据。
实际操作:监控HertzBeat系统API
目标API分析
我们将监控HertzBeat系统的摘要统计API:/api/summary
,其响应示例如下:
{
"msg": null,
"code": 0,
"data": {
"apps": [
{
"category": "service",
"app": "jvm",
"status": 0,
"size": 2,
"availableSize": 0,
"unManageSize": 2,
"unAvailableSize": 0,
"unReachableSize": 0
},
{
"category": "service",
"app": "website",
"status": 0,
"size": 2,
"availableSize": 0,
"unManageSize": 2,
"unAvailableSize": 0,
"unReachableSize": 0
}
]
}
}
我们需要从中提取category
、app
、status
、size
、availableSize
等指标数据。
创建监控模板YAML
在HertzBeat中,监控类型通过YAML模板定义。以下是完整的监控模板配置:
category: custom
app: hertzbeat
name:
zh-CN: HertzBeat监控系统
en-US: HertzBeat Monitor
help:
zh-CN: Hertzbeat 对 Hertzbeat 监控系统的通用指标进行测量监控。
en-US: Hertzbeat monitors HertzBeat Monitor through general performance metric.
params:
- field: host
name:
zh-CN: 主机Host
en-US: Host
type: host
required: true
- field: port
name:
zh-CN: 端口
en-US: Port
type: number
range: '[0,65535]'
required: true
defaultValue: 1157
- field: ssl
name:
zh-CN: 启用HTTPS
en-US: HTTPS
type: boolean
required: true
- field: timeout
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
type: number
required: false
hide: true
- field: authType
name:
zh-CN: 认证方式
en-US: Auth Type
type: radio
required: false
hide: true
options:
- label: Basic Auth
value: Basic Auth
- label: Digest Auth
value: Digest Auth
- field: username
name:
zh-CN: 用户名
en-US: Username
type: text
limit: 50
required: false
hide: true
- field: password
name:
zh-CN: 密码
en-US: Password
type: password
required: false
hide: true
metrics:
- name: summary
priority: 0
fields:
- field: app
type: 1
label: true
- field: category
type: 1
- field: status
type: 0
- field: size
type: 0
- field: availableSize
type: 0
protocol: http
http:
host: ^_^host^_^
port: ^_^port^_^
url: /api/summary
timeout: ^_^timeout^_^
method: GET
ssl: ^_^ssl^_^
authorization:
type: ^_^authType^_^
basicAuthUsername: ^_^username^_^
basicAuthPassword: ^_^password^_^
digestAuthUsername: ^_^username^_^
digestAuthPassword: ^_^password^_^
parseType: jsonPath
parseScript: '$.data.apps.*'
关键配置解析
-
基本信息配置:
category
:监控类型分类,如service、db、custom等app
:监控类型标识符name
:监控类型的多语言显示名称
-
参数定义:
- 定义了主机、端口、HTTPS等基本连接参数
- 支持认证参数配置,包括Basic Auth和Digest Auth
-
指标定义:
metrics
定义了要采集的指标集合priority
设置采集优先级,0为最高优先级(可用性指标)fields
定义了具体的指标字段及其类型
-
HTTP协议配置:
- 指定了请求的URL、方法等
parseType
设置为jsonPath
,使用JSONPath表达式提取数据parseScript
指定了数据提取路径$.data.apps.*
应用模板并添加监控
- 在HertzBeat仪表盘中导入上述YAML模板
- 重启HertzBeat服务使模板生效
- 在监控页面添加新的"HertzBeat监控系统"类型监控
- 配置目标主机、端口等参数
- 保存后系统将开始定期采集数据
数据可视化与告警
采集到的数据会自动展示在监控详情页面,包括:
- 实时指标数值
- 历史趋势图表
- 指标状态变化
用户可以基于这些指标设置阈值告警规则,当指标超出正常范围时触发告警通知。
高级配置技巧
-
复杂JSON解析:
- 对于嵌套更深的JSON结构,可以使用更复杂的JSONPath表达式
- 例如:
$.data.servers[*].metrics.cpu.usage
-
请求参数配置:
- 支持在URL中添加查询参数
- 可以配置请求头(Headers)和请求体(Body)
-
数据处理:
- 支持对采集到的数据进行简单的计算和转换
- 例如将字节转换为MB,百分比转换等
总结
通过本文的操作,我们完成了在HertzBeat中基于HTTP协议自定义监控类型的全过程。这种扩展方式非常灵活,几乎可以监控任何提供HTTP API的服务。HertzBeat强大的扩展能力使其能够适应各种监控场景,是构建统一监控平台的理想选择。
HTTP协议监控只是HertzBeat扩展能力的一部分,系统还支持SNMP、JMX、数据库等多种协议的数据采集,读者可以继续探索这些功能来满足更复杂的监控需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考