---
title: "告警通道配置示例 | OceanBase 文档中心"
description: 告警通道配置示例 本文档为您列举常见的告警通道配置示例，供您参考。 钉钉通道 可以基于钉钉群机器人的 Webhook 实现群消息发送，配置钉钉告警通道需要进行两部分操作： 在接收告警的钉钉群配置机器人。 在 OCP 中配置钉钉通道信息。 配置钉钉群机器人 在 PC 端打开需要接收告警通知的钉钉群。 单击上方菜单栏的 …
---
切换语言

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

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

# 告警通道配置示例

更新时间：2023-08-10 11:45:58

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

## 钉钉通道

可以基于钉钉群机器人的 Webhook 实现群消息发送，配置钉钉告警通道需要进行两部分操作：

- 在接收告警的钉钉群配置机器人。
 - 在 OCP 中配置钉钉通道信息。

### 配置钉钉群机器人

1. 在 PC 端打开需要接收告警通知的钉钉群。
 2. 单击上方菜单栏的 **群设置** 按钮。
 3. 在弹出的面板中单击 **智能群助手 > 添加机器人**。
 4. 在 **群机器人** 弹窗中单击 ![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/ocp/401/%E8%AE%BE%E7%BD%AE%E5%9B%BE%E6%A0%871.png)，选择要添加的机器人。
 5. 单击 **自定义** 机器人，在 **机器人详情** 弹窗中单击 **添加**。
 6. 设置机器人信息，包括 **机器人名字** 及 **安全设置**。

   安全设置包括三种模式：自定义关键词、加签 及 IP 地址段。您可参考 [自定义机器人安全设置](https://open.dingtalk.com/document/robots/customize-robot-security-settings) 根据所需选择一种进行配置，此处以 **自定义关键词** 为例。

   ![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/ocp/401/%E6%B7%BB%E5%8A%A0%E6%9C%BA%E5%99%A8%E4%BA%BA1.png)
 7. 勾选 **我已阅读并同意 《自定义机器人服务及免责条款》**，单击 **完成**。
 8. 在 **添加机器人** 对话框中复制生成的机器人 Webhook 地址，单击 **完成**。

### 配置钉钉通道信息

1. 登录 OCP。
 2. 在左侧导航栏中单击 **系统管理** **>** **告警** 。
 3. 在 **告警通道** 页签单击 **新建通道** 。
 4. 配置通道 **基本信息**。

   | 参数 | 说明 |
   | --- | --- |
   | 通道类型 | 选择 **钉钉**。 |
   | 通道名 | 告警通道的名称， |
   | Webhook 地址 | 配置钉钉机器人后生成的 Webhook 地址，即 **配置钉钉群机器人** 中 **步骤 8** 复制的地址。 |
   | 签名密钥 | 可选填。在钉钉机器人安全设置时，选择 **加签** 模式后所获取的签名密钥字符串。 |
   | 指定用户 | 可选填。钉钉群成员的手机号码。 |
   | 代理 | 可选填。请填写发送告警信息的代理，格式为 `http:ip:port` 。其中， ip 为代理服务器的 IP，port 为发送告警使用的端口。 若代理服务器的 IP 为 xxx.xxx.xxx.xxx，规划使用 80 端口发送告警消息，则可配置为 `http:xxx.xxx.xxx.xxx:80` 。 |

   ![2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/ocp/401/%E9%92%89%E9%92%89%E9%80%9A%E9%81%93%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF1.png)
 5. （可选）配置通道告警消息。

   钉钉消息支持 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}
          }
      }
      ```

      ![3](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/ocp/401/%E9%92%89%E9%92%89%E6%B6%88%E6%81%AF%E9%85%8D%E7%BD%AE1.png)

   ```
 6. 单击 **发送测试消息**，测试告警是否发送成功。
 7. 如果发送成功，可单击 **提交**。

## 自定义脚本通道

自定义脚本通道，是为了满足特殊的告警对接场景而设计的。一般用于无法通过 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 json
import requests
import os
import sys

ACCESS_TOKEN = "Ding Talk Token"

def send_alarm():
    """
    可以通过 os.environ 从环境变量获取 告警相关的变量值。
    支持的变量列表参见 《用户指南/附录4 OCP 告警模板变量》。
    """
    message = os.environ['message']
    data = {
        "msgtype": "markdown",
        "markdown": {
            "text": message
        }
    }
    resp = requests.post("https://oapi.dingtalk.com/robot/send?access_token=" + ACCESS_TOKEN, json=data)
    resp.close()
    response = json.loads(resp.text)

    # 将返回结果输入到标准错误（stderr）或标准输出（stdout），会被用于验证告警是否发送成功，优先验证stderr。
    if not response['errcode'] == 0:
        sys.stderr.write(resp.text)
    else:
        print(resp.text)

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

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

```

### Bash 脚本示例

```bash
#!/usr/bin/env bash

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

# 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='Ding Talk Token'
    URL="https://oapi.dingtalk.com/robot/send?access_token=$token"

    # if message is json format, use "'"${message}"'" or "${message}", do not wrapper a new json body
    # if message is not json format, use "${message}"
    # do not use '${message}'
    # print the response to stderr or stdout, which will be validated if success, validate stderr firstly.
    curl -s -X POST ${URL} -H 'Content-Type: application/json' -d '{"msgtype":"text","text":{"content":"'"${message}"'"}}'

    return $?
}

# invoke function to
send

```

#### 说明

目前支持的 Shebang 包括 python、bash、sh、/bin/bash、/bin/sh、/usr/bin/python、/usr/bin/bash、/usr/bin/env python 和 /usr/bin/env。 bashShebang 的正确写法为 `#!/bin/sh`，推荐使用 `#!/usr/bin/env bash` 这种写法，执行时会去 $PATH 中找第一个符合的命令来执行。

  上一篇 下一篇 ![有帮助](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) 咨询热线
