監控報警是每一個運維人員面臨的問題,而報警方式更是多樣化,從原來的人肉報警,飛信,139郵箱,短信貓,短信接口,微信報警,語言報警.帶內,帶外的都有
python
起初咱們把報警方式整合了一塊兒,經過一個HTTP接口方式報警,監控工具也是多樣化,nagios,zabbix,自定義腳本,並且每次寫接收報警人的時候都須要找他的電話號碼....痛定思痛,我決定從新設計.
ios
一.發送報警shell
URL:http://alarm.ops.xxx.cn/send/bash
方法: POST,GET微信
參數:運維
鍵 | 值 | 描述 |
to | @dba 或 zhangsan 多個收件人使用英文逗號分隔(,) 必填 | 能夠發送給dba組,或者 張三 單獨一我的 |
msg | "10.1.1.1 http is error " 必填 | 報警信息,須要url編碼 |
type | sms 或者 wechat 選填 若是不加爲隨機 | 指定報警方式, sms短信 wechat微信 |
GET 請求方式舉例curl
Python 代碼ide
#!/usr/bin/python #coding=utf-8 import urllib import urllib2 msg = "hello world" msg = urllib.quote(msg) #URL編碼 res = urllib2.urlopen("http://alarm.ops.xxx.cn/send/?to=zhangsan&msg=%s&type=sms" % msg) #發給單用戶張三 print res.read() res.close()
shell 代碼工具
#!/bin/bash msg="hello world" #定義報警信息 msg=$(echo $msg|sed 's/ /%20/g') #URL編碼空格轉換爲%20 curl "http://alarm.ops.xxx.cn/send/?to=zhangsan&msg=${msg}&type=sms" #發給單用戶張三 curl "http://alarm.ops.xxx.cn/send/?to=@dba&msg=${msg}&type=sms" #發給DBA組全部成員
成功返回:編碼
OK
錯誤返回爲JSON:
例如:
{
msg: "user wanger not found",
code: "-2"
}
二.獲取用戶信息
URL: http://alarm.ops.xxx.cn/user/<username>/
方法: GET
參數: URI三級目錄的名稱
例如: http://alram.ops.xxx.cn/user/zhangsan/ #查看張三信息
返回:
{
message: "成功",
code: 0,
data:- {
username: "zhangsan",
wechat: "zhangsan655",
first_name: "張三",
sms: "13422211123",
id: 2
}
}
三. 獲取組信息
URL:http://alarm.ops.xxx.cn/group/<groupname>/
方法: GET
參數: URI三級目錄的名稱
例如: http://alarm.ops.xxx.cn/user/sa/ #查看sa組人員名單
返回:
{
message: "成功",
code: 0,
data:- {
username: "張三 王五 趙六 "
}
}
整個系統爲Python+Django編寫