Search the whole station

服务器监控分享之zabbix篇

随着易观业务发展,公司产品、业务系统逐渐增多。服务器从最早10+到现在150+台,依靠过去人工巡检系统的方式发现故障、潜在风险及安全隐患的方式效率越来越低,且运维人员的工作强度也在不断增加。为了提高发现系统故障的及时性、解决问题的时效性、同时也能把运维人员从重复的工作中解放出来去做更多有意义的事情,因此我们急需引入新的服务器监控手段、运维工具来解决当前的问题。

IT监控工具演进与选择

最早由于服务器较少业务相对较为简单使用iostat、free、netstat、top、pmap等命令就可以查看状态。随着服务器多于20台,此方法耗时耗力最终PASS。

中期使用CACTI对服务器、路由器、交换机进行监控。由于使用标准SNMP协议、对设备的改动很小,配置文件也相对很简单可以大规模的快速部署。并且至今认为CACTI的图形是非常不错的,对常规的监控显示非常的人性化。

CACTI只能使用标准的SNMP协议,在业务复杂需要对监控做一些定制化的需求下(如定制进程、安全监控),逐渐显得力不从心。并且在24小时监控大屏下WEB界面容易退出。

完全监控

由于易观大数据业务的飞速增长与产品的快速迭代,目前业务比较复杂。需要监控系统对HADOOP、SPARK、KAFKA、GREENPLUM、ETL等大数据系统进行定制化监控,对比了主流开源监控系统:如Ganglia、zabbix、Countly进行对比,最终选择zabbix作为易观运维监控平台。

zabbix优点如下:

1、 可以使用Agent,定制型强于CACTI。

2、 配置简单,支持自动发现、脚本批量部署。

3、支持微信公众号API,及时报警。

4、文档完善,活跃的官方社区,更新也比较频繁。

zabbix

安装并与微信整合

关于安装就不在详细描述了,网上有一大推。大家可以体验一下最新的版本,就是6.0版本的设计增加了一些新功能,主体功能都很完备。
微信的整合步骤如下:
1、到qy.weixin.qq.com申请一个公众号
2、在组织架构中开通部门和增加员工,并且记住部门的ID号。
3、发送邀请码发给相关人员。
4、创建一个应用。
5、分配权限,新建管理组。
6、记录管理组对应的CorpID和Secret,API授权需要用到。

7、使用Python的发送脚本安装simplejson 3.8.2tar zxvf simplejson-3.8.2.tar.gzcd simplejson-3.8.2python setup.py buildpython setup.py install下载安装脚本git clone https://github.com/X-Mars/zabbix-Alert-WeChat.gitcp zabbix-Alert-WeChat/wechat.py /etc/zabbix/alertscriptschmod +x /etc/zabbix/alertscripts/wechat.py修改后为(微信公众号的ID)#!/usr/bin/python#_*_coding:utf-8 _*_import urllib,urllib2import jsonimport sysimport simplejsondef gettoken(corpid,corpsecret):    print  gettoken_url    try:        token_file = urllib2.urlopen(gettoken_url)    except urllib2.HTTPError as e:        print e.code        print e.read().decode(“utf8”)        sys.exit()    token_data = token_file.read().decode(‘utf-8’)    token_json = json.loads(token_data)    token_json.keys()    token = token_json[‘access_token’]    return tokendef senddata(access_token,user,subject,content):    send_url = ‘https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=’ + access_token    send_values = {        “touser”:手机号,        “toparty”:”2″,        “msgtype”:”text”,        “agentid”:”1″,        “text”:{            “content”:subject + ‘\n’ + content           },        “safe”:”0″        }#    send_data = json.dumps(send_values, ensure_ascii=False)    send_data = simplejson.dumps(send_values, ensure_ascii=False).encode(‘utf-8’)    send_request = urllib2.Request(send_url, send_data)    response = json.loads(urllib2.urlopen(send_request).read())    print str(response)if __name__ == ‘__main__’:    user = str(sys.argv[1])    subject = str(sys.argv[2])    content = str(sys.argv[3])    corpid =  ‘XXXXXXXXXXX’    corpsecret = ‘XXXXXXXXXXXXXX’    accesstoken = gettoken(corpid,corpsecret)senddata(accesstoken,user,subject,content)
8、zabbix设置微信

添加示警媒介

管理–>示警媒介
名称填写微信报警,类型选择脚本,脚本名称填写wechat.py
图示如下:

附:
微信企业开发者中心接口文档http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5
微信企业号开发者调试工具http://qydev.weixin.qq.com/debug

实现目标

为了保障各个系统平台的稳定运行、快速定位故障、一段时间内的历史运行图表等,建设监控平台的最终目标如下:
1、对服务器进行状态监控,指标如:CPU、ROM、HDD、NET等。
2、对故障及时报警,如邮件、微信。
3、对一段时间内提供运行统计报表,以便为以后故障排查、集群升级等提供数据依据。
4、提供WEB界面。
5、监控功能完备,如:数据库、web服务、进程等。

更多zabbix相关技术分享,可以关注乐维社区:http://forum.lwops.cn/

The prev: The next:

Related recommendations

Expand more!