Zabbix配置手册(摘自网络)

    Zabbix配置手册(摘自网络)... 1
  1. zabbix简介... 4
1.1 zabbix运行条件... 4 1.2 zabbix功能... 4 1.3 zabbix与NSA优劣势对比... 4
  1. zabbix配置文件... 5
2.1 说明... 5 2.2 zabbix架构... 5
  1. zabbix server安装... 6
3.1 同步授时中心时间... 6 3.2 建立LAMP环境... 6 3.3 编译安装iksemel 7 3.4 新建zabbix组和用户... 7 3.5 编译安装zabbix. 7 3.5.1 编译安装... 7 3.5.2 创建zabbix数据库... 8 3.5.3 复制配置文件到zabbix安装目录... 8 3.5.4 添加服务端口... 8 3.5.5 修改zabbix目录用户属性... 9 3.5.6 配置软连接... 9 3.5.7 配置zabbix启动脚本... 9 3.5.8 添加开机启动服务... 9 3.5.9 web相关配置... 10 3.6 解决zabbix图中出现中文乱码... 16 3.7 脚本安装zabbix server 17 3.8 脚本卸载zabbix server 20 3.9 防火墙设置... 22
  1. zabbix client安装... 22
4.1 linux系统... 22 4.1.1 下载解压zabbix客户端软件... 22 4.1.2 新建zabbix组和用户... 22 4.1.3 解压客户端至指定目录... 22 4.1.4 配置软连接... 22 4.1.5 添加客户端监控端口... 22 4.1.6 修改客户端配置文件... 23 4.1.7 配置客户端启动脚本... 23 4.1.8 添加客户端开机启动服务... 23 4.1.9 启动zabbix客户端... 23 4.1.10 防火墙设置... 23 4.2 windows系统... 23 4.2.1下载zabbix客户端软件... 23 4.2.2 编辑客户端文件... 24 4.3.3 安装客户端并启动... 24 4.3.4 使用批处理操作客户端... 25 4.3.5 防火墙设置... 26
  1. zabbix server配置简介... 27
5.1 Hosts. 27 5.2 Items. 29 5.3 Triggers. 30 5.4 Actions. 31 5.5 Medias. 32 5.6 Users. 33 5.7 WEB Monitorings. 35 5.8 Graphs. 35 5.9 Screens. 36 5.10 Maps. 37 5.11 自定义监控... 38
  1. zabbix server配置示例... 38
6.1 linux系统... 38 6.1.1 创建监控主机... 38 6.1.2 创建内存监控图形... 41 6.1.3 创建磁盘读/写操作统计... 44 6.1.4 创建进程监控... 47 6.1.5 创建WEB Monitorings. 50 6.1.6 创建自定义监控... 53 6.1.7 创建触发器... 57 6.1.8 创建邮件报警(企业邮箱)... 59 6.1.9 创建邮件报警(个人邮箱)... 64 6.1.10 创建飞信报警... 70 6.1.11 创建自动发现... 71 6.2 windows系统... 78 6.2.1 创建监控主机... 78 6.2.2 创建内存监控图形... 80 6.2.3 Windows performance counters. 83
  1. 后记... 86
zabbix 安装使用手册  

1. zabbix简介

zabbix 是一个提供 Web 管理界面的企业级的开源系统/网络监控分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。 官方网站:http://www.zabbix.com 英文安装文档 http://www.zabbix.com/wiki/howto/install/centos/centosinstall zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。 被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP方式采集数据。 Server端:通过收集SNMP和agent发送的数据,写入MySQL数据库,再通过php+apache在web前端展示。

1.1 zabbix运行条件

Server zabbix server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。 Agent 目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。 SNMP 支持各类常见的网络设备。

1.2 zabbix功能

具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制) 支持自动发现网络设备和服务器,支持分布式,能集中展示、管理分布式的监控点,扩展性强,server提供通用接口,可以自己开发完善各类监控

1.3 zabbix与NSA优劣势对比

zabbix优点:
  • 开源,无软件成本投入,Server端可安装在任意一台linux系统中
  • Server对设备性能要求低
  • 支持设备多
  • 支持分布式集中管理
  • 开放式接口,扩展性强
  • 可远程部署Server端
NSA优点:
  • 公司自主研发的软件,出现问题有技术保障
  • 支持设备多
  zabbix缺点:
  • 出现问题如需原厂支持需支付费用
  • 基于LAMP架构
  • 需在被监控主机上安装agent
NSA缺点
  • 软件集成在fedora11系统中,对服务器型号和硬件配置有一定要求
  • 软件需占用一台服务器
  • 只支持snmp协议监控设备
  • 需现场部署Server端
 

2. zabbix配置文件

2.1 说明

Server指安装zabbix服务的服务器(以下简称服务器端),是最重要的部份,主要安装在linux系统上(支持多种操作系统),采用mysql存储监控数据并使用apache+php的方式呈现。 Agent指安装在被监控设备上的zabbix代理(以下简称代理),被监控设备上的数据由代理收集后统一上传到服务器端由服务器端收集、整理并呈现。  SNMP也是agent的一种,指支持SNMP协议的设备(也可以是服务器),通过设定SNMP的参数将相关监控数据传送至服务器端(大部份的交换机、防火墙等网络设备都支持SNMP协议)。 IPMIAgent的另一种方式,主要应用于设备的物理性能监控,例如设备的温度、风扇的转速等。

2.2 zabbix架构

zabbix支持多种网络方式下的监控,可通过分布式的方式部署和安装监控代理,整个架构如图所示。  

3. zabbix server安装

  • 系统环境:6 32bit
  • zabbix版本:0.4

3.1 同步授时中心时间

  • 同步授时中心的时间,强制把系统时间写入CMOS。
ntpdate pool.ntp.org clock -w 注意:这里说的是系统时间,是由linux操作系统维护的。在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS。  

3.2 建立LAMP环境

  • LAMP环境:
yum -y install httpd mysql-server php
  • 其它需要用到的包:
yum -y install gcc mysql-devel net-snmp-devel php-gd php-mysql php-bcmath php-mbstring php-xml curl-devel
  • 配置http、mysql随系统启动:
chkconfig httpd on chkconfig mysqld on  

3.3 编译安装iksemel

wget http://iksemel.googlecode.com/files/iksemel-1.4.tar.gz tar zvxf iksemel-1.4.tar.gz cd iksemel-1.4 ./configure --prefix=/usr/local/iksemel make && make install  

3.4 新建zabbix组和用户

/usr/sbin/groupadd zabbix /usr/sbin/useradd -g zabbix zabbix  

3.5 编译安装zabbix

3.5.1 编译安装

  • 下载解压zabbix:
wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz/download tar zxvf zabbix-2.0.4.tar.gz
  • 编译安装:
