前言zabbix是一个基于WEB界面的提供分布式系统监控以及网络监视功能的企业级开源解决方案。zabbix能监视各种网络参数,保证服务系统的安全运营,并提供柔软的通知机制以快速定位/解决存在的各种问题,是系统运维的常用神器之一。 两周前,向老板提出自己的一个建议,想在我们自己的开发测试环境里,搭建一套zabbix系统,把Local的环境监控起来。之所以有这个想法,主要基于以下几点:
以前利用闲暇时间了解和简单用过Nagios,因为没有项目作支撑,没有深入研究,但对于系统监控有个基本的了解。这次研究和搭建zabbix基本没有花太多的时间。半天时间zabbix的安装和部署。一个星期不到完成zabbix的学习,项目监控。 网上搜索zabbix的文章一大堆,很多的都是把zabbix官网文档的某个特性,某个应用稍做翻译而已。感觉有点零散,不够系统。如果你想很深入的了解zabbix的特性,建议直接看zabbix官网的英文文档(http://www./documentation/)。本文主要从一个项目部署的角度一步一步来介绍zabbix 2.2,希望对于那些想利用zabbix来做监控的初学者,在短时间内快速上手。 1 项目+zabbix
1.1 zabbix能做什么简单点说,zabbix是一个监控数据的收集器和dashboard。监控数据中通用的数据可以由zabbix agent本身来负责收集。对于应用数据,需要应用本身提供。zabbix提供接口给第三方应用负责收集和做可视化。 zabbix能监控:
1.2 zabbix常用术语zabbix操作很简单,如果你能深入理解这些术语,甚至都不需要教程,主机web界面多点点,多玩玩。无师自通。
1.3 zabbix安装配置zabbix server上安装zabbix-server组件,被监控主机上安装zabbix-agent, zabbix-sender 官网提供两种方式安装,任选其一即可。我比较倾向于从packages安装,简单快速(快一点一两个小时,慢一点半天到一天。)。由于每个安装环境不可能保证一样,难免会遇到些安装错误问题。一句话:有什么错误,直接google,你遇到的问题,别人早就遇到过了。
1.4 创建用户组和主机监控组
zabbix安装好了后,打开zabbix web页面(http://ZABBIX-SERVER-IP/zabbix)。我们可以根据项目信息(项目组成员,项目中需要被监控的机器,etc)来创建用户组,用户,主机监控组,主机。创建用户组和主机监控组,是为了方便项目的扩展和管理。 1.4.1 创建主机监控组和主机
1.4.2 创建用户组和用户
将主机加入到主机组,将用户加入到用户组。制定用户组到主机组的读写权限。主机填写时,根据Host类型链接相应的template,如Template_OS_Linux(可以完成对主机CPU/Memory/Disk/Network的监控) 1.5 实现主机基本监控
接下来配置下被监控主机: 配置完后,重启zabbix-agent。通过zabbix web页面我们,我们可以看到该主机的一些基本监控信息(CPU/Memory/Disk/Network)数据了。该主机已经被监控起来了。 1.6 如何自定义监控数据
通过1.4我们已经实现了对主机一些基本系统信息的监控。这一节进一步扩展如果监控自定义的数据,如mysql的读写性能,项目中我们关心的一些组件KPI等。 常用的两种数据定义类型:zabbix agent和zabbix trapper。因此方法也相应的有两种。下面以监控磁盘/dev/sda的disk IO读写速度为例。 1.6.1 zabbix agent:UserParameter
实际项目中,可以把UserParameter写到/etc/zabbix/zabbix_agentd(根据Include可配置)的一个新文件。磁盘读速度通过一行shell脚本取得。对于复杂点数据的获取,可以编写相应的脚本完成。 重启zabbix-agent后,我们可以看到web页面已经加入了对用户自定义的磁盘/dev/sda读的监控。 1.6.2 zabbix trapper
与zabbix agent方式不同的时,zabbix trapper是由被监控机器主动向zabbix server发送数据。因此不需要安装zabbix agent。也不需要配置host。只需要发送数据即可。
zabbix_sender是zabbix项目中得一个客户端。这里,我们当然不一定需要通过zabbix_sender发送给zabbix server。我们可以自己写一个zabbix sender功能模块利用zabbix sender协议。这里有一篇很好的文章关于zabbix sender协议介绍和一个用Python实现zabbix sender的模块(http://itnihao.blog.51cto.com/1741976/1343670)。 1.7 批量导入监控数据通过1.6,对于一般项目进行简单的监控基本没太大的障碍。实际项目当中,很多的监控数据脚本,监控数据定义可以拿来直接应用,没必要重新造轮子。还是拿磁盘disk io为例,监控数据的获取方法通用,我们没必要每个item都自己定义,自己获取。圈内很多好心人在网上把这些数据以模板方式共享。因此我们直接导入,然后把我们需要监控这disk io的主机链接这个模板就可以了。这样就可以完成zabbix server段批量数据的导入。这里有个很好的例子(http://www./19/getting-hard-disk-performance-stats-from-zabbix) 1.8 数据可视化
通过web页面Monitoring下面的子项Overview或Latest data我们可以查看到最新和历史的监控数据。但总感觉还少了点什么,如果能够讲这些数据已图形,表格或者其他方式更加直观的方式显示就更好了。zabbix可以帮我们做到,把这些数据绘制成图形。 1.8.1 Create Graph | Create Screen | Create Slide shows
在模板里创建图形,每个链接了该模板的host都会自动加入创建的图形。 Host里创建图形,只有该Host才会加入该图形。 Screen是可以由Graph,issue, Map等组成。 Slide shows由Screen组成。 1.9 报警通知和采取行动
当你在用zabbix监控一个实际项目时。web界面有数据,有图形,看上去很美。但还不够。真正发现问题时,我们希望zabbix能够及时报警通知和采取一定的行动。当然,这些都是zabbix擅长的。 用户场景: 我们的某个应用A会在/log/下产生大量的log文件,慢慢的会把磁盘空间占满。我们希望zabbix能帮我们监控/log/下空间大小,当空间大小大于一定值的时候,我们希望能够收到一份email通知,删掉以前的log,只保留一份正在被写得log文件。 步骤:
具体创建trigger和action直接看zabbix官方文档,很简单。 总结
写着写着,突然发现没有附上一个截图。对于这种工具类型的文章,没图显然不够直观。回想这几天自己边学边用心得,当时其实更多的是希望有这样一篇项目向导性质的文章整体了解zabbix。一些具体的操作,对于一个搞IT的人来说,有针对性的看看官方文档,应该是一件很简单的事情。好吧,王婆卖瓜自卖自夸。不管怎么样。还是希望对想用zabbix来做监控的人有点帮助。 结合我们production环境里zabbix的配置和监控项目,本文从一个项目的角度来分享部分zabbix的特性,对于普通的项目,足够了。如果你想深入了解zabbix。请看zabbix官方文档。 |
|
来自: Dead n Gone > 《系统监控》