日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

CDP釘釘告警支持

更新時間:

本章節(jié)將為您介紹設(shè)置CDP釘釘告警的操作流程。

CDP支持多種告警方式,默認(rèn)支持郵件和SNMP告警,這兩種告警模式的具體配置可以參考CDP官網(wǎng)。

除以上兩種告警模式外,CDP還支持自定義告警腳本,當(dāng)集群的健康狀況觸發(fā)告警閾值,就會調(diào)用用戶自定義的告警腳本進(jìn)行告警。?

例如:

您定義的告警腳本為:/opt/cloudera/alert/alert.py

那么在告警時,會調(diào)用:/opt/cloudera/alert/alert.py error.log

將告警信息所在文件的文件名作為第一個參數(shù)傳給告警腳本。

在告警腳本中,您可以對告警內(nèi)容進(jìn)行進(jìn)一步的處理、篩選出重要的信息,然后使用HTTP請求發(fā)送給您的釘釘機(jī)器人,釘釘機(jī)器人再將這些信息轉(zhuǎn)發(fā)到群組中,實現(xiàn)釘釘告警的功能。?

在以上例子簡單說明了釘釘報警的原理,具體操作可參考下述內(nèi)容。

1. 在運維群中創(chuàng)建一個告警機(jī)器人

群組右上角:設(shè)置 -> 智能群助手 -> 添加機(jī)器人 -> 自定義 -> 添加 -> 填寫機(jī)器人信息 -> 完成 -> 將機(jī)器人的Webhook保存下來

說明

  • 在填寫機(jī)器人信息時,需要注意安全設(shè)置 -> 自定義關(guān)鍵詞:只有包含定義的關(guān)鍵詞的消息才會被轉(zhuǎn)發(fā),我們這里定義為CDP alert,用戶可以根據(jù)自己的需要填寫。

  • Webhook地址中包含了釘釘?shù)腢RL以及非常重要的access token:https://oapi.dingtalk.com/robot/send?access_token=xxx

  • 用戶應(yīng)該將access token保存下來,這將在之后的腳本中用到。

image.pngimage.png

2. 編寫告警腳本

在前面的例子已經(jīng)解釋了告警的原理,告警腳本實質(zhì)上是一個中轉(zhuǎn)站,將CDP的告警信息轉(zhuǎn)發(fā)給釘釘機(jī)器人。

這里給了一個示例腳本,在這個腳本中,用戶需要根據(jù)您的釘釘機(jī)器人設(shè)置來修改兩個常量:

  • access_token:需要修改為您的機(jī)器人的Webhook的query參數(shù) access_token的參數(shù)值

  • robot_keyword:需要修改為您在創(chuàng)建機(jī)器人時設(shè)置的自定義關(guān)鍵詞

告警腳本測試好之后可以放到 /opt/cloudera/alert目錄下:

  • 創(chuàng)建 alert 目錄:cd /opt/cloudera; mkdir alert; chown cloudera-scm:cloudera-scm alert

  • 創(chuàng)建 alert 文件:cd /opt/cloudera/alert; touch alert.py; chown cloudera-scm:cloudera-scm alert.py; chmod +x alert.py

  • 將測試好的腳本copy到alert.py文件中

#!/usr/bin/python3
import sys
import urllib.request
import json

MAX_RETRIES = 3
# 需要根據(jù)釘釘群的機(jī)器人webhook進(jìn)行修改
access_token = "xxx"
# 關(guān)鍵詞:關(guān)鍵詞應(yīng)該和釘釘機(jī)器人的自定義關(guān)鍵詞相同,否則不會轉(zhuǎn)發(fā)消息,會返回300錯誤碼
robot_keyword = "CDP alert"


def sent_ding_talk(token: str, alert_content, retry_times: int = 1) -> bool:
    if retry_times > MAX_RETRIES:
        return False
    webhook = "https://oapi.dingtalk.com/robot/send?access_token={}".format(token)
    headers = {'Content-Type': 'application/json'}
    msg = {
        'msgtype': 'text',
        'text': {
            "content": alert_content
        }
    }
    post_data = json.dumps(msg).encode('utf-8')
    req = urllib.request.Request(url=webhook, data=post_data, headers=headers, method='POST')
    response = json.load(urllib.request.urlopen(req))
    if 'errmsg' in response and response['errmsg'] != 'ok':
        sent_ding_talk(token, alert_content, retry_times + 1)
    else:
        return True


def test_send_ding_talk():
    assert sent_ding_talk(access_token, robot_keyword)


if __name__ == '__main__':
    with open(sys.argv[1], 'r') as f:
        errors = json.load(f)
        for error in errors:
            # 告警內(nèi)容中一定要包含在機(jī)器人安全設(shè)置中的自定義關(guān)鍵詞,否則機(jī)器人不會轉(zhuǎn)發(fā)告警內(nèi)容
            alert_content = robot_keyword + ", "
            if error['header']['type'] == 'alert':
                # 需要更多報警信息,可以參照告警的JSON格式:
                # https://docs.cloudera.com/cloudera-manager/7.4.2/monitoring-and-diagnostics/topics/cm-alerts-script.html
                # 選擇感興趣或者關(guān)鍵的字段
                alert_content += "occur time: " + error['body']['alert']['timestamp']['iso8601']
                alert_content += ", alert summary: " + error['body']['alert']['attributes']['ALERT_SUMMARY'][0]
                alert_content += ", alert detail: " + error['body']['alert']['content']
                sent_ding_talk(access_token, alert_content)

3. 在CM界面進(jìn)行配置

Administration -> Alerts -> Custom Alert Script

  • 腳本路徑alert script path:/opt/cloudera/alert/alert.py,配置好之后點擊右下角的Save Changes

  • 點擊右上角的按鈕:Restart this Alert Publisher

  • 等重啟之后,點擊右上角的Send Test Alert

  • 如果一切順利,那么在釘釘群就能收到告警信息了