---出自《分布式监控平台Centreon最佳实践》

众所周知,钉钉机器人依赖于钉钉群组,发送告警信息全部组员都能收到。将数据库管理员加入到系统管理员组,接受大量与数据库工作无关的告警信息,这将是一个很糟糕的策略,因为数据库管理员仅仅关心数据库的运行状态。解决这个问题的思路是:为不同的用户创建不同的钉钉群组,并把不同的联系人与不同的钉钉群组相关联。

 

创建钉钉群组

 

钉钉客户端(电脑或者手机)点界面上的加号“+”,选择建立普通群,添加好成员。

Centreon多用户钉钉机器人报警_Centreon

钉钉群至少需要加入两个成员(创建人除外),只有一个成员咋办?先拉起三个,创建好之后再删除不需要的那个成员。给钉钉群起一个容易辨识的名字,故障告警的时候,能快速地位问题所在(每个用户可能有多个钉钉群)。

 

创建自定义钉钉群组机器人

 

创建详细步骤请参见第六章的相关内容,复制机器人创建过程中生成的Webhook字符串。

Centreon多用户钉钉机器人报警_Linux_02

 

创建钉钉机器人调用脚本

 

登录Centreon系统,在命令行下可以直接复制已经创建好的脚本文件/usr/bin/ding.py,命名为/usr/bin/dba_ding.py然后修改“api_url”等号后边的字符串值,把前一个步骤生成的Webhook字串值直接复制进去。可以创建多个机器人告警调用脚本,根据需求,把这些脚本关联到相应的Centreon联系人。

[root@mon172 bin]# more /usr/bin/dba_ding.py 
#!/usr/bin/python
     
import requests
import json
import sys
import os
     
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=5e496d14825acdf7d26e20fc8b2f9543844199c9b5aeb2095d2adfd4
0cf9313c"
     
def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                 "18801028188"
            ],
            "isAtAll": False
        }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content
         
if __name__ == '__main__':
   text = sys.argv[1]
   msg(text)

保存好脚本,并给予可执行权限,再命令行测试能否发生钉钉消息。

[root@mon172 bin]# /usr/bin/dba_ding.py "this is new rebot"
{"errcode":0,"errmsg":"ok"}

执行完毕,钉钉客户端应该收到信息,表明脚本正确无误。

Centreon多用户钉钉机器人报警_Nagios_03

 

Centreon Web管理后台创建通知命令

 

登录Centreon Web管理后台,复制“host-notify-by-ding”及“service-notify-by-ding”。

Centreon多用户钉钉机器人报警_分布式监控_04

复制出来的副本”host-notify-by-ding-1”改名为“host-notify-by-dba-ding”,内容上的修改如下图所示:

Centreon多用户钉钉机器人报警_服务器_05

另一个副本”notify-service-by-ding-1”改名为”notify-service-by-dba-ding”,内容上的修改如下图所示:

Centreon多用户钉钉机器人报警_Centreon_06

 

创建联系人并关联钉钉

 

钉钉机器人通知调用,即可以与新建联系人关联,也可以与已经存在的联系人相关联。一个通知调用可以与多个联系人关联,一个联系人也可以关联多个钉钉通知调用。

Centreon多用户钉钉机器人报警_服务器_07

接上图。

Centreon多用户钉钉机器人报警_分布式监控_08

 

联系人/用户附属到主机或者服务

 

Centreon Web管理后台,选定所需的服务项。

Centreon多用户钉钉机器人报警_Nagios_09

点击页面顶部菜单按钮“Notification”,关联联系人/用户“tian”。

Centreon多用户钉钉机器人报警_Nagios_10

保存是设置生效,输出poller并重载Centreon引擎。

 

模拟故障,查看钉钉客户端,看是否只有指定钉钉群收到机器人告警信息。