Zabbix配置手册(摘自网络)... 1
- zabbix简介... 4
1.1 zabbix运行条件... 4
1.2 zabbix功能... 4
1.3 zabbix与NSA优劣势对比... 4
- zabbix配置文件... 5
2.1 说明... 5
2.2 zabbix架构... 5
- 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
- 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
- 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
- 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
- 后记... 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协议)。
IPMI:Agent的另一种方式,主要应用于设备的物理性能监控,例如设备的温度、风扇的转速等。
2.2 zabbix架构
zabbix支持多种网络方式下的监控,可通过分布式的方式部署和安装监控代理,整个架构如图所示。
3. zabbix server安装
- 系统环境:6 32bit
- zabbix版本:0.4
3.1 同步授时中心时间
ntpdate pool.ntp.org
clock -w
注意:这里说的是系统时间,是由linux操作系统维护的。在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS。
3.2 建立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
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 编译安装
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
/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/
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
/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
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
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配置简介
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 创建磁盘读/写操作统计
注意: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
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对应的值,秒或计数
- N:N对应的值
结合本例当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组
- Name:scenario的名字
- 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对应的值,秒或计数
- N:N对应的值
结合本例的结果既是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中的各项配置。
验证告警已成功发送。
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
- host:smtp服务器
- port:smtp服务器端口
- 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 sendmail:msmtp命令路径
- 测试是否可以发出邮件
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功能,利用此功能,即可轻松解决此问题。
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
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
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
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