CMDB机柜平台结合zabbix告警展现

前段时间看了刘天斯老师的机柜展现平台,很是绚丽,并且有大屏显示的话也是可以体现运维价值的。恰好最近本身也在协助朋友作一个开源的CMDB平台,这里就说下咱们CMDB平台的一些数据:前端


开源项目地址:GitHub - roncoo/roncoo-cmdb 欢迎有兴趣的朋友一块儿参与改进!python


CMDB数据:jquery

机房,机柜,机柜电源,机柜位置,机房合同,合同到期时间,机房联系人。git

服务器,CPU,硬盘,是否虚拟化,宿主机,raid类型,内存。github

资产ID,上架日期,下架记录,服务器代理商,代理商联系方式,服务器到保日期。json

IP地址,MAC地址,业务线,产品线,操做系统。后端

通讯这块主要技术json-rpc,而后提供Api接口给程序调用,按照固定格式导入便可;硬件固定信息,如IP,MAC,硬盘等信息,经过自动采集的API POST方式加入到数据表。像机房信息,机柜之类的能够给机房抄送一份excel表格而后直接导入便可。api

机房服务器展现:经过把刘天斯老师机柜暂时平台的前端拿过来,而后结合到表结构里面展现;在故障告警的时候,留有一个告警接口的API,经过zabbix 把告警数据发送到运维平台;运维平台入库告警展现:下面是前端简单展现效果,具体操做以下:
v2-fabb89cec7157a9b6fda3c8e059c6900_b.pn服务器

前端机柜生成效果显示:闪烁效果直接获取厂商的gif文件调用便可,机柜命名方式好比下面的:5-6,5-7就分别表示第五排第六,第七个机柜:
v2-ef95c015ee198155386b92e1f766a8bc_b.pnapp

上面是正常显示,当出现故障时候:就结合zabbix 告警脚本,发送过去给接口,故障以下:

v2-f632500a42406176eba78db55fcdda5c_b.pn

鼠标移动到机柜就显示服务器的相关信息:
v2-b08fed283cc1aaf979c0c06c3380dcba_b.pn

zabbix 的告警脚本而且发送状态到运维平台,而且更改服务器状态:
v2-1f8b64fd4d7fd97b91eb893d5e38aa67_b.pn

[root@controller alertscripts]# cat zabbix_alert.py

#!/usr/bin/python

#coding:utf-8

import requests,json

import smtplib

from email.mime.text import MIMEText

import sys

#邮箱服务器地址

mail_host = 'smtp.163.com'

#邮箱用户名

mail_user = 'xxxxx@163.com'

#邮箱密码

mail_pass = 'xxxxxx123456'

mail_postfix = '163.com'

def send_mail(to_list,subject,content):

me = mail_user+"

msg = MIMEText(content)

msg['Subject'] = subject

msg['From'] = me

msg['to'] = to_list

try:

s = smtplib.SMTP()

s.connect(mail_host)

s.login(mail_user,mail_pass)

s.sendmail(me,to_list,msg.as_string())

s.close()

return True

except Exception,e:

print str(e)

return False

def alert(message):

headers = {"Content-Type": "application/json"}

data = {}

res = {}

data['status'] = message

res['params']=data

res['jsonrpc'] = "2.0"

res["id"] = 1

res["method"]= "alert.turn"

url = ""

r = requests.post(url, headers=headers,json=res)

if __name__ == "__main__":

send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

alert(sys.argv[2])

后端返回状态改变以后直接入库修改,我这边只是判断是否主题是PROBLEM或者OK:

前端代码能够按照刘天斯老师的而后本身修改为jquery便可,前端能够去自由发挥,以下简单样例:

<table border="0" cellpadding="1" cellspacing="0" height="440" width="99%">

<tbody><tr>

<td class="jgtable" align="center" height="30" valign="bottom"><font class="jgtitle">01</font></td></tr>

<td class="jgtable" align="center" height="30" valign="bottom">&nbsp;

</td>

</tr>

<tr>

<td class="jgtable" align="center" height="30" valign="bottom">&nbsp;

</td>

</tr>

<tr>

<td class="jgtable" align="center" height="30" valign="bottom">&nbsp;

</td>

</tr>

<tr>

<td class="jgtable" align="center" height="30" valign="bottom">&nbsp;

</td>

</tr>

<tr>

<td class="jgtable" align="center" height="30" valign="bottom">&nbsp;

</td>

</tr>

</tbody></table>

相关文章
相关标签/搜索