OceanBase 集成指引
title: "OceanBase告警事件"
description: "通过 webhook 的方式同步OceanBase告警事件到快猫星云,实现告警事件自动化降噪处理"
date: "2024-05-23T10:00:00+08:00"
url: "https://docs.flashcat.cloud/zh/flashduty/oceanbase-integration-guide"
通过 webhook 的方式同步OceanBase告警事件到快猫星云,实现告警事件自动化降噪处理
在 Flashduty
您可通过以下2种方式,获取一个集成推送地址,任选其一即可。
使用专属集成
当您不需要将告警事件路由到不同的协作空间,优先选择此方式,更简单。
展开
- 进入 Flashduty 控制台,选择 协作空间,进入某个空间的详情页面
- 选择 集成数据 tab,点击 添加一个集成,进入添加集成页面
- 选择 OceanBase 集成,点击 保存,生成卡片。
- 点击生成的卡片,可以查看到 推送地址,复制备用,完成。
使用共享集成
当您需要根据告警事件的 Payload 信息,将告警路由到不同的协作空间,优先选择此方式。
展开
- 进入 Flashduty 控制台,选择 集成中心=>告警事件,进入集成选择页面。
- 选择 OceanBase 集成:
- 集成名称:为当前集成定义一个名称。
- 点击 保存 后,复制当前页面的新生成的 推送地址 备用。
- 点击 创建路由,为集成配置路由规则。您可以按条件匹配不同的告警到不同的协作空间,也可以直接设置默认协作空间作为兜底,后续再按需调整。
- 完成。
在 OceanBase
## 一、OceanBase告警推送配置
步骤1:配置告警通道
- 登录您的OceanBase控制台,选择告警中心。
- 进入告警通道 ,单击新建通道按钮,开始新建。
- 通道类型选择 自定义脚本 。
- 基本配置内容,如下图所示:
- 配置通道中复制以下脚本内容,同时请将脚本中的 integration_key 参数补充上 FlashDuty 推送地址中的 integration_key 值。
#!/usr/bin/env bash
function sendToFlashDuty() {
URL="${address}/event/push/alert/standard?integration_key=${integration_key}"
curl -s -X POST ${URL} -H 'Content-Type: application/json' -d '{
"event_status": "'${alert_level}'",
"alert_key": "'${alarm_id}'",
"description": "'"${alarm_description//\"/\\\"}"'",
"title_rule": "$app_types::$name::$alarm_targets",
"event_time":'${timestamp}',
"labels": {
"app_types":"'${app_type}'",
"id":"'${alarm_id}'",
"name":"'${alarm_name}'",
"alarm_level":"'${alarm_level}'",
"alarm_status":"'${alarm_status}'",
"alarm_active_at":"'${alarm_active_at}'",
"alarm_threshold":"'${alarm_threshold}'",
"alarm_type":"'${alarm_type}'",
"alarm_targets":"'${alarm_target}'",
"ob_cluster_group":"'${ob_cluster_group}'",
"ob_cluster":"'${ob_cluster}'",
"hostIP":"'${host_ip}'",
"app_cluster":"'${app_cluster}'",
"alarm_description":"'"${alarm_description//\"/\\\"}"'",
"alarm_url":"'${alarm_url}'"
}
}'
return $?
}
alarm_name=$(echo ${alarm_name} | sed "s/ /_/g")
alarm_target=$(echo ${alarm_target} | sed "s/ /_/g")
#使用告警更新时间作为告警产生时间
timestamp=$(TZ=UTC date -d "${alarm_updated_at}" +%s)
#OceanBase告警通知的状态和级别是中文,所以先转Md5,再做判断
levelMd5=$(echo ${alarm_level} | md5sum | awk '{print$1}')
statusMd5=$(echo ${alarm_status} | md5sum | awk '{print$1}')
#状态Md5
active="048d106318302b41372b4292b5696ad4"
Inactive="bf7da164d431439fe9668fbc964110c4"
#告警级别Md5
down="2e1558b0a152fae2dd15884561b1508d"
critical="59b9b38574ca2ee4f5e264b56f49a83f"
alert="723931b03a5d1cec59eac40cf0703580"
caution="abf4d55ba8926eff32cb44065e634ed3"
info="6aae3f4254789d72aa0cc8ed55b8f11f"
address="https://api.flashcat.cloud"
integration_key=""
#将OceanBase的告警级别定义做转换
if [[ ${statusMd5} == ${Inactive} ]];then
alert_level="Ok"
timestamp=$(TZ=UTC date -d "${alarm_resolved_at}" +%s)
elif [[ ${statusMd5} == "${active}" ]];then
if [[ ${levelMd5} == ${down} || ${levelMd5} == ${critical} ]];then
alert_level="Critical"
elif [[ ${levelMd5} == ${alert} ]];then
alert_level="Warning"
elif [[ ${levelMd5} == ${caution} || ${levelMd5} == ${info} ]];then
alert_level="Info"
fi
fi
#只有状态是告警中或恢复告警才发通知,屏蔽或抑制的不发通知
if [[ ${statusMd5} == ${active} || ${statusMd5} == ${Inactive} ]];then
sendToFlashDuty
fi
- Response 校验信息填写 {} 即可。
- 消息配置中的告警消息格式选择 Markdown。
- 告警消息模板 选择简体中文,并填写以下内容并提交。
OCP告警通知-单条告警
- 告警ID: ${alarm_id}
- 名称:${alarm_name}
- 级别:${alarm_level}
- 告警对象:${alarm_target}
- 服务: ${service}
- 概述:${alarm_summary}
- 生成时间:${alarm_active_at}
- 更新时间: ${alarm_updated_at}
- 恢复时间:${alarm_resolved_at}
- 详情:${alarm_description}
- 状态: ${alarm_status}
- 告警类型: ${alarm_type}
- 告警阈值: ${alarm_threshold}
- 集群组: ${ob_cluster_group}
- 集群: ${ob_cluster}
- 主机: ${host_ip}
- 应用集群: ${app_cluster}
- OCP链接:${alarm_url}
步骤2:配置告警推送
- 新建推送配置,路径:告警中心=>告警推送=>新建推送配置。
- 推送类型、指定对象按需配置即可。
- 推送语言选择 简体中文。
- 告警通道选择 FlashDuty 。
- 开启 恢复通知。
- 提交。
二、状态对照
OceanBase | 快猫星云 | 状态 |
---|---|---|
停服 | Critical | 严重 |
严重 | Warning | 严重 |
警告 | Warning | 警告 |
注意 | Info | 提醒 |
提醒 | Info | 提醒 |
状态对照
OceanBase | 快猫星云 | 状态 |
---|---|---|
停服 | Critical | 严重 |
严重 | Warning | 严重 |
警告 | Warning | 警告 |
注意 | Info | 提醒 |
提醒 | Info | 提醒 |
修改于 4 个月前