CMDB机柜平台结合zabbix告警展示
前段时间看了刘天斯老师的机柜展示平台,非常绚丽,而且有大屏显示的话也是能够体现运维价值的。刚好最近自己也在协助朋友做一个开源的CMDB平台,这里就说下我们CMDB平台的一些数据:
开源项目地址:GitHub - roncoo/roncoo-cmdb 欢迎有兴趣的朋友一起参与改进!
CMDB数据:
机房,机柜,机柜电源,机柜位置,机房合同,合同到期时间,机房联系人。
服务器,CPU,硬盘,是否虚拟化,宿主机,raid类型,内存。
资产ID,上架日期,下架记录,服务器代理商,代理商联系方式,服务器到保日期。
IP地址,MAC地址,业务线,产品线,操作系统。
通信这块主要技术json-rpc,然后提供Api接口给程序调用,按照固定格式导入即可;硬件固定信息,如IP,MAC,硬盘等信息,通过自动采集的API POST方式加入到数据表。像机房信息,机柜之类的可以给机房抄送一份excel表格然后直接导入即可。
机房服务器展示:通过把刘天斯老师机柜暂时平台的前端拿过来,然后结合到表结构里面展示;在故障告警的时候,留有一个告警接口的API,通过zabbix 把告警数据发送到运维平台;运维平台入库告警展示:下面是前端简单展示效果,具体操作如下:
前端机柜生成效果显示:闪烁效果直接获取厂商的gif文件调用即可,机柜命名方式比如下面的:5-6,5-7就分别表示第五排第六,第七个机柜:
上面是正常显示,当出现故障时候:就结合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>
CMDB机柜平台结合zabbix告警展示的更多相关文章
- zabbix告警推送至个人微信
文章原文 自从接触zabbix后,就一直想着怎么才能把告警推送到个人微信上.有这样的想法主要是个人微信的使用频率远远要比钉钉,企业微信,邮箱,飞书等使用频率要高.比如我,就遇到过在周末的时候,因为没有 ...
- 通过微信服务号推送Zabbix告警
近期看到一篇通过微信实现Zabbix告警的文章,但实践时发现,无法成功发送消息. 分析原因,应该是微信公众平台加强了登录验证,在登录时会需要管理员进行扫描二维码操作才能成功登陆后台: 而之前文章中的A ...
- 一个简单好用的zabbix告警信息发送工具
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- [置顶]
个人微信号发送zabbix告警信息
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- [置顶]
一个简单好用的zabbix告警信息发送工具
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- zabbix 告警实践分享 一键实现zabbix 电话、邮件、微信告警
众所周知Zabbix 是一款用来监控IT基础设施的监控套件,同时也具有很多方便运维人员使用的优秀功能,如:支持多条件告警,支持多种告警方式,支持多组模板.支持模板继承,因此在众多的开源运维监控软件中独 ...
- zabbix 告警小试
zabbix 告警小试 1. 实验内容简述 本次实验,旨在通过zabbix监控,实现对告警信息的实时通知,主要用到了zabbix中的item.trigger.action.user.user grou ...
- zabbix告警邮件美化
为了更好的用户体验,我们需要尽量美化我们的输出内容,尽量做到整齐划一,让人看了会有很舒服的感觉, 这个好像和苹果的产品一样,给人一种美感让人感觉非常享受. 一般我们的zabbix告警邮件就是纯文字,建 ...
- zabbix告警邮件、短信发送错误快速排查方法
zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...
随机推荐
- PHP用memcached做实时分页
用memcached做分页缓存,可能很多人会觉得麻烦而不用.因为在增加.修改.删除的过程中,你不知道会影响到哪些数据,而如果把所有分页相关的数据缓存都删除并重新生成一遍,实现又很麻烦,甚至不可行,所以 ...
- 基于 Redis 数据累计的实现
需求:对上传文件进行统一编号,以 xxx-YYYYmmdd-000001为编码格式,其中YYYYmmdd为当天传的日期. 技术方案:redis,get,set,incr,expireAt即可实现. p ...
- word中几个好用的宏代码(立方米上标、关闭样式自动更新、删除无效样式、表格加粗边框、宋体引号)
Sub 替换立方米() With Selection.Find .Text = "m3" .Replacement.Text = "mm3" .Forward ...
- 怎么利用ultraISO对一个文件夹制作ISO镜像
1. 运行UltraISO软件,选择好需要转换成ISO的文件,直接拖到UltraISO的界面中. 2.点击“另存为”按钮,选择存放路径并写上ISO文件的名称,文件保存类型选择为ISO格式,点击“保存” ...
- AppStore IPv6-only审核被拒原因分析及解决方案-b
自2016年6月1日起,苹果要求所有提交App Store的iOS应用必须支持IPv6-only环境,背景也是众所周知的,IPv4地址已基本分配完毕,同时IPv6比IPv4也更加高效,向IPv6过渡是 ...
- 安装app到Simulator
1.安装brew 打开命令行,执行以下命令: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...
- Error Code: 1064 – You have an error in your SQL syntax解决几个方法
本文转自 http://www.anyiwa.com/?p=1066 Error Code: 1064 – You have an error in your SQL syntax解决几个方法 十一月 ...
- python is == 的区别
要点: is 判断是否是同一个对象.是通过id来判断的 == 是通过值来判断的 为了提高内存利用率对一些简单的对象,如一些数值较小的int对象,python采用重用对象内存的方法 例如指向 ...
- Java多线程初学者指南(8):从线程返回数据的两种方法
从线程中返回数据和向线程传递数据类似.也可以通过类成员以及回调函数来返回数据.但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪. 一.通过类变量和方法返回数据 使用这种方法返回数 ...
- hdu 4435
一道枚举+搜索题: 很容易看出这道题目要求尽量不在大的城市里面建加油站: 所以从最大的城市开始枚举! 代码: #include<cstdio> #include<cmath> ...