cd /root/zabbix-2.0.4/ ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --enable-ipv6 --with-jabber=/usr/local/iksemel/ --with-libcurl make && make install configure: error: Invalid NET-SNMP directory - unable to find net-snmp-config 编译安装zabbix时,配置时报以上错,导致检测系统环境不成功。提示unable to find net-snmp-config,说明缺少相关的依赖性。 这是因为,在linux中,大多数软件都是开源的,并且可以自由使用。因此在开发时可以用到其他的软件包时我们直接就拿来了,不用在花功夫去重新编写,这就造成了所谓的依赖性。 那么怎么解决该问题那? 解决办法一: ??? 找出net-snmp-config属于哪个软件包,然后安装即可。 yum search net-snmp-config,发现net-snmp-config属于软件包net-snmp-devel,yum安装该软件包,解决该问题。 解决办法二: 在配置时,我们加上了--with-net-snmp这个选项,因此需要检查系统环境是否有该软件包支持。因此,在配置时,不要加上--with-net-snmp这个选项即不会报如下错误configure: error: Invalid NET-SNMP directory - unable to find net-snmp-config参考文献:zabbix中文文档http://www.linuxmr.com/zabbix2/  

3.5.2 创建zabbix数据库

  • 开启mysql,修改mysql root密码为123456(实际使用环境中可自定义密码):
/etc/init.d/mysqld start /usr/bin/mysqladmin -u root password 123456
  • 创建zabbix库,设置字符为utf8:
/usr/bin/mysql -uroot -p123456 create database zabbix character set utf8; grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123456'; quit
  • 导入数据库:
cd /root/zabbix-2.0.4/database/mysql/ mysql -uzabbix -p123456 zabbix < schema.sql mysql -uzabbix -p123456 zabbix < images.sql mysql -uzabbix -p123456 zabbix < data.sql  

3.5.3 复制配置文件到zabbix安装目录

cp -R /root/zabbix-2.0.4/conf/zabbix_agentd /usr/local/zabbix/etc/ cp /root/zabbix-2.0.4/conf/zabbix_agentd.win.conf /usr/local/zabbix/etc/ cp /root/zabbix-2.0.4/conf/zabbix_proxy.conf /usr/local/zabbix/etc/
  • 修改conf配置文件数据库(mysql)相关部分:
vim /usr/local/zabbix/etc/zabbix_server.conf 修改以下内容: DBUser=zabbix DBPassword=123456  

3.5.4 添加服务端口

vim /etc/services 在末尾追加以下内容: #zabbix services zabbix-agent??? 10050/tcp?????????????????????? # Zabbix Agent zabbix-agent??? 10050/udp?????????????????????? # Zabbix Agent zabbix-trapper? 10051/tcp?????????????????????? # Zabbix Trapper zabbix-trapper? 10051/udp?????????????????????? # Zabbix Trapper  

3.5.5 修改zabbix目录用户属性

chown -R zabbix.zabbix /usr/local/zabbix/  

3.5.6 配置软连接

  • 启动zabbix前,做相关软连接,不然会报错:找不到库文件。
ln -s /usr/local/iksemel/lib/libiksemel.so.3 /usr/lib/libiksemel.so.3 注意:64bit的系统ln的链接为。 ln -s /usr/local/iksemel/lib/libiksemel.so.3 /usr/lib64/libiksemel.so.3
  • 为 zabbix 命令行操作文件做链接,方便系统可以找得到。
