夜莺短信告警教程

夜莺监控(Nightingale)已经内置支持了邮件、钉钉、飞书、企微等多种通知机制,但是没有内置支持电话、短信等方式,是因为邮件、钉钉、企微、飞书等方式是协议固定的,但是电话、短信的通知方式,各家不同,一个是短信通道供应商不同,一个是各家封装的电话、短信接口不同,所以夜莺没有内置支持。

不过好在夜莺支持通过自定义脚本的方式对接新的通知媒介,只要你会写脚本,就可以接入任何通知媒介,电话、短信自然也不在话下。本文会以短信通知为例,讲解个中原理和配置方式。

告警通知这块,不仅仅是把告警消息投递出去,还需要告警降噪、按规则分派、排班、认领、升级、和 IM 打通、统计分析等更多诉求,我们建议您使用 FlashDuty 来作为一站式告警 OnCall 响应平台,可以对接 Nightingale、Prometheus、Zabbix、各类云监控,把众多监控系统的告警集中到一个中心平台来处理,提升告警处理效率。当然,也省去了您编写脚本的麻烦。

1. 增加短信通知媒介

菜单位置:告警通知-通知设置-通知媒介。点击下面的添加,增加一个新的通知媒介,名称就叫“短信”即可,标识就叫“sms”即可,如下图所示:

增加短信通知媒介

增加通知媒介之后,在告警规则的配置页面,就可以勾选“短信”这个通知媒介了,如下图所示:

告警规则出现短信通知媒介

2. 编写短信通知模板

每一种通知媒介,都有对应的通知模板,啥意思呢?告警事件原本的格式是一条大 JSON,显然没法直接发出去,通过邮件发的时候要把这个 JSON 中的重要字段提取出来拼成 HTML 格式的邮件,发钉钉的时候要把这个 JSON 中的重要字段提取出来拼成 markdown 格式的消息,发短信的时候也是一样,要把这个 JSON 中的重要字段提取出来拼成短信的格式。

短信一般是普通文本字符串,有长度限制,咱们尽量只放重要内容,比如告警标题、告警内容、告警级别、告警时间等等,不要放太多无关紧要的信息,因为短信费用是按字数算的。

短信通知模板

菜单入口在:告警通知-通知模板,创建一个短信模板,标识姑且也叫 sms,内容就是你想要发送的短信内容,比如:

**级别状态**: {
  
  {if .IsRecovered}}S{
  
  {.Severity}} Recovered{
  
  {else}}S{
  
  {.Severity}} Triggered{
  
  {end}}   
**规则标题**: {
  
  {.RuleName}}
**监控指标**: {
  
  {.TagsJSON}}
{
  
  {- if not .IsRecovered}}   
**触发时值**: {
  
  {.TriggerValue}}
{
  
  {- end}}   
**发送时间**: {
  
  {timestamp}}

这个内容是可以自定义的,遵从 go template 语法,你可以参考其他的模板学习具体的写法。

n9e 的进程在调用通知脚本的时候,会把告警事件作为变量传给各个通知模板,进而渲染出最终的通知内容,然后把渲染结果+事件详情传给脚本,脚本中就可以直接取用了,无需再去处理模板渲染逻辑。

3. 编写短信通知脚本

夜莺告警的时候,可以自动调用通知脚本,你就在通知脚本里写你的逻辑就可以了。脚本需要先启用,菜单入口:告警通知-通知设置-通知脚本,如下图:

通知脚本

我这里设置为启用,超时时间 10s,然后贴了一段脚本内容,内容如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import sys
import json

class Sender(object):
    @classmethod
    def send_email(cls, payload):
        # already done in go code
        pass

    @classmethod
    def send_wecom(cls, payload):
        # already done in go code
        pass

    @classmethod
    def send_dingtalk(cls, payload):
        # already done in go code
        pass

    @classmethod
    def send_feishu(cls, payload):
        # already done in go code
        pass

    @classmethod
    def send_mm(cls, payload):
        # already done in go code
        pass

    @classmethod
    def send_sms(cls, payload):
        users = payload.get('event').get("notify_users_obj")
        phones = {
   
   }
        for u in users:
            if u.get("phone"):
                phones[u.get("phone")] = 1
        if phones:
            print("send_sms not implemented, phones: {}".format(phones.keys()))

    @classmethod
    def send_voice(cls, payload):
        users = payload.get('event').get("notify_users_obj")
        phones = {
   
   }
        for u in users:
            
### 夜莺监控系统告警模板使用说明 夜莺监控系统的告警模板主要用于定义告警消息的内容格式,以便在触发告警时能够清晰地传递相关信息给接收者。以下是关于夜莺监控系统告警模板的相关信息和配置示例。 #### 1. 告警模板的作用 告警模板的主要作用是自定义告警通知的消息内容,使得不同场景下的告警可以更贴合实际需求。通过设置不同的字段和变量,可以在告警消息中展示更多有用的信息[^3]。 #### 2. 告警模板的结构 告警模板通常包括以下几个部分: - **标题**:用于描述告警的核心信息,便于快速识别。 - **正文**:详细描述告警的具体内容,可能包含触发条件、触发时间、影响范围等。 - **附加信息**:可选部分,提供一些辅助信息,比如如何处理该告警、联系谁等。 #### 3. 配置告警模板的方法 夜莺支持多种方式来配置告警模板,主要分为两种途径: ##### (1) Web界面配置 登录到夜莺监控系统的Web管理页面,在告警配置模块下找到“告警模板”选项,点击新增或编辑按钮即可进入模板编辑页。在此处可以直接输入模板内容并保存。 ##### (2) YAML文件配置 如果希望通过批量导入或其他自动化工具完成配置,也可以编写YAML格式的配置文件。以下是一个简单的YAML示例: ```yaml template_name: "K8S Volume Full Alert" title_template: "[{{ .Level }}] {{ .RuleName }} on Cluster {{ .Cluster }}" content_template: | Rule Name: {{ .RuleName }} Description: {{ .Note }} Instance: {{ .Instance }} Namespace: {{ .Namespace }} Trigger Time: {{ .TriggerTime }} Value: {{ .Value }} ``` 此示例中的`{{ .VariableName }}`表示动态替换的实际数据值,这些占位符会在告警发生时被具体的数值替代[^3]。 #### 4. 特殊注意事项 - 如果希望多个集群之间的调用链路打通,则需确保每条告警事件都有唯一的`ident`标签作为标识[^3]。 - 在某些情况下,目标机器还需存在于数据库的目标表(`targets`)中才能正确关联告警上下文。 #### 5. 实际应用案例 假设我们需要针对CPU利用率过高创建一条告警,并定制其模板内容。具体操作如下: - 定义规则为 `cpu.usage_user >= 90`; - 编辑对应的告警模板为: ```text Title: High CPU Usage Detected Content: Hostname: {{ .Hostname }} Metric: cpu_usage_user Current Value: {{ .Value }} Threshold: 90% Occurred At: {{ .TriggerTime }} ``` 这样每当某台主机的用户态CPU占用率超过90%时,就会按照上述模板发送详细的告警通知[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜莺开源监控

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

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

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

打赏作者

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

抵扣说明:

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

余额充值