HertzBeat监控系统扩展教程:基于HTTP协议自定义监控类型

HertzBeat监控系统扩展教程:基于HTTP协议自定义监控类型

hertzbeat An open source, real-time monitoring system with custom-monitoring, high performance cluster, prometheus-like and agentless. hertzbeat 项目地址: https://gitcode.com/gh_mirrors/he/hertzbeat

前言

在现代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
       }
     ]
   }
}

我们需要从中提取categoryappstatussizeavailableSize等指标数据。

创建监控模板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.*'

关键配置解析

  1. 基本信息配置

    • category:监控类型分类,如service、db、custom等
    • app:监控类型标识符
    • name:监控类型的多语言显示名称
  2. 参数定义

    • 定义了主机、端口、HTTPS等基本连接参数
    • 支持认证参数配置,包括Basic Auth和Digest Auth
  3. 指标定义

    • metrics定义了要采集的指标集合
    • priority设置采集优先级,0为最高优先级(可用性指标)
    • fields定义了具体的指标字段及其类型
  4. HTTP协议配置

    • 指定了请求的URL、方法等
    • parseType设置为jsonPath,使用JSONPath表达式提取数据
    • parseScript指定了数据提取路径$.data.apps.*

应用模板并添加监控

  1. 在HertzBeat仪表盘中导入上述YAML模板
  2. 重启HertzBeat服务使模板生效
  3. 在监控页面添加新的"HertzBeat监控系统"类型监控
  4. 配置目标主机、端口等参数
  5. 保存后系统将开始定期采集数据

数据可视化与告警

采集到的数据会自动展示在监控详情页面,包括:

  • 实时指标数值
  • 历史趋势图表
  • 指标状态变化

用户可以基于这些指标设置阈值告警规则,当指标超出正常范围时触发告警通知。

高级配置技巧

  1. 复杂JSON解析

    • 对于嵌套更深的JSON结构,可以使用更复杂的JSONPath表达式
    • 例如:$.data.servers[*].metrics.cpu.usage
  2. 请求参数配置

    • 支持在URL中添加查询参数
    • 可以配置请求头(Headers)和请求体(Body)
  3. 数据处理

    • 支持对采集到的数据进行简单的计算和转换
    • 例如将字节转换为MB,百分比转换等

总结

通过本文的操作,我们完成了在HertzBeat中基于HTTP协议自定义监控类型的全过程。这种扩展方式非常灵活,几乎可以监控任何提供HTTP API的服务。HertzBeat强大的扩展能力使其能够适应各种监控场景,是构建统一监控平台的理想选择。

HTTP协议监控只是HertzBeat扩展能力的一部分,系统还支持SNMP、JMX、数据库等多种协议的数据采集,读者可以继续探索这些功能来满足更复杂的监控需求。

hertzbeat An open source, real-time monitoring system with custom-monitoring, high performance cluster, prometheus-like and agentless. hertzbeat 项目地址: https://gitcode.com/gh_mirrors/he/hertzbeat

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滑茵珠Gerret

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值