一,Zabbix说明
1,Zabbix简介
前面介绍了cacti和nagios的配置使用方法,而zabbix将他们两个的功能做了整合,并且加入了许多新的特性。zabbix不像其他开源产品,如nginx,其有一个开源的还有一个商业的产品,而zabbix是完全开源的,所以其成为企业的首选监控工具。
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix由zabbix server与可选组件zabbix agent两部门组成。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
zabbix的主要特点:
– 安装与配置简单,学习成本低
– 支持多语言(包括中文)
– 免费开源
– 自动发现服务器与网络设备
– 分布式监视以及WEB集中管理功能
– 可以无agent监视
– 用户安全认证和柔软的授权方式
– 通过WEB界面设置或查看监视结果
– Email, External Script, Jabber, SMS,等通知功能
等等
2,Zabbix功能
具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制)支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。
二,配置安装Zabbix
Zabbix架构图如下所示:
2.1 说明
zabbix_agentd:客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等 zabbix_get:zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用于排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。 zabbix_sender:zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。 zabbix_server:zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server 备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。 zabbix_proxy:zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。 zabbix_java_gateway:zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。
2.2安装zabbix
zabbix可以在其官方网站进行下载,也可以在本站FTP上进行下载,以下安装使用zabbix-2.4.6。zabbix数据库可以和zabbix服务器分离,采用用专门的mysql服务器存储数据,所以使用单独数据库进行存储。
zabbix-server : 192.168.1.116 CentOS6.6 x86_64 zabbix-agent : 192.168.1.117 CentOS6.6 x86_64 mysql : 192.168.1.107 CentOS6.6 x86_64
(1)首先配置mysql端,需要自行安装mysql,然后做如下配置:
mysql> create database zabbix; Query OK, 1 row affected (0.00 sec) mysql> grant all on *.* to 'zbxuser'@'192.168.%.%' identified by 'zbxpass'; #创建访问数据库的用户 Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
(2)然后安装zabbix-server, zabbix的安装需要LAMP或者LNMP环境,请自行安装:
[root@localhost zabbix]# ls agent zabbix-server-2.4.6-1.el6.x86_64.rpm proxy zabbix-server-mysql-2.4.6-1.el6.x86_64.rpm zabbix-2.4.6-1.el6.x86_64.rpm zabbix-web-2.4.6-1.el6.noarch.rpm zabbix-get-2.4.6-1.el6.x86_64.rpm zabbix-web-mysql-2.4.6-1.el6.noarch.rpm [root@localhost zabbix]# yum localinstall *.rpm
也可以使用zabbix的仓库进行安装:
[root@localhost zabbix]#rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
[root@localhost zabbix]# rpm -ql zabbix-server-mysql /usr/sbin/zabbix_server_mysql /usr/share/doc/zabbix-server-mysql-2.4.6 /usr/share/doc/zabbix-server-mysql-2.4.6/create /usr/share/doc/zabbix-server-mysql-2.4.6/create/data.sql /usr/share/doc/zabbix-server-mysql-2.4.6/create/images.sql /usr/share/doc/zabbix-server-mysql-2.4.6/create/schema.sql
在服务器端导入数据库所需的三个脚本:
[root@localhost zabbix]# mysql -uzbxuser -pzbxpass -h192.168.1.107 zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/schema.sql [root@localhost zabbix]# mysql -uzbxuser -pzbxpass -h192.168.1.107 zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/images.sql [root@localhost zabbix]# mysql -uzbxuser -pzbxpass -h192.168.1.107 zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/data.sql [root@localhost ~]# cat /etc/zabbix/zabbix_server.conf | grep -v '#' | grep -v '^$' #修改zabbix的配置文件 LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=192.168.1.107 zabbix数据库位置 DBName=zabbix zabbix所属数据库名称 DBUser=zbxuser zabbix所属数据库用户 DBPassword=zbxpass zabbix数据库密码 SNMPTrapperFile=/var/log/snmptt/snmptt.log AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts [root@localhost zabbix]# service zabbix-server start [root@localhost ~]# ls /etc/httpd/conf.d/ #在web目录下自动生成zabbix.conf mod_dnssd.conf php.conf README welcome.conf zabbix.conf [root@localhost ~]# vim /etc/php.ini #修改时区 date.timezone =Asia/Shanghai
(3)安装zabbix-agent(192.168.1.117)
[root@localhost agent]# ls zabbix-2.4.6-1.el6.x86_64.rpm zabbix-agent-2.4.6-1.el6.x86_64.rpm zabbix-sender-2.4.6-1.el6.x86_64.rpm [root@localhost zabbix]# yum localinstall *.rpm #sender并非是必须的
修改配置文件:
[root@localhost zabbix]# vim zabbix_agentd.conf Server=192.168.1.116 #指定server,其他可以先不用修改
然后启动zabbix-agent:
[root@localhost agent]# service zabbix-agent start
三,Zabbix定义监控
zabbix的所有配置都是在web界面中进行的,进入http://192.168.1.116/zabbix 开始配置zabbix,登录的默认密码为 admin、zabbix。
Zabbix监控数据类型:
基础监控:如cpu、memory、noprocs、nofiles、disk usage等
应用监控:如tomcat、mogilefs、mysql、haproxy等
日志监控:日志收集服务为数据源,如Flume
运营数据监控:如流量、注册人数等
定义一次完整的监控:
添加主机(主机组) –> 添加item (内置的简单图形) –> trigger (event:OK–>Problem,Recovery)定义一个数据项合理的域值 –> action (通知信息(通知信息大量使用宏),condition(定义所需要的触发条件),operation(step)报警升级)
3.1 Zabbix常用术语简介:
主机(host):要监控的网络设备,可由IP或DNS名称指定;
主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常 在给用户或用户组指派监控权限时使用;
监控项(item):一个特定监控指标的相关的数据,这些数据来自于被监控对象;item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由“key”进行标识;
触发器(trigger):一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从“OK”转变为“Problem”,当数据量再次回归到合理范围时,其状态将从“Problem”转换回“OK”;
事件(event):即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等;
动作(action):指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作);
报警升级(escalation):发送警报或执行远程命令的自义定方案,如每隔5分钟发送一次警报,共发送5次等;
媒介(media):发送通知的手段或通道,如Email、Jabber或SMS等;
通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至单个主机;
应用(application):一组item的集合;
web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
前端(frontend):Zabbix的web接口;
3.2 Zabbix主菜单功能介绍
Monitoring:与“监控”功能相关的页面大多都在此处,如graphs、triggers、screens及maps等;
Inventory:主机资产清单;
Reports:提供强大且直观报告功能;
Configuration:监控系统的所有配置功能均位于此处,例如定义主机组、模板、主机等;
Administration:与Zabbix自身相关功能,如认证方法、用户、权限、脚本、媒介类型(media type)、审计、通知及全局配置等;
3.3 创建监控项(item)
主要属性介绍
Host:选择新建的item所属的主机或模板;默认为点击“item” 时所属的主机或模板;
Name:item的名称,可以使用宏$1、$2、……、$9,用于引用相应Key中的对应的参数;例如,名称“CPU $2 time”对于system.cpu.util[,iowait]来说,其名称为“CPU iowait time”;
Type:item类型;
Key:当前item的key,每个item所支持使用的key取决于所选择的“Type”;对一个主机来讲,每个key必须是惟一的;如果Type为“Zabbix agent”, “Zabbix agent (active)”,“Simple check”或者“Zabbix aggregate”,其Key值必须要被Zabbix agent及Zabbix Server支持才行;
Type of information:从被监控端取得的数据的存储格式;
Numeric (unsigned):64位无符号整数;
Numeric (float):浮点数;
Character:字符或字符串,最长为255字节;
Log:日志文件,只能在key为log[]时使用;
Text:文本,无长度限制;
Data type:专用于数据类型为“Numeric (unsigned)”时为其指定希望使用的数据格式;
Boolean:布尔型值,1表示“真”,0表示“假”;填入true、t、yes、y、up、running、enabled或available均会被转换为1;真入false、f、no、n、down、unused、disabled或unavailable均会被转换为0;
Octal:八进制数据;
Decimal:十进制数据;
Hexadecimal:十六进制数据;
Store value:
As is:不做任何处理;
Delta (speed per second):保存为(value-prev_value)/(time- prev_time)的计算结果,即当前值减去前一次获取的数据值,除以当前时间戳减去前一次值获取时的时间戳得到的结果;如果当前值小于前一次的值,其将会被丢弃;
Delta (simple change):保存为(value-prev_value)的计算结果;
Status:
Enabled:启用;
Disabled:禁用;
Not supported:不支持;
zabbix默认会为每个收集了数据并处于启用状态的item创建一个简单图像
创建主机:
添加主机:
添加items1,将网卡流量定义为一个items:
添加items2,将cpu状态定义为 items:
按照以上方法,定义以下4个items:
3.4 graph是自动生成的,但是需要将多个同类的item添加到一个graph中,创建 Cpu Load 和 Network Traffic:
自定义图形的相关属性说明
Name:图形的独有名称;
Width:图形的宽度,单位为像素;仅适用于“预览(preview)” 模式、饼图或分离型饼图;
Height:图形的高度,单位为像素;
Graph type:图形类型,共有四种,即“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)”和“分离型饼图(exploded)”;
Show legend:是否显示图例,即图形数据序列说明;
Show working time:是否高亮显示工作时间区域;选定时, 非工作时间区间的背景为灰色;此功能不适用于pie和exploded;
Show triggers:是否显示触发器;此功能不适用于pie和exploded;
Y axis MIN value:Y轴最小刻度,其类型有三种;
Calculated:自动计算;
Fixed:固定值,此功能不适用于pie和exploded;
Item:相关item的最近一次取值为其最小刻度;
Y axis MAX value:Y轴最大刻度,其类型同上述最小刻度的说明;
3D view:3D风格,此功能仅适用于pie和exploded;
Items:图形展示的数据序列所来自的item,一个图形中可以同时展示多个item;
在一个图形中,不同item的图形还有一些可单独配置的属性,如图形颜色、绘图风格等。
Function:展示何种聚合数据;
min:仅展示最小值;
avg:仅展示平均值;
max:仅展示最大值;
all:展示所有,即上面三类数据;
Draw stype:绘图风格,仅适用于线状图;
Line:绘制为简单线条;
Filled region:区域填充图,即面积图;
Bold line:加粗线条;
Dot:虚线图,以稀疏的点组成;
Dashed line:虚线图,以破折号组成;
Y axis side:Y轴显示的位置,可以为图形左侧或右侧;
Colour:图形颜色;
.png)
创建graph完成:
然后创建screen,screen是将多个自定义图形整合在一个屏幕上进行显示:
一个简单的监控至此就算添加完成,但是当某指标超标时或者不正常时,我们需要及时知道并对其进行调整,所以后面会带你定义trigger及报警机制。