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>

相關文章
相關標籤/搜索