前段時間看了劉天斯老師的機櫃展現平臺,很是絢麗,並且有大屏顯示的話也是可以體現運維價值的。恰好最近本身也在協助朋友作一個開源的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 把告警數據發送到運維平臺;運維平臺入庫告警展現:下面是前端簡單展現效果,具體操做以下:服務器
前端機櫃生成效果顯示:閃爍效果直接獲取廠商的gif文件調用便可,機櫃命名方式好比下面的:5-6,5-7就分別表示第五排第六,第七個機櫃:app
上面是正常顯示,當出現故障時候:就結合zabbix 告警腳本,發送過去給接口,故障以下:
鼠標移動到機櫃就顯示服務器的相關信息:
zabbix 的告警腳本而且發送狀態到運維平臺,而且更改服務器狀態:
[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 = "http://192.168.63.216:2000/api"
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">
</td>
</tr>
<tr>
<td class="jgtable" align="center" height="30" valign="bottom">
</td>
</tr>
<tr>
<td class="jgtable" align="center" height="30" valign="bottom">
</td>
</tr>
<tr>
<td class="jgtable" align="center" height="30" valign="bottom">
</td>
</tr>
<tr>
<td class="jgtable" align="center" height="30" valign="bottom">
</td>
</tr>
</tbody></table>