---
title: "告警通道配置样例 | OceanBase 文档中心"
description: 告警通道配置样例 本文档为您列举常见的告警通道配置样例，供您参考。 钉钉群消息 可以基于钉钉群机器人的 Webhook 实现群消息发送，群机器人介绍参见 钉钉群机器人官方文档 。 配置步骤 在钉钉群中配置机器人。 在钉钉群中配置群机器人，需要记录 Webhook URL。目前钉钉群自定义机器人需要进行安全配置才可以使…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*lJTmRZ61jSUAAAAAAAAAAAAADiGDAQ/original) 云平台 OCPV 3.1.2 企业版

# 告警通道配置样例

更新时间：2023-07-31 10:26:07

本文档为您列举常见的告警通道配置样例，供您参考。

## 钉钉群消息

可以基于钉钉群机器人的 Webhook 实现群消息发送，群机器人介绍参见 [钉钉群机器人官方文档](https://ding-doc.dingtalk.com/doc#/serverapi2/krgddi) 。

### 配置步骤

1. 在钉钉群中配置机器人。

   在钉钉群中配置群机器人，需要记录 Webhook URL。目前钉钉群自定义机器人需要进行安全配置才可以使用，OCP 告警 HTTP 通道仅支持 **自定义关键词** 和 **IP地址（段** ）安全设置。钉钉机器人的安全设置界面如下图所示。![p169307](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8147275261/p292621.png)

      - 设置 **自定义关键词** **。** 设置的自定义关键词和 OCP 告警通道配置的消息模板匹配即可，如果默认模板的第一行内容包含"OCP告警通知"，可以配置自定义关键词为 "OCP告警"。
      - 设置 **IP 地址（段）** **。** 这里需要注意，设置的 IP 地址必须是 OCP 服务器的公网 IP，可使用命令 `curl -w "\n\n" -s http://whatismijnip.nl` 查看服务器公网 IP。由于服务器可能没有固定的公网 IP，请联系您的网络管理员获取服务器的公网 IP 网段。
 2. 在告警通道中新建通道，通道类型选择 **HTTP** ，接收人字段选择 **手机号** ，是否群消息通道勾选 **是** 。
 3. 配置通知内容。
 4. 配置通道

      - 请求方法：POST
      - URL 模板：`Content-Type:application/json; charset=utf-8`

       **说明**

       URL 模板即为步骤 1 中记录的 Webhook URL。
      - Header 模板：`Content-Type:application/json; charset=utf-8`
      - Body 模板

       ```json
       {
         "msgtype": "text",
         "text": {
           "content": ${message_json}
         },
         "at": {
           "atMobiles": ${recipients_json_array},
           "isAtAll": false
         }
       }

       ```

       **说明**

       这里 Body 的格式为 Json，引用 `_json` 和 `json_array` 结尾的变量时，不使用 "（双引号） 括起来，因为变量值已经加了 Json 序列化处理，加上 " 会导致 Json 格式错误。 作为对比，引用非 Json 变量时需要使用 " 括起来，例如 `"{message}"` 。

## 钉钉群消息 markdown 格式

钉钉消息支持 markdown，以下样例借助 markdown 的格式化能力配置富文本消息。 配置方式和文本格式的消息是一样的，差别在于几个模板的配置。 比如通过引用 `${alarm_level_color}` 实现消息字体颜色的配置。

钉钉支持消息类型参见 [钉钉开发文档](https://open-doc.dingtalk.com/microapp/serverapi2/ye8tup#-6)。

- 消息模板

  ```javascript
  <font color=${alarm_level_color}>OCP聚合通知-单条告警</font>
  > - 名称：`${alarm_name}`
  > - 级别：`${alarm_level}`
  > - 告警对象：`${alarm_target}`
  > - 概述：`${alarm_summary}`
  > - 生成时间: `${alarm_active_at}`
  > - 详情：`${alarm_description}`
  > - [到OCP查看](${alarm_url})

  ```
 - 聚合消息模板

  ```javascript
  <font color=${alarm_level_color}>OCP聚合通知-多条告警</font>
  > - 名称：`${alarm_name}`
  > - 级别：`${alarm_level}`
  > - 告警数量：`${alarm_count}`
  > - 聚合分组：`${alarm_group_by}`
  > - 告警对象：`${alarm_target}`
  > - 生成时间:  `${alarm_active_at}`

  ```
 - Body 模板

  ```javascript
  {
      "msgtype": "markdown",
      "markdown": {
          "title": "OCP告警钉钉消息markdown测试",
          "text": ${message_json}
      }
  }

  ```

## 自定义脚本通道

自定义脚本通道，是为了满足特殊的告警对接场景而设计的。一般用于无法通过 HTTP 的方式配置或者对告警格式有特殊要求的场景，您可以在脚本中定制一些特殊的逻辑。比如：告警时间的转换，对第三方告警网关默认参数的添加等，均可以通过自定义脚本通道来实现。

- 基本信息：通道类型选择自定义脚本，其他选项根据具体需求进行选择。
 - 消息模板

  ```javascript
  OCP告警通知-单条告警
  - 名称：${alarm_name}
  - 级别：${alarm_level}
  - 告警对象：${alarm_target}
  - 概述：${alarm_summary}
  - 生成时间：${alarm_active_at}
  - 详情：${alarm_description}
  - OCP链接：${alarm_url}

  ```javascript
  OCP告警通知-多条告警
  - 名称：${alarm_name}
  - 级别：${alarm_level}
  - 告警数量：${alarm_count}
  - 聚合分组：${alarm_group_by}
  - 告警对象：${alarm_target}
  - 生成时间：${alarm_active_at}

  ```
 - 脚本文件名：系统默认有一个自定义脚本样例 `alarm_send_script_demo.sh`，您可以在其基础上进行修改，也可以参考 **Python 脚本示例** 和 **Bash 脚本示例** 新增自定义的脚本。在修改或新增文件时，请确保该脚本文件已存放在每个 OCP 的 `/home/admin` 目录下。
 - 发送测试消息：调试脚本时，可以使用发送测试消息来测试，默认消息内容使用脚本中的变量${message}，请确保该变量在发送的消息体中。由于自定义脚本发送成功的判断逻辑需要视具体情况而定，系统认为只要脚本执行成功，即代表发送成功。不过，在浏览器的开发者模式中，用户可以根据发送测试消息对应的 _test 请求的 Response 内容进行调试。

  ![1738](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4995987361/p358660.png)

### Python 脚本示例

```python
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 注意：脚本内容第一行必须是 shebang 指定执行的程序，只支持 python 和 bash

import os
import sys

def send_alarm():
    """
    可以通过 os.environ 从环境变量获取 告警相关的变量值。
    支持的变量列表参见 《用户指南/附录4 OCP 告警模板变量》。
    """
    message = os.environ['message']
    print("告警消息内容为：{}".format(message))
    with open("./alarm_output.txt", "a") as file_object:
        file_object.write("{}\n".format(message))

def main():
    """
    若发送成功，返回值为 0
    若发送失败，错误输出到 stderr，返回值不为 0
    """
    try:
        send_alarm()
        print("send alarm success")
        return 0
    except Exception as e:
        sys.stderr.write(str(e))
        return 1

if __name__ == "__main__":
    sys.exit(main())

```

### Bash 脚本示例

```bash
#!/bin/env bash

# should contains shebang in first line, only python/bash are supported

echo "Below is a list of alarm paras"

# below variables can be referenced by prefix "$", for example, $alarm_name or ${alarm_name}

echo "alarm_name:$alarm_name"
echo "app_type:$app_type"
echo "alarm_threshold:$alarm_threshold"
echo "alarm_time=$alarm_time"
echo "alarm_last_interval:$alarm_last_interval"
echo "alarm_time:$alarm_time"
echo "alarm_level:$alarm_level"
echo "alarm_type:$alarm_type"
echo "alarm_summary:$alarm_summary"
echo "alarm_url:$alarm_url"
echo "app:$app"
echo "alarm_duration:$alarm_duration"
echo "alarm_status:$alarm_status"
echo "alarm_scope:$alarm_scope"
echo "alarm_active_at:$alarm_active_at"
echo "alarm_target:$alarm_target"
echo "alarm_description:$alarm_description"
echo "message:$message"
echo "receiver:$receiver"
echo "alarm_id:$alarm_id"

# this function defines to how to assembly request by yourself according to your requirements
# this demo shows you how to send alarm to ding ding
function send() {
    # this token is ding ding group token, please apply and assign it to variable token
    token=''
    # URL="https://oapi.dingtalk.com/robot/send?access_token=$token"
    URL=''
    curl -X POST ${URL} -H 'Content-Type: application/json' -d '{"msgtype":"text","text":{"content":"'"${message}"'"}}'
    return $?
}

# invoke function to
send
return $?

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
