夜莺告警通知中如何添加更丰富的机器信息

夜莺 v7.3.2 起告警事件支持 Target 字段,通知模板可以展示机器名、CPU 使用率、内存使用率、IP、采集器版本等机器信息,帮助值班人员更快定位告警对象。

作者 Nightingale

前言

夜莺的 v7.3.2 版本,在告警事件的结构体中,添加了 Target 字段,通过这个新的字段,我们可以在告警通知内容中,展示更详细的机器信息,可以帮助运维人员更快速地定位和解决问题。

Target 字段包含了告警机器更详细的元信息,元信息包括下面这些字段:

夜莺监控机器列表页面

核心要点

  • Target 字段用于在告警事件里携带机器元信息,适合补充机器名、IP、CPU、内存、采集器版本等上下文。
  • 通知模板可以通过 {{.Target.字段名称}} 读取这些信息,并用 {{if .Target}} 避免非机器类告警模板渲染异常。
  • 对机器相关告警来说,把关键机器信息放进通知正文,可以减少值班人员打开多个页面确认告警对象的时间。
  • 本文以钉钉通知为例,其他通知媒介使用同一套模板变量思路。

在告警中添加机器信息

本文主要介绍如何在机器相关的告警通知中展示更丰富的机器信息。配置过程可以拆成三步:确认 Target 可用字段、修改通知模板、验证最终通知内容。

以钉钉通知举例,如果我们想将告警机器的 CPU使用率内存使用率 在告警通知中展示出来,可以按照如下方式配置通知模板。

首先,了解下 Target 字段有哪些内容可以使用,主要有下面这些字段,其中 CpuUtil 是 cpu 使用率,MemUtil 是机器的内存使用率,待会我们编写通知模板的时候,会用到这两个字段。

type Target struct {
    Id           int64         
    GroupId      int64      // 机器所属业务组的 id       
    Ident        string     // 机器的标识     
    Note         string     // 机器的备注 
    Tags         string     // 机器在页面上打的标签,字符串格式
    TagsJSON     []string   // 机器在页面上打的标签,数组格式
    HostTags     []string   // categraf上报的标签,数组格式
    TagsMap      map[string]string  // 机器的所有标签 map 格式
    UpdateAt     int64      // 机器最新的心跳时间
    HostIp       string     // 机器的 ip
    AgentVersion string     // 机器上采集器的版本
    OS           string     // 机器的操作系统
    UnixTime   int64        // 机器的系统时间
    Offset     int64        // 机器和夜莺服务端偏离的时间
    TargetUp   float64      // 机器是否部署了采集器
    MemUtil    float64      // 机器的内存使用率
    CpuNum     int          // 机器的 cpu 核数
    CpuUtil    float64      // 机器的 cpu 使用率
    Arch       string       // 机器的 cpu 架构
}

其次,修改通知模板,完整的通知模版可以参考这里,我们可以在通知模板中增加下面的字段:

{{if .Target}}
- **机器详情**: 
    - 机器名:{{.Target.Ident}} 
    - 内存使用率:{{printf "%.2f" .Target.MemUtil}}
    - CPU使用率:{{printf "%.2f" .Target.CpuUtil}}
{{end}}

备注:如果想使用其他字段,在模板中添加 {{.Target.字段名称}} 即可,比如想要展示机器的 IP 地址,可以添加 机器 IP:{{.Target.HostIp}}

常用字段 含义 通知模板示例
Ident 机器标识 {{.Target.Ident}}
HostIp 机器 IP {{.Target.HostIp}}
CpuUtil CPU 使用率 {{printf "%.2f" .Target.CpuUtil}}
MemUtil 内存使用率 {{printf "%.2f" .Target.MemUtil}}
AgentVersion 采集器版本 {{.Target.AgentVersion}}
TagsMap 机器标签 map {{.Target.TagsMap}}

最后收到的通知内容如下图所示,可以在通知内容中看到机器的内存和 CPU 使用率:

钉钉告警通知截图

常见注意事项

  • 只在机器相关告警里使用 Target 信息;模板里建议保留 {{if .Target}} 判断。
  • 展示数值类字段时,可以用 printf 控制小数位,避免通知内容过长。
  • 通知正文只放排障最需要的信息即可,更多元信息可以通过告警详情页继续查看。

参考链接

FAQ

Q1:为什么要在告警通知里展示机器信息?

机器名、IP、CPU、内存等信息能帮助值班人员先判断告警对象和资源状态,减少在通知、机器列表和告警详情之间来回切换。

Q2:模板中为什么要写 {{if .Target}}

并不是所有告警事件都一定有机器对象。加上判断后,只有存在 Target 时才渲染机器详情,模板更稳妥。

Q3:除了 CPU 和内存,还能展示哪些字段?

可以展示 IdentHostIpAgentVersionOSTagsMap 等字段,具体取决于告警事件里的 Target 内容。

联系我们交流

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云