What is Zabbix


    Zabbix是一个开源软件基于WEB界面的提供分布式系统监视以及网 络监视功能的企业级的开源解决方案。Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

    Zabbix支持使用MySQLPostgreSQLOracleIBM DB2数据库,数据存储。有着强大的数据采集能力,可以从网络获取几乎无限类型的数据,具有分布式监控功能,能扩展到非常大的环境,高性能实时监控成千上万的服务器,虚拟机和网络设备,还具有可视化功能,能将收集的数据进行分析,绘成图表方便用户查看。

Zabbix官网:www.zabbix.com

Zabbix社区平台:www.zabbix.org


实验一、使用zabbix监控一台主机的网卡速率与cpu工作情况。

实验环境:Centos6.5+Zabbix2.2+MySQL5.5

Server1.tuchao.com 192.168.1.90 — Zabbix-server  

admin1.tuchao.com 192.168.1.201 — Zabbix-agent

admin2.tuchao.com 192.168.1.202 — MySQL-Server


首先准备好数据库admin2.tuchao.com 192.168.1.202

MySQL安装(略)

授权zabbix库给用户。

grant all on zabbix.* to ‘tuchao@192.168.1.90 identified by 123456;

flush privileges;



安装配置 Zabbix-Server  Server1.tuchao.com


https://www.zabbix.com/documentation/2.2/manual/installation/install  //官方源码编译安装文档

http://www.zabbix.com/download.php  //官方下载页面


yum install zabbix-2.2.6-1.el6.i386.rpm  zabbix-get-2.2.6-1.el6.i386.rpm zabbix-server-2.2.6-1.el6.i386.rpm  zabbix-server-mysql-2.2.6-1.el6.i386.rpm zabbix-web-2.2.6-1.el6.noarch.rpm  zabbix-web-mysql-2.2.6-1.el6.noarch.rpm


编辑主配置文件 /etc/zabbix/zabbix_server.conf

PidFile=/var/run/zabbix/zabbix_server.pid

DBHost=192.168.1.202

DBName=zabbix

DBUser=tuchao

DBPassword=123456


zabbix_web 配置文件 /etc/httpd/conf.d/zabbix.conf  //里面定义了通过什么路径访问zabbix-web界面。

初始化数据库,zabbix-server-mysql 安装包,提供了三个脚本。

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第1张图片

使用mysql客户端连接到,MySQL-server,创建库,导入脚本。


mysql -utuchao -p123456 -h192.168.1.202

create database zabbix;

use zabbix

source /usr/share/doc/zabbix-server-mysql-2.2.6/create/schema.sql

source /usr/share/doc/zabbix-server-mysql-2.2.6/create/images.sql

source /usr/share/doc/zabbix-server-mysql-2.2.6/create/data.sql



修改php默认时区 

vim /etc/php.ini

date.timezone= Asia/Shanghai

启动zabbix服务,启动httpd服务。

/etc/init.d/zabbix-server start

/etc/init.d/httpd start


使用浏览器访问http://192.168.1.90/zabbix/,进入管理界面。

添加一个主机。

找到configurationhostscreate host

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第2张图片

定义一个items 用于监控网卡流入的速率

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第3张图片


定义一个items 用于监控网卡流出的速率

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第4张图片

定义一个items 用于监控CPU中断次数

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第5张图片

定义一个items 用于监控CPU上下文切换的次数

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第6张图片

定义完成后,我们可以通过Monitoring — latest data,查看状态以及图表。


接下来我们使用Graphs将两个相关的item图表,绘制成一张图显示。

Configuration—HostsGraphsCreate graph 

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第7张图片


系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第8张图片


我们再使用Screen将两张定义好的图,拼在同一屏显示。

ConfiguratonScreensCreate screen


系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第9张图片



系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第10张图片


实验二、通过监控网卡的流量,实现一次完整的触发报警。

自定义一个宏Administration-General-Macros

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第11张图片

admin1定义一个触发器(Triggers

Configuration-Hosts-triggers-Create trigger

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第12张图片


系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第13张图片


这时候我们再去看 monitoring-Graphs

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第14张图片


创建媒介用于通知功能 Administration-Media types-Create media type

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第15张图片


修改用户通信媒介 Administration-users-Admin-Media

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第16张图片


定义action

Configuration-Actions-Create action


Action

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第17张图片


Conditions

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第18张图片


Operations

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第19张图片


添加报警升级

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第20张图片


系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第21张图片

保存配置后,我们来到Monitoring-Graphs查看

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第22张图片


当前流量指数是正常的,并没有过线。我们查看Monitoring-triggers,也可以看到状态OK

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第23张图片

这时我们对服务器做压力测试

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第24张图片

这里我们可以看出流量已经严重超标,触发器也标红色显示有故障了。

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第25张图片


系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第26张图片


我们把压力测试关掉,让服务器流量恢复正常。

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第27张图片


实验三、使用自定义带参数的key,监控系统状态。

Syntax

       UserParameter=key[*],command

编辑/etc/zabbix/zabbix_agentd.conf

 

UserParameter=memory.usage[*],/bin/cat/proc/meminfo |awk '/^$1:/{print $$2}'

如果命令自身有$的话就要写成$$,不然就会认为是传递给key的参数。


可以在zabbix-server端使用命令测试

zabbix_get-s 192.168.1.201 -k "memory.usage[MemTotal]"

zabbix_get-s 192.168.1.201 -k "memory.usage[MemFree]"

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第28张图片


实现使用一个key通过传递不同的参数实现定义多个item,假如我们要监控主机的MemTotalMemFreeCacheBuffer

接下来定义Item  这里用MemFree做演示:


系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第29张图片


其余的定义也差不多,使用相同的key传递不同的参数即可。

memory.usage[MemTotal]

memory.usage[Cache]

memory.usage[Buffer]

将四个监控项的数据绘制到一张图上输出,方法相同使用Graphs

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第30张图片


实验三、使用zabbix监控Nginx输出的status状态。

开启nginx status

server {

       ...

       location /status {

              stub_status on;

              access_log off;

              allow 192.168.1.0/24;  # 允许访问的IP

              allow 127.0.0.1;

              deny all;

       }

}

 

创建配置文件 /etc/zabbix/zabbix_agentd.d/nginx-status.conf自定义key 

UserParameter=Nginx.active[*],/usr/bin/curl -s "http://$1:$2/status" |awk '/^Active/{print $NF}'

UserParameter=Nginx.reading[*],/usr/bin/curl -s "http://$1:$2/status" | grep Reading | cut -d " " -f2

UserParameter=Nginx.writing[*],/usr/bin/curl -s "http://$1:$2/status" | grep Writing | cut -d " " -f4

UserParameter=Nginx.waiting[*],/usr/bin/curl -s "http://$1:$2/status" | grep Waiting | cut -d " " -f6

UserParameter=Nginx.accepted[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$1}'

UserParameter=Nginx.handled[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$2}'

UserParameter=Nginx.requests[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$3}'


重启zabbix-agent服务

zabbix-server使用命令测试

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第31张图片


定义item 这里我只拿一个做演示

系统监控专题,Zabbix详解——实现监控服务器的各项指标。_第32张图片


后面绘图之类的,前面都有演示,这里就不再重复了。