What is Zabbix
Zabbix是一个开源软件基于WEB界面的提供分布式系统监视以及网 络监视功能的企业级的开源解决方案。Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix支持使用MySQL、PostgreSQL、Oracle、IBM 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 安装包,提供了三个脚本。
使用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/,进入管理界面。
添加一个主机。
找到configuration—hosts—create host
定义一个items 用于监控网卡流入的速率
定义一个items 用于监控网卡流出的速率
定义一个items 用于监控CPU中断次数
定义一个items 用于监控CPU上下文切换的次数
定义完成后,我们可以通过Monitoring — latest data,查看状态以及图表。
接下来我们使用Graphs将两个相关的item图表,绘制成一张图显示。
Configuration—Hosts—Graphs—Create graph
我们再使用Screen将两张定义好的图,拼在同一屏显示。
Configuraton—Screens—Create screen
实验二、通过监控网卡的流量,实现一次完整的触发报警。
自定义一个宏Administration-General-Macros
给admin1定义一个触发器(Triggers)
Configuration-Hosts-triggers-Create trigger
这时候我们再去看 monitoring-Graphs
创建媒介用于通知功能 Administration-Media types-Create media type
修改用户通信媒介 Administration-users-Admin-Media
定义action
Configuration-Actions-Create action
Action:
Conditions:
Operations:
添加报警升级
保存配置后,我们来到Monitoring-Graphs查看
当前流量指数是正常的,并没有过线。我们查看Monitoring-triggers,也可以看到状态OK。
这时我们对服务器做压力测试
这里我们可以看出流量已经严重超标,触发器也标红色显示有故障了。
我们把压力测试关掉,让服务器流量恢复正常。
实验三、使用自定义带参数的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]"
实现使用一个key通过传递不同的参数实现定义多个item,假如我们要监控主机的MemTotal、MemFree、Cache、Buffer。
接下来定义Item 这里用MemFree做演示:
其余的定义也差不多,使用相同的key传递不同的参数即可。
memory.usage[MemTotal]
memory.usage[Cache]
memory.usage[Buffer]
将四个监控项的数据绘制到一张图上输出,方法相同使用Graphs。
实验三、使用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使用命令测试
定义item 这里我只拿一个做演示
后面绘图之类的,前面都有演示,这里就不再重复了。