ln -s /usr/local/zabbix/bin/* /usr/bin/ ln -s /usr/local/zabbix/sbin/* /usr/sbin/  

3.5.7 配置zabbix启动脚本

  • 拷贝zabbix启动脚本到/etc/init.d/下。
cp /root/zabbix-2.0.4/misc/init.d/fedora/core/zabbix_* /etc/init.d/
  • 修改zabbix启动脚本中程序目录的位置。
vim /etc/init.d/zabbix_server 修改: BASEDIR=/usr/local/zabbix vim /etc/init.d/zabbix_agentd 修改: BASEDIR=/usr/local/zabbix
  • 添加可执行权限。
chmod +x /etc/init.d/zabbix_server chmod +x /etc/init.d/zabbix_agentd  

3.5.8 添加开机启动服务

chkconfig --add zabbix_server chkconfig --add zabbix_agentd chkconfig --level 345 zabbix_server on chkconfig --level 345 zabbix_agentd on 使用 chkconfig --list 检查一下: chkconfig --list | grep zabbix  

3.5.9 web相关配置

mkdir /var/www/html/zabbix cp -a /root/zabbix-2.0.4/frontends/php/* /var/www/html/zabbix/ chown -R zabbix.zabbix /var/www/html/zabbix/
  • 对php配置文件做相应的调整(实际使用环境中可按需求更改,zabbix 2.0.4运行的最低环境要求请参考下图):
vim /etc/php.ini 修改: max_execution_time = 600 max_input_time = 600 memory_limit = 256M post_max_size = 32M upload_max_filesize = 16M date.timezone = PRC php.ini中的时区设置date.timezone = PRC 无意中发现 lnmp 默认的 php.ini 配置中有一行 date.timezone = PRC。PRC,People’s Republic of China,中华人民共和国,也就是日期使用中国的时区。 date.timezone 是 PHP 5.1 中新增加的配置文件参数,默认 date.timezone 是被注释掉的,也就是默认时区是 utc,lnmp 改为了 date.timezone = PRC,这样可以解决时间相差八小时的问题,看来 lnmp 的本土化工作做得不错。不过貌似这个参数一般都设成 Asia/Shanghai 吧?在 PHP 官方文档上找了半天才找到 PRC 这个参数,它不在?Asia?这个分类中,而在?Others,一般人都会在 Asia 里面找吧。 搜索了一下 PHP 源码,在 ext/date/lib/timezonemap.h 中看到如下代码 { "cst",?? 0,? 28800, "Asia/Chongqing"??????????????? }, { "cst",?? 0,? 28800, "Asia/Chungking"??????????????? }, { "cst",?? 0,? 28800, "Asia/Harbin"?????????????????? }, { "cst",?? 0,? 28800, "Asia/Kashgar"????????????????? }, { "cst",?? 0,? 28800, "Asia/Macao"??????????????????? }, { "cst",?? 0,? 28800, "Asia/Macau"??????????????????? }, { "cst",?? 0,? 28800, "Asia/Shanghai"???????????????? }, { "cst",?? 0,? 28800, "Asia/Taipei"?????????????????? }, { "cst",?? 0,? 28800, "Asia/Urumqi"?????????????????? }, { "cst",?? 0,? 28800, "PRC"?????????????????????????? }, { "cst",?? 0,? 28800, "ROC"?????????????????????????? }, 对 PHP 源码的时间部分没有什么研究,姑且认为这几个参数都表示 UTC+8 的东八区中国的北京时间吧。 当然,可以在 PHP 代码中调用 date_default_timezone_set 函数设置运行时的时区,这是常识,我就不多说了。 参考文献:http://demon.tw/software/php-date-timezone.html
  • 启动zabbix。
/etc/init.d/httpd start /etc/init.d/zabbix_server start /etc/init.d/zabbix_agentd start
  • 打开浏览器,输入http://IP/zabbix/,就会出现WEB界面安装向导,按向导提示完成zabbix安装。
默认:Next 默认:Next 输入Mysql数据库端口:3306,用户名:zabbix,密码:123456 注意:此处是zabbix连接mysql数据库时用到的用户名和密码,切勿混淆。 测试连接通过后→Next 默认:Next(实际使用环境中可按需求更改) 默认:Next 注意:如果出现提示文件zabbix.conf.php无法创建,则是zabbix目录无法写入,/var/www/html/zabbix的权限不为apache.apache。 解决方法一:点击“Download configuration file”,将下载的zabbix.conf.php文件上传到服务器的/var/www/html/zabbix/conf/zabbix.conf.php去然后点击“Retry” 就不会有Fail了。 解决方法二:输入以下命令也可解决。 chown -R apache.apache /var/www/html/zabbix 点击“Finish”完成安装 输入用户名:admin,密码:zabbix  

3.6 解决zabbix图中出现中文乱码

  • 设置zabbix的语言为中文时,图中的中文会变成方块,如下图所示:
这个问题是由于zabbix的web端没有中文字库,需要把中文字库加上即可。
  • 在windows系统中的c:\windows\fonts目录中copy一个自己喜欢的字体文出来,如ttf(雅黑);
  • 将copy出来的字体上传到zabbix server网站目录中的fonts目录下;
  • 将zabbix server网站目录中的fonts目录里原来的“ttf”改名,例如为“DejaVusSans.ttf.bak”;
cd /var/www/html/zabbix/fonts mv DejaVuSans.ttf /var/www/html/zabbix/fonts/DejaVuSans.ttf.bak
  • 将上传上去的文件,例如“ttf”改为“DejaVusSans.ttf”;
mv msyh.ttf /var/www/html/zabbix/fonts/DejaVuSans.ttf
  • 刷新页面后会发现原来乱码的地方OK了。
 

3.7 脚本安装zabbix server

#!/bin/bash # #zabbix_server_install.sh #zabbix server version 2.0.4 #author zhangyu # #the myql user who have an privilege to create a database for zabbix mysqluser="root" mysqlpasswd="123456"   #the password of zabbix database user zabbix_dbuser="zabbix" zabbix_passwd="123456"   #the zabbix path you want to install zabbixpath="/usr/local/zabbix"   ( echo "(3.1) sync Time Service Center" ntpdate pool.ntp.org clock -w echo ""   echo "(3.2) yum install lamp & rely" yum -y install httpd mysql-server php gcc mysql-devel net-snmp-devel php-gd php-mysql php-bcmath php-mbstring php-xml curl-devel chkconfig httpd on chkconfig mysqld on echo ""   echo "(3.3) install iksemel" wget http://iksemel.googlecode.com/files/iksemel-1.4.tar.gz tar zvxf iksemel-1.4.tar.gz -C /root/ cd /root/iksemel-1.4 ./configure --prefix=/usr/local/iksemel make && make install echo ""   echo "(3.4) zabbix group & user add" /usr/sbin/groupadd zabbix /usr/sbin/useradd -g zabbix zabbix echo ""   echo "(3.5.1) install zabbix server" cd /root/ wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz/download tar zxvf zabbix-2.0.4.tar.gz -C /root/ cd /root/zabbix-2.0.4/ ./configure --prefix=$zabbixpath --enable-server --enable-agent --with-mysql --with-net-snmp --enable-ipv6 --with-jabber=/usr/local/iksemel/ --with-libcurl make && make install echo ""   echo "(3.5.2) create zabbix database" /etc/init.d/mysqld start /usr/bin/mysqladmin -u $mysqluser password $mysqlpasswd mysql -u$mysqluser -p$mysqlpasswd -e 'create database zabbix character set utf8' mysql -u$mysqluser -p$mysqlpasswd -e "grant all privileges on zabbix.* to zabbix@localhost identified by '$zabbix_passwd'" cd /root/zabbix-2.0.4/database/mysql/ mysql -u$zabbix_dbuser -p$zabbix_passwd? zabbix < schema.sql mysql -u$zabbix_dbuser -p$zabbix_passwd? zabbix < images.sql mysql -u$zabbix_dbuser -p$zabbix_passwd? zabbix < data.sql echo ""   echo "(3.5.3) copy the configuration file to zabbix installation directory" cp -R /root/zabbix-2.0.4/conf/zabbix_agentd $zabbixpath/etc/ cp /root/zabbix-2.0.4/conf/zabbix_agentd.win.conf $zabbixpath/etc/ cp /root/zabbix-2.0.4/conf/zabbix_proxy.conf $zabbixpath/etc/ sed -i "s#^DBUser=#DBUser=$zabbix_dbuser#" $zabbixpath/etc/zabbix_server.conf sed -i "/# DBPassword=/a\DBPassword=$zabbix_passwd\n" $zabbixpath/etc/zabbix_server.conf echo ""   echo "(3.5.4) add service port" cat >> /etc/services << EOF #zabbix services zabbix-agent??? 10050/tcp?????????????????????? # Zabbix Agent zabbix-agent??? 10050/udp?????????????????????? # Zabbix Agent zabbix-trapper? 10051/tcp?????????????????????? # Zabbix Trapper zabbix-trapper? 10051/udp?????????????????????? # Zabbix Trapper EOF echo ""   echo "(3.5.5) modify zabbix directory attributes" chown -R zabbix.zabbix $zabbixpath/ echo ""   echo "(3.5.6) add link" ln -s /usr/local/iksemel/lib/libiksemel.so.3 /usr/lib/libiksemel.so.3 ln -s $zabbixpath/bin/* /usr/bin/ ln -s $zabbixpath/sbin/* /usr/sbin/ echo ""   echo "(3.5.7) configure zabbix startup script" cp /root/zabbix-2.0.4/misc/init.d/fedora/core/zabbix_* /etc/init.d/ sed -i "s#BASEDIR=/usr/local#BASEDIR=$zabbixpath#" /etc/init.d/zabbix_server sed -i "s#BASEDIR=/usr/local#BASEDIR=$zabbixpath#" /etc/init.d/zabbix_agentd chmod +x /etc/init.d/zabbix_server chmod +x /etc/init.d/zabbix_agentd echo ""   echo "(3.5.8) add boot services" chkconfig --add zabbix_server chkconfig --add zabbix_agentd chkconfig --level 345 zabbix_server on chkconfig --level 345 zabbix_agentd on echo ""   echo "(3.5.9) web configure" mkdir /var/www/html/zabbix cp -a /root/zabbix-2.0.4/frontends/php/* /var/www/html/zabbix/ chown -R apache.apache /var/www/html/zabbix/ sed -i 's#max_execution_time = 30#max_execution_time = 600#' /etc/php.ini sed -i 's#max_input_time = 60#max_input_time = 600#' /etc/php.ini sed -i 's#memory_limit = 128M#memory_limit = 256M#' /etc/php.ini sed -i 's#post_max_size = 8M#post_max_size = 32M#' /etc/php.ini sed -i 's#upload_max_filesize = 2M#upload_max_filesize = 16M#' /etc/php.ini sed -i 's#;date.timezone =#date.timezone = PRC#' /etc/php.ini /etc/init.d/httpd start /etc/init.d/zabbix_server start /etc/init.d/zabbix_agentd start echo ""   echo "(3.6) solve the Chinese garbled" cd /var/www/html/zabbix/fonts mv DejaVuSans.ttf /var/www/html/zabbix/fonts/DejaVuSans.ttf.bak mv /root/msyh.ttf /var/www/html/zabbix/fonts/DejaVuSans.ttf ) >"/root/zabbix_server_install.log" 2>&1  

3.8 脚本卸载zabbix server

#!/bin/bash # #zabbix_server_uninstall.sh #zabbix server version 2.0.4 #author zhangyu # #the zabbix path you want to uninstall zabbixpath="/usr/local/zabbix"   ( echo "stop services" /etc/init.d/zabbix_server stop /etc/init.d/zabbix_agentd stop /etc/init.d/mysqld stop /etc/init.d/httpd stop echo ""   echo "delete boot services" chkconfig --del zabbix_server chkconfig --del zabbix_agentd echo ""   echo "remove web configure" rm -rf /var/www/html/zabbix echo ""   echo "remove zabbix startup script" rm -rf /etc/init.d/zabbix_server rm -rf /etc/init.d/zabbix_agentd echo ""   echo "remove link" rm -rf /usr/lib/libiksemel.so.3 rm -rf /usr/bin/zabbix_get rm -rf /usr/bin/zabbix_sender rm -rf /usr/sbin/zabbix_agent rm -rf /usr/sbin/zabbix_agentd rm -rf /usr/sbin/zabbix_server echo ""   echo "delete service port" cat /etc/services|grep -v 'zabbix' >/root/services rm -rf /etc/services mv /root/services /etc/services echo ""   echo "delete mysql data" rm -rf /var/lib/mysql echo ""   echo "remove zabbix installation directory" rm -rf $zabbixpath echo ""   echo "zabbix group & user delete" groupdel zabbix userdel -r zabbix echo ""   echo "remove iksemel installation directory" rm -rf /usr/local/iksemel echo ""   echo "yum remove lamp & rely" yum -y remove httpd mysql-server php gcc mysql-devel net-snmp-devel php-gd php-mysql php-bcmath php-mbstring php-xml ) >"/root/zabbix_server_uninstall.log" 2>&1  

3.9 防火墙设置

iptables -A INPUT -p tcp -s 客户端IP -m multiport --dports 10050,10051 -j ACCEPT iptables -A INPUT -p udp -s 客户端IP -m multiport --dports 10050,10051 -j ACCEPT  

4. zabbix client安装

4.1 linux系统

4.1.1 下载解压zabbix客户端软件

wget http://www.zabbix.com/downloads/2.0.4/zabbix_agents_2.0.4.linux2_6.i386.tar.gz  

4.1.2 新建zabbix组和用户

/usr/sbin/groupadd zabbix /usr/sbin/useradd -g zabbix zabbix  

4.1.3 解压客户端至指定目录

mkdir /usr/local/zabbix tar zxvf /root/zabbix_agents_2.0.4.linux2_6.i386.tar.gz -C /usr/local/zabbix/  

4.1.4 配置软连接

  • 为 zabbix 命令行操作文件做链接,方便系统可以找得到。
ln -s /usr/local/zabbix/bin/* /usr/bin/ ln -s /usr/local/zabbix/sbin/* /usr/sbin/  

4.1.5 添加客户端监控端口

vim /etc/services 在末尾追加以下内容: #zabbix services zabbix-agent??? 10050/tcp?????????????????????? # Zabbix Agent zabbix-agent??? 10050/udp?????????????????????? # Zabbix Agent  

4.1.6 修改客户端配置文件

vim /usr/local/zabbix/conf/zabbix_agentd.conf 修改以下几项: Server=监控服务器IP Hostname=本机的主机名或IP地址
  • 建立配置文件的软连接到/usr/local/etc/目录下。
ln -s /usr/local/zabbix/conf/zabbix_agentd.conf /usr/local/etc/  

4.1.7 配置客户端启动脚本

scp 服务器IP:/etc/init.d/zabbix_agentd /etc/init.d/zabbix_agentd chmod +x /etc/init.d/zabbix_agentd  

4.1.8 添加客户端开机启动服务

chkconfig --add zabbix_agentd chkconfig --level 345 zabbix_agentd on 使用 chkconfig --list 检查一下: chkconfig --list | grep zabbix  

4.1.9 启动zabbix客户端

/etc/init.d/zabbix_agentd start
  • 查看进程,确认zabbix客户端是否启动。
ps?-ef?|?grep?zabbix  

4.1.10 防火墙设置

iptables -A INPUT -p tcp -s 服务器IP -m multiport --dports 10050,10051 -j ACCEPT  

4.2 windows系统

4.2.1下载zabbix客户端软件

http://www.zabbix.com/downloads/2.0.4/zabbix_agents_2.0.4.win.zip
  • 从官方下载zabbix agent后,压缩包里面有2个目录,bin和conf。
  • 将bin和conf放在c:\zabbix目录下。
  • bin目录下有2个目录,一个为win32,另一个是win64。每个目录下应该有3个文件,分别为:exe、zabbix_get.exe、zabbix_sender.exe。
  • conf目录下有1个文件,win.conf。
 

4.2.2 编辑客户端文件

  • 用文本编辑器修改conf目录下的win.conf文件:
LogFile=c:\zabbix\zabbix_agentd.log????????????????????????????????? #客户端日志文件存放路径 Server=???????????????????????????????????????????????????????????????? ????????????? #监控服务器IP Hostname=???????????????????????????????????????????????????????????????????????? #本机的主机名或IP地址  

4.3.3 安装客户端并启动

  • 进入c:\zabbix\bin\win32目录下,执行如下命令完成客户端的安装:
cd c:\zabbix\bin\win32 zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -i
  • 执行如下命令,启动客户端:
zabbix_agentd.exe -c c:\zabbix\conf\zabbix_ agentd.win.conf -s
  • 参数含义:
-c??? 指定配置文件所在路径 -i???? 安装客户端 -s??? 启动客户端 -x??? 停止客户端 -d??? 卸载客户端
  • 安装后会在系统服务里添加一个zabbix_agentd服务,会自动开机运行。
 

4.3.4 使用批处理操作客户端

  • 新建windows批处理脚本bat放在c:\zabbix目录下用来对客户端服务器上的zabbix_agentd进行安装、卸载、启动、重启、停止。脚本内容如下:
@echo off echo ************************************ echo ***** Zabbix Agentd Operation ****** echo ************************************ echo **? 1.? start????? Zabbix Agentd? ** echo **? 2.? stop?????? Zabbix Agentd? ** echo **? 3.? restart??? Zabbix Agentd? ** echo ** ?4.? install??? Zabbix Agentd? ** echo **? 5.? uninstall? Zabbix Agentd? ** echo **? 6.? exit?????? Zabbix Agentd? ** echo ************************************   set /p tmp=请输入有效数字:   if "%tmp%"=="1" goto start if "%tmp%"=="2" goto stop if "%tmp%"=="3" goto restart if "%tmp%"=="4" goto install if "%tmp%"=="5" goto uninstall if "%tmp%"=="6" goto end   :start c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -s goto end   :stop c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -x goto end   :restart c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -x c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -s goto end   :install c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -i echo "install is … ok"   :uninstall c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -d goto end   :end exit  

4.3.5 防火墙设置

  • 防火墙 --> 例外 --> 添加程序 --> 添加exe
 

5. zabbix server配置简介

  • 通过本地浏览器访问http://ServerIP/zabbix来开始配置和使用zabbix。
  • 使用zabbix进行监控之前,要理解zabbix监控的流程。一次完整的监控流程可以简单描述为:
Host Groups(设备组)->Hosts(设备)->Applications(监控项组)->Items(监控项)->Triggers(触发器)->Actions(告警动作)->Medias(告警方式)->User Groups(用户组)->Users(用户)

5.1 Hosts

  • Host是zabbix监控的基本载体,所有的监控项都是基于host的。
  • 通过Configuration->Hosts->Create Host来创建监控设备
  • 按提示填入Name、Groups、IP ,其他选项默认即可,Link Templates 处选择一个模板,save即可成功添加设备。(注:如果host上没安装agent,添加后的状态会是unmonitor,会采集不到值,zabbix自带大量的设备监控模板,我们添加主机时通过link到这些模板,就可以快速添加主机的监控项和告警触发条件。)
  • 一类的hosts可以归属到同一个Host Group,便于分类管理同一类设备,在Configuration->Host Group->Create Host Group 可以添加设备组。
  • 下表对各项参数进行详解:
参数 描述
主机名 输入一个不重复的主机名。只允许大小写字母、数字、标点符号和下线。 注意:该名称和其所对应的客户端配置文件zabbix_agentd.conf中“Hostname”这一项输入的值是一样的。在主机存活检查时需要这个名字。
访问名 如果设置该名字,那么它将出现在主机列表、地图等地方。这个属性需要UTF-8支持。
群组 选择主机所属的群组。一个主机必须属于至少一个主机组。
新主机组 一个新的群组将被创建然后自动链接到该主机上。如果空的话,该项将忽略。
接口协议 一个主机支持几种类型的主机接口协议类型:Agent,SNMP,JMX and IPMI,如果想增加一个新的接口协议,点击Add然后输入IP/DNS,连接项,端口等信息。
ip地址 要监控主机的ip地址。(可选项)
DNS名称 要监控主机DNS能够解析的名称。(可选项)
链接 点击各自对应名称的按钮将反馈给 zabbix服务器用哪个名称(IP或 DNS)从客户端获得数据。 IP 连接要监控主机的IP地址(推荐)
DNS 链接要监控主机能够正常解析的DNS名称
端口 TCP协议的端口,zabbix客户端使用的默认值是10050
通过代理 主机可以通过zabbix服务器或者zabbix的一个代理来监控。
状态 Monitored 主机是活动的,监控就绪
Not monitored 主机已停止,因此没被监控
 

5.2 Items

  • Item是监控项,是监控的基本元素,每一个监控项对应一个被监控端的采集值。
  • 在Configuration->Hosts界面,我们能看到每个host所包含的items总数,点击对应主机的items项,可以看到具体的每个item信息,这些items可以引用自templates,也可以自己创建。
  • 通过点击具体item名字可以修改已有监控项的属性,点击Satus的链接可以禁用/启用这个监控项。(备注:我们可以通过新建一个template,在template中禁用掉所有不需要用到的items,然后把同一类hosts link to这个template,就不用一台台主机去更改items)
  • 新增item可以通过点击右上角的create item来创建。
  • 按提示逐项填入相关信息即可,其中key是zabbix已经自带的取值方法,Application类似于host groups,是item的组。(item key也可以自定义,后面会讲到如何自定义监控项)
  • zabbix自带非常多的监控采集项及方法,基本能满足当前所有的监控功能,这些都包含在item的 item key中了,更多的type和key的解释请参考官方文档:
https://www.zabbix.com/documentation/2.0/manual/config/items  

5.3 Triggers

  • Trigger是触发器,当Items采集值满足triggers的触发条件时,就会产生actions。
  • 每一个trigger必须对应一个item,但一个item可以对应多个trigger。
  • 同样,通过点击Configuration->Hosts->Triggers中某个trigger的名字,可以修改trigger的属性。(注意:引用自template的trigger触发值是不能单独修改的,必须在template中修改,或是复制一个同样的trigger再修改,然后禁用掉之前的)
  • 新增trigger可以通过点击右上角的create trigger来创建
  • Expression中选择对应的item、触发方式及触发值,Severity是告警级别,根据trigger的严重性来选择。
  • zabbix 提供多种trigger触发方式供选择,常用的我们可以选择last value </>/=/#/N(最近一次采集值),或是选择maximal value for period of time (一段时间内的最大值),等等。可以根据实际需要来设定触发方式。更多的解释请参考官方文档:
https://www.zabbix.com/documentation/2.0/manual/config/triggers  

5.4 Actions

  • Action是告警动作,当触发器条件被满足时,就会执行指定的action。
  • 通过Configuration->Actions->Create Action来创建Action。
  • Subject、Message:告警标题和内容 ,此处可引用zabbix的宏变量;例如 {{HOSTNAME}:{TRIGGER.KEY}.last(0)}表示最后一次采集值,更多宏变量请参考官方文档:
https://www.zabbix.com/documentation/2.0/manual/config/macros/usermacros
  • Recovery Message:告警恢复信息,不勾选系统会用默认的,勾选后自定义。更多的解释请参考官方文档:
https://www.zabbix.com/documentation/2.0/manual/config/notifications/action  

5.5 Medias

  • Media,即告警方式,zabbix可以提供四类Media:Email/SMS/Jabber/Script,通过Administrator->Media Type来修改或新增告警方式
  • Email方式最常用的,填入相关的SMTP信息,即可通过邮件方式发送告警。
  • 其中type有以下几种方式:
Email????? 方式用邮件。 Script???? 方式可以通过自己编写程序或脚本的方式发送告警信息。 SMS?????? 方式要在server主机上接入短信modem。 Jabber?? 方式是一种linux下的即时通讯工具,通过Jabber发送即时消息。 官方参考文档:https://www.zabbix.com/documentation/2.0/manual/config/notifications/media  

5.6 Users

  • 在Administrator->Users 可以添加用户和用户组。
  • 通过User Group可以限制用户的权限,zabbix自带的用户组的权限限制基本能满足我们的要求。
  • 创建用户时可以根据用户的不同作用划分到不同的组,media中填入告警接受地址及告警接受时间等信息。
  • Type:报警类型。
  • Send to:收件人地址,可以增加多个。
  • 用户权限的控制。
官方参考文档:https://www.zabbix.com/documentation/2.0/manual/config/users_and_usergroups  

5.7 WEB Monitorings

  • Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度、返回码及响应时间,还支持把一组连续的web动作作为一个整体来监控。
  • Web monitoring还有更多强大的功能,可参考官方文档:
https://www.zabbix.com/documentation/2.0/manual/web_monitoring  

5.8 Graphs

  • zabbix的Graphs功能很强大,可以为每一个item绘制图表,也可以把多个items绘制在一张图表内。
  • 通过configuration->hosts选择要绘制图表的host,点击graphs,create graphs即可创建图表。
  • Graph type:图表样式,有线状、柱状、饼状。
  • 还可以自定义图表大小,及Y轴最大最小值。
  • 通过add items可以添加在同一个图表中展示的多个items(备注:注意每个item的颜色及取值范围,范围相差太大图表会显示不全)。
  • 配置好的graphs在monitoring->graphs中查看。
  • 在monitoring->last data下能快速查看每个host的每个item的graph。
 

5.9 Screens

  • Screen将多种信息放在一起展示,便于集中展示某个host的多个信息,或是比较多个hosts的同一种信息,这些信息可以为graphs、maps、server infos等等,几乎涵盖zabbix所有的监控信息。
  • 通过configuration->screen->creat screen来创建,创建时定义screen的行数和列数,点击对应单元格内的change,添加相应的信息。
  • 通过monitoring-screen,可以查看之前配置好的信息。
 

5.10 Maps

  • 这里可以添加关于主机的拓扑图:configration-maps,在右上角可以create maps或者import map
  • 这里我们点击crate maps 点save保存。
  • 然后编辑保存好的maps。
上面加号和减号可以增加主机 link说明主机的连接情况,可以进行自定义。  

5.11 自定义监控

  • 对于zabbix功能上无法实现的监控,可以通过自己编写程序或脚本来辅助完成,并将脚本的结果通过agent递交给zabbix server统一管理,一样可以绘制graph 报表等。
  • UserParameters的定义方法,请参考:
https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters  

6. zabbix server配置示例

  • 本节中如不指明是client端配置,均指在server中配置。

6.1 linux系统

6.1.1 创建监控主机

  • Configuration --> Hosts --> Create host
  • Host name --> Groups --> Agent interfaces
  • Templates --> Add
  • 系统自定义了很多监控模板,根据监控主机的系统以及监控的类别来选择监控模板。当前监控的是linux系统,所以勾选Template OS Linux --> Select --> Save
  • 监控状态。
 

6.1.2 创建内存监控图形

  • Template OS Linux模板默认没有内存监控图形,需自行添加。
  • Configuration --> Templates --> Items
  • Create item
  • Graphs --> Create graphs
 

6.1.3 创建磁盘读/写操作统计

  • Create item
注意:Key中vfs.dev.read[<device>,<type>,<mode>] device - disk device (default is "all") mode - avg1 (default) 对指定磁盘统计的写法为:vfs.dev.read[/dev/sda, operations] 官方参考文档: https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/zabbix_agent
  • Graphs --> Create graphs
 

6.1.4 创建进程监控

  • 示例:以apache进程为例,来展示如何监控进程。
  • Configuration --> Templates --> Items
  • Create item
  • 创建触发器,实现一旦进程丢失即触发报警。
  • Configuration --> Host --> Triggers --> Create trigger
  • Name --> Severity --> Add
  • Select --> Function --> Last of (T) --> N
  • Item选择trigger对应的item
  • Function函数,本例中选择“最后一次T的检测值大于N”
  • Last of (T)T对应的值,秒或计数
  • NN对应的值
结合本例当apache用户启动的httpd进程数等于0就触发trigger。
  • Monitoring --> Graphs 页面即能看到监控的状态和触发器。
 

6.1.5 创建WEB Monitorings

  • 示例:以监控登录zabbix的web程序为例,来展示如何使用web monitoring。
  • Configuration->web->Create Scenario 创建一个Scenario(注意:必须选择host后才能创建scenario,zabbix的所有items都必须创建在hosts上)
  • Application选择这个scenario所在的application组
  • Namescenario的名字
  • Authentication鉴权
  • Update interval (in sec)监控频率,s为单位
  • Agent选择要使用的浏览器客户端,可能同样的web程序对不同的客户端展示的内容会不一样
  • Variables变量定义,这里自定义的变量可在后续的steps中使用,此例定义了用户名和密码的变量
  • Active是否激活,默认为active
  • Steps:web程序的各个步骤,选择add新增一个Login的step,来模拟用户登录,传递用户名和密码给php页面。
  • URL监控的web页面(注意:必须是全路径带页面名)
  • Post传递给页面的参数,多个参数之间用&连接,此处可引用前面定义的变量
  • Timeout超时时间
  • Required string页面中能匹配到字符,匹配不到即认为错误
  • Required status codes页面返回码
  • 添加完step后,在Monitoring->web页面即能看到监控的状态和图示。
  • 创建完scenario后,zabbix server会自动创建相关的items,所以只需为这些items添加triggers即可让web scenario出错时产生告警。
  • Configuration->hosts->点击scenario所在的host条目的trigger,直接create trigger,在select items的时候就可以看到系统自动创建的items(注意:自动创建的items在host的items列表中无法直接看到,需要在创建trigger时选择items时才能看到)
 

6.1.6 创建自定义监控

  • 示例:统计80端口连接状态数量。
  • Client配置:
egrep -v '^$|^#' /usr/local/zabbix/conf/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log Server=192.168.8.73 ServerActive=127.0.0.1 Hostname=192.168.8.74 UserParameter=port_80_time_wait, /usr/local/zabbix/conf/scripts/port_80_time_wait.sh UserParameter=port_80_established, /usr/local/zabbix/conf/scripts/port_80_established.sh UserParameter=port_80_syn_recv, /usr/local/zabbix/conf/scripts/port_80_syn_recv.sh 备注:经测试,2.0.4版本client配置文件中无需将UnsafeUserParameters=0设置为1。 ll /usr/local/zabbix/conf/scripts/ 注意:配置文件中的脚本路径要用绝对路径,脚本要有可执行权限。脚本的返回值要尽量简单,方便设置报警值。 cat port_80_established.sh netstat -nt |awk '{print $4,$6}'|grep ':80 ESTABLISHED'|wc –l cat port_80_syn_recv.sh netstat -nt |awk '{print $4,$6}'|grep ':80 SYN_RECV'|wc –l cat port_80_time_wait.sh netstat -nt |awk '{print $4,$6}'|grep ':80 TIME_WAIT'|wc -l  
  • Server配置:
  • Templates --> Items设置:
  • Templates --> Graphs设置:
  • Monitoring --> Graphs验证结果:
  • 对ip为168.8.74的web server发送73个请求
ab -n 73 http://192.168.8.74/index.html
  • 备注:为Number of port 80 syn recv项创建trigger能有效的引起管理员的注意,提早预防SYN攻击。
 

6.1.7 创建触发器

  • 示例:以监控web server首页响应速度,来展示如何使用trigger。
  • Configuration --> Host --> Triggers --> Create trigger
  • Name --> Severity --> Add
  • Select --> Function --> Last of (T) --> N
  • Item选择trigger对应的item
  • Function函数,本例中选择“最后一次T的检测值大于N”
  • Last of (T)T对应的值,秒或计数
  • NN对应的值
结合本例的结果既是web server首页的响应速度如果大于1秒就触发trigger。
  • Monitoring --> Web 页面即能看到监控的状态和触发器。
 

6.1.8 创建邮件报警(企业邮箱)

  • 使用企业邮箱的优势在于不需要设置用户名、密码登录,就能借助sendmail将邮件发出。因此不会泄露邮箱的密码,安全性较高。
  • 经测试确认,263企业邮箱和新浪vip邮箱支持以下示例中的配置方式进行发送告警信息。其它邮箱因时间和条件因素无法一一测试。
  • 在配置zabbix的Email报警之前,需要将sendmail使用的域名进行相应的修改,系统默认为localdomain,其实不改也行,不过有些pop3服务器会过滤掉来自localhost.localdomain的邮件,导致邮件不能正常查收,所以,最好改一下 hostname,确保邮件发送的成功率。
cat /etc/sysconfig/network cat /etc/hosts cat /etc/mail/access cat /etc/mail/local-host-names 知识点:hostname改为domain.com的命名方式可提高sendmail启动速度,相关内容可以去了解“解决sendmail启动慢”。
  • 修改完成后,启动sendmail服务,通过telnet命令,测试是否已生效。
/etc/init.d/sendmail start chkconfig sendmail on telnet 127.0.0.1 25 从以上结果可以发现,localhost.localdomain已经变成了server01这个域名,表示修改成功,接下来就可以在zabbix的管理页面上进行Email报警设置了。
  • administration --> Media types --> Email
  • administration --> Users --> Admin
本示例以管理员用户作为收件人。
  • Media --> Add
  • Type告警类型
  • Send to接收告警邮件的邮箱地址
  • When active告警时间,默认为7×24小时。
  • Use if severity选择告警级别
配置后点击Save保存设置。
  • Configuration --> Actions --> Create action
  • Name告警action的名称
  • Default operation step duration告警持续时间,默认为3600秒,最少可设置为60秒
  • Default subject邮件标题,默认为宏变量
  • Default message邮件内容,默认为宏变量
  • Recovery message告警恢复信息,不勾选系统会用默认的,勾选后使用以下自定义内容
  • Recovery subject告警恢复后的邮件标题,默认为宏变量
  • Recovery message告警恢复后的邮件内容,默认为宏变量
  • Enabled勾选为启用,不勾为禁用
  • Type of calculation计算类型,有and、or和and\or
  • Conditions触发条件
  • New condition创建触发条件
触发条件可以是多个组合,计算类型代表了各个触发条件之间的关系。如此示例中,必须满足被监控主机“不在维护状态”和“Trigger”的值等于“PROBLEM”,才满足触发条件。
  • Step步骤,使用默认值即可
  • Operation type操作类型,下拉选项为send message(发送消息)或remote command(远程命令)。
  • Send to User groups将邮件发送到哪个组
  • Send to Users将邮件发送到哪个用户
  • Send only to发送的方式,下拉选项对应Media types中的各项
  • Update更新
注意:Update后在Save,否则将不保存Operations中的各项配置。
  • Monitoring --> Events
验证告警已成功发送。
  • 从邮件中再次验证,收到告警邮件。
 

6.1.9 创建邮件报警(个人邮箱)

  • 在上述环境没有满足的情况下,也可以使用个人邮箱进行邮件告警。本示例使用139邮箱,其优势在于收到邮件的同时手机也会收到邮件。

6.1.8.1 安装msmtp

  • 在配置zabbix的Email报警之前,需要先安装msmtp。
wget http://nchc.dl.sourceforge.net/sourceforge/msmtp/msmtp-1.4.17.tar.bz2 tar xvf msmtp-1.4.17.tar.bz2 cd msmtp-1.4.17 ./configure --prefix=/usr/local/msmtp make && make install cd /usr/local/msmtp/ 新建配置文件目录和配置文件: mkdir etc cd etc vim msmtprc 添加以下内容: account default host smtp.163.com port 25 from zabbix_test@163.com auth login user zabbix_test password xxxxxx logfile /var/log/msmtp.log
  • hostsmtp服务器
  • portsmtp服务器端口
  • from发件人邮件地址
  • user登录邮箱的用户名
  • password邮箱密码,这里是明文的,如果觉得不安全可以把文件改为600属性
  • logfile日志文件
  • 测试是否可以发出邮件:
/usr/local/msmtp/bin/msmtp 13916594658@139.com 随便输入一些内容用ctrl+d结束,如果没有收到邮件或提示错误可查看日志文件。  

6.1.8.2 安装mutt

yum install mutt 修改Muttrc配置文件: vim /etc/Muttrc 修改以下内容: set sendmail="/usr/local/msmtp/bin/msmtp" set use_from=yes set realname="zabbix_test@163.com" set editor="vim"
  • set sendmailmsmtp命令路径
  • 测试是否可以发出邮件
echo "testmail" | mutt -s "test" -a /etc/hosts 13916594658@139.com
  • testmail邮件内容
  • -s邮件标题
  • -a添加附件,多个附件就用多个-a添加。
 

6.1.8.3 配置zabbix server

vim /usr/local/zabbix/etc/zabbix_server.conf 修改以下内容: AlertScriptsPath=/usr/local/zabbix/alertscripts 注意:脚本存放在什么位置路径就写什么位置。
  • 新建脚本目录。
mkdir /usr/local/zabbix/alertscripts
  • 添加脚本内容:
vim /usr/local/zabbix/alertscripts/alert 添加以下内容: #!/bin/bash to=$1 subject=$2 body=$3 cat <<EOF|mutt -s "$subject" "$to" $body EOF
  • 赋予脚本可执行权限。
chmod +x /usr/local/zabbix/alertscripts/alert
  • Administration --> Media types --> Create media type
  • Description名称描述,可自定义
  • Type类型,此处选择Script
  • Script name脚本名称,注意:此处必须和刚才新建的脚本同名
  • administration --> Users --> Admin
本示例以管理员用户作为收件人。
  • Media --> Add
  • Type告警类型,注意:此处选择刚才新建的描述项
  • Send to接收告警邮件的邮箱地址,备注:可以是其它收件邮箱或多个收件邮箱
  • When active告警时间,默认为7×24小时。
  • Use if severity选择告警级别
配置后点击Save保存设置。
  • Actions配置部分可参考1.7节的Configuration --> Actions --> Create action
  • 告警验证:动作一,在zabbix client的server02服务器中关闭http服务。查看Monitoring --> Events
收到的邮件内容:
  • 恢复验证:动作二,在zabbix client的server02服务器中开启http服务。查看Monitoring --> Events
收到的邮件内容:  

6.1.10 创建飞信报警

  • 下载fention包,解压后包括主程序fetion,库文件libACE_SSL-5.7.2.so libACE-5.7.2.so libcrypto.so.4 libssl.so.4
mv libACE_SSL-5.7.2.so libACE-5.7.2.so libcrypto.so.4 libssl.so.4 /usr/lib chmod a+x fetion
  • 开启图形界面,新版的飞信需要验证才能登录。
init 5
  • 注意:第一次发送会在当前目录下会生成一个jpg的图形验证码,将验证码输入,回车即可成功发送飞信,发送成功界面如下:
  • zabbix server配置部分可参考1.8.3节,其中添加脚本内容如下:
#!/bin/bash /usr/local/fetion --mobile 13916594658 --pwd XXXXXX --to=$1 --msg-tpye=0 --msg-utf8="$2, $3"
  • 官方声明:
(机器人主程序经常更新,而支持库不会更新) 注意:linux用户,请不要把支持库中的 lib* 复制到 /usr/lib 下,因为发行版本不同,可能会覆盖您机器中的核心库,导致严重系统问题。您可以把库解压到主程序的相同目录,然后以 LD_LIBRARY_PATH=. ./fetion 来运行) >> 举例 << linux下,请使用如下命令: LD_LIBRARY_PATH=. ./fetion --mobile=13711123456 --pwd=mypwd --to=137xxxxxxxx --msg-utf8=测试 LD_LIBRARY_PATH=. ./fetion --sid=6630321 --pwd=mypwd --to=137xxxxxxxx --msg-utf8=测试 LD_LIBRARY_PATH=. ./fetion --config=sample.conf --index=1 --to=137xxxxxxxx --msg-utf8=测试 官方文档:http://bbs.it-adv.net/viewthread.php?tid=1081  

6.1.11 创建自动发现

  • 需求:
现在有大量url需要监控,形式如http://218.83.169.61:8080,要求url状态不为200即报警。
  • 需求分析:
大量的url,且url经常变化,使用的监控用是zabbix。如果手动添加模板,会造成大量重复工作,造成人力财力的浪费,造成休息时间的浪费,得不尝失。
  • 解决方案:
zabbix有discovery功能,利用此功能,即可轻松解决此问题。
  • Client配置:
egrep -v '^$|^#' /usr/local/zabbix/conf/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log EnableRemoteCommands=1 Server=192.168.8.73 ServerActive=127.0.0.1 Hostname=192.168.8.244 Include=/usr/local/zabbix/conf/zabbix_agentd.conf.d/ UnsafeUserParameters=1
  • EnableRemoteCommands允许远程命令,0为不允许,1为允许。默认0。
  • Include配置文件路径。默认的路径为/usr/local/etc/
  • UnsafeUserParameters允许自定义key,0为不允许,1为允许。默认0。
  • 编写配置文件:
vi /usr/local/zabbix/conf/zabbix_agentd.conf.d/web_site_discovery.conf UserParameter=web.site.discovery,/usr/local/zabbix/conf/scripts/web_site_code_status web_site_discovery UserParameter=web.site.code[*],/usr/local/zabbix/conf/scripts/web_site_code_status web_site_code $1
  • 编写loaclhost中待监控的url
vi /usr/local/zabbix/conf/scripts/WEB.txt 192.168.8.244:8080 192.168.8.244:8080/mesa/ www.baidu.com 备注:本例中的url只是demo,生产环境中请按实际情况增减url。
  • 编写自动发现脚本:
vi /usr/local/zabbix/conf/scripts/web_site_code_status #!/bin/bash   # function:monitor tcp connect status from zabbix # License: GPL # mail:78737454@qq.com # version:1.0 date:2013-02-04 source /etc/bashrc >/dev/null 2>&1 source /etc/profile >/dev/null 2>&1   #/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/ WEB_SITE_discovery() { WEB_SITE=($(grep -v "^#" /usr/local/zabbix/conf/scripts/WEB.txt)) printf '{\n' printf '\t"data":[\n' for((i=0;i<${#WEB_SITE[@]};++i)) { num=$(echo $((${#WEB_SITE[@]}-1))) if [ "$i" != ${num} ]; then printf "\t\t{ \n" printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$i]}\"},\n" else printf? "\t\t{ \n" printf? "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$num]}\"}]}\n" fi } } web_site_code() { /usr/bin/curl -o /dev/null -s -w %{http_code} http://$1 }   case "$1" in web_site_discovery) WEB_SITE_discovery ;; web_site_code) web_site_code $2 ;; *) echo "Usage:$0 {web_site_discovery|web_site_code [URL]}" ;; esac 备注:WEB.txt的存放路径,可自定义。 注意:以上各项配置完后必须重启zabbix_agentd /etc/init.d/zabbix_agentd restart
  • Server端测试验证结果:
zabbix_get -s 192.168.8.244 -p 10050 -k "web.site.discovery" zabbix_get -s 192.168.8.244 -p 10050 -k "web.site.code[192.168.8.244:8080]" 此时返回状态为200 至此,脚本,客户端配置OK
  • Server配置:
Configuration --> Host Create application Name Discovery Create discovery rule Item prototypes Trigger prototypes:设置3个报警级别。 Graph prototypes Graphs 利用以上方法,哪怕是1000个url监控,也是分分钟的事情。 总结:官方帮助是最好的利器。 参考文献:http://itnihao.blog.51cto.com/1741976/1129725 官方参考文档: https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery  

6.2 windows系统

6.2.1 创建监控主机

  • Configuration --> Host groups --> Create host group
  • Configuration --> Hosts --> Create host
  • Host name --> Groups --> Agent interfaces
  • Templates --> Add
  • 系统自定义了很多监控模板,根据监控主机的系统以及监控的类别来选择监控模板。当前监控的是linux系统,所以勾选Template OS Windows --> Select --> Save
 

6.2.2 创建内存监控图形

  • Template OS Windows模板默认没有内存监控图形,需自行添加。
  • Configuration --> Templates
  • Template OS Windows --> Graphs
  • Create graph
  • Name --> Y axis MIN value --> Add
  • Select
  • Save
  • 验证结果:Monitoring --> Graphs
 

6.2.3 Windows performance counters

Overview You can effectively monitor Windows performance counters using the perf_counter[] key. For example: perf_counter["\Processor(0)\Interrupts/sec"] or perf_counter["\Processor(0)\Interrupts/sec", 10] For more information on using this key, see WIN32-specific item keys. In order to get a full list of performance counters available for monitoring, you may run: typeperf -qx Numeric representation As the naming of performance counters may differ on different Windows servers, depending on local settings, it introduces a certain problem when creating a template for monitoring several Windows machines having different locales. At the same time every performance counter can also be referred to by its numeric form, which is unique and exactly the same regardless of language settings, so you might use the numeric representation instead of strings. To find out the numeric equivalents, run regedit, then find HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009. The registry entry contains information like this: 1 1847 2 System 4 Memory 6 % Processor Time 10 File Read Operations/sec 12 File Write Operations/sec 14 File Control Operations/sec 16 File Read Bytes/sec 18 File Write Bytes/sec .... Here you can find the corresponding numbers for each string part of the performance counter, like in '\System\% Processor Time': System -> 2 % Processor Time -> 6 Then you can use these numbers to represent the path in numbers: \2\6 User parameters You can deploy some user parameters for the monitoring of Windows performance counters. For example, you can add these to the Zabbix agent configuration file: PerfCounter=UserPerfCounter1,"\Memory\Page Reads/sec",30 or PerfCounter=UserPerfCounter2,"\4\24",30 With such parameters in place, you can then simply use UserPerfCounter1 or UserPerfCounter2 as the keys for creating the respective items. Remember to restart Zabbix agent after making changes to the configuration file. 官方参考文档: https://www.zabbix.com/documentation/2.0/manual/config/items/perfcounters   Demo: Name:CPU utilization Key:perf_counter["\Processor(_Total)\% Processor Time"]  

7. 后记

  • 感谢阅读此手册,个中的不足或错误之处还望不吝赐教。
  • 手册中的参考文献:
  • zabbix中文文档
http://www.linuxmr.com/zabbix2/
  • ini中的时区设置date.timezone = PRC
http://demon.tw/software/php-date-timezone.html
  • 自动化运维之监控篇---利用zabbix自动发现功能实现批量web url监控
http://itnihao.blog.51cto.com/1741976/1129725
  • 最好的参考手册首选官方的帮助文档:
https://www.zabbix.com/documentation/doku.php

posted on 2016-11-15 14:10  歪歪121  阅读(202)  评论(0)    收藏  举报