- zabbix简介
1.1 zabbix 介绍
Zabbix项目由Alexei Vladishev创建,是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。
Zabbix具有如下特点:
- Zabbix是一个企业级的、开源的、分布式的监控套件;
- Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划;
- Zabbix支持polling和trapping两种方式. 所有的Zabbix报告都可以通过配置参数在WEB前端进行访问.Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix可以通过尽可能的配置来扮演监控你的IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司;
1.2 zabbix 功能
具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP 等通用协议监控、 多种告警方式、详细的报表图表绘制)等;
支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)
支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本)
支持分布式,能集中展示、管理分布式的监控点
扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)
编写插件容易,可以自定义监控项,报警级别的设置。
收据收集(可用和性能检测、支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET自定义的检测、自定义收集数据的频率、服务器/代理和客户端模式等)
实时的绘图功能(监控项实时的将数据绘制在图形上面)
WEB 监控能力
ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间
Api 功能
应用api 功能,可以方便的和其他系统结合,包括手机客户端的使用。
1.3 zabbix 组件
zabbix进程组成结构,默认情况zabbix包含如下5个程序:
- zabbix_agentd
客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等;
- Zabbix_get
单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查;
- zabbix_sender
用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据;
- zabbix_server
服务端护程zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终提交到server;
备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。
- zabbix_proxy
zabbix代理守护进程。功能类似于server,唯一不同的是它只一个中转站,它需要把收集到的数据提交到server里;
- zabbix_java_gateway
zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。(需要额外安装)
- 安装zabbix
2.1 安装前准备
2.1.1 解决相关环境
###修改主机名 hostname zabbix_server sed -i 's#HOSTNAME=centos_01#HOSTNAME=zabbix_server#g' /etc/sysconfig/network ###创建用户和组 groupadd zabbix useradd -g zabbix zabbix ###下载软件 wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.4.6/zabbix-2.4.6.tar.gz ###同步时间 ntpdate us.pool.ntp.org echo '*/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org >/dev/null 2>&1' >> /var/spool/cron/root crontab -l ###解决依赖以及安装LAMP环境 yum -y install gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel unixODBC-devel OpenIPMI-devel java-devel libssh2-devel openldap openldap-devel |
2.1.2 配置LAMP环境(不修改无法正常运行zabbix,所以还是动手吧)
sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g" /etc/php.ini sed -i "s#max_execution_time = 30#max_execution_time = 300#g" /etc/php.ini sed -i "s#post_max_size = 8M#post_max_size = 32M#g" /etc/php.ini sed -i "s#max_input_time = 60#max_input_time = 300#g" /etc/php.ini sed -i "s#memory_limit = 128M#memory_limit = 128M#g" /etc/php.ini sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 0\n" /etc/php.ini (默认就好) 检查是否更改: egrep 'date.timezone|max_execution_time|post_max_size|max_input_time|memory_limit|mbstring.func_overload' /etc/php.ini |grep -v ";" |
2.1.3 启动LAMP服务
/etc/init.d/httpd start /etc/init.d/mysqld start chkconfig httpd on chkconfig mysqld on chkconfig --list httpd chkconfig --list mysqld |
2.2 安装配置zabbix
2.2.1 编译安装zabbix
tar zxf zabbix-2.4.6.tar.gz cd zabbix-2.4.6 ./configure --prefix=/usr/local/zabbix-2.4.6 --sysconfdir=/etc/zabbix --enable-server --enable-proxy --enable-agent --enable-ipv6 --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi --with-unixodbc --with-ldap --with-ssh2 --enable-java make && make install |
2.2.2 导入数据库(MySQL数据库)
cd zabbix-2.4.6 mysqladmin -uroot password 'redhat@123' mysql -uroot -predhat@123 mysql> create database zabbix character set utf8; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix@123'; mysql> flush privileges; ###测试登录 mysql -uzabbix -pzabbix@123 ###导入数据库 [root@centos_01 zabbix-2.4.6]# pwd /root/zabbix-2.4.6 mysql -uzabbix -pzabbix@123 zabbix < ./database/mysql/schema.sql mysql -uzabbix -pzabbix@123 zabbix < ./database/mysql/images.sql mysql -uzabbix -pzabbix@123 zabbix < ./database/mysql/data.sql ###创建zabbix相关目录 mkdir /var/log/zabbix chown zabbix.zabbix /var/log/zabbix |
2.2.3 拷贝启动脚本
cp misc/init.d/fedora/core/zabbix_* /etc/init.d/ chmod 755 /etc/init.d/zabbix_* [root@centos_01 zabbix-2.4.6]# grep 'BASEDIR=' /etc/init.d/zabbix_server BASEDIR=/usr/local 注:确保该目录是您的安装目录; |
2.2.4 配置zabbix_server.conf服务端配置文件
sed -i "s/DBUser\=root/DBUser\=zabbix/g" /etc/zabbix/zabbix_server.conf sed -i "/# DBPassword=/aDBPassword=zabbix@123\n" /etc/zabbix/zabbix_server.conf sed -i "s#tmp/zabbix_server.log#var/log/zabbix/zabbix_server.log#g" /etc/zabbix/zabbix_server.conf ###确认参数是否正常修改; egrep -v "(#|^$)" /etc/zabbix/zabbix_server.conf |
2.2.5 配置zabbix_agentd.conf 文件
sed -i "s/Server\=127.0.0.1/Server\=127.0.0.1,10.190.147.123/g" /etc/zabbix/zabbix_agentd.conf sed -i "s/ServerActive\=127.0.0.1/ServerActive\=10.190.147.123:10051/g" /etc/zabbix/zabbix_agentd.conf sed -i "s#tmp/zabbix_agentd.log#var/log/zabbix/zabbix_agentd.log#g" /etc/zabbix/zabbix_agentd.conf sed -i "#UnsafeUserParameters=0#aUnsafeUserParameters=1\n" /etc/zabbix/zabbix_agentd.conf sed -i 's#Hostname=Zabbix server#Hostname=zabbix_server#g' /etc/zabbix/zabbix_agentd.conf ###确认参数是否正常修改; [root@zabbix_server ~]# egrep -v "(#|^$)" /etc/zabbix/zabbix_agentd.conf LogFile=/var/log/zabbix/zabbix_agentd.log Server=127.0.0.1,10.190.147.123 ServerActive=10.190.147.123:10051 Hostname=zabbix_server |
2.2.6 拷贝网页到apache目录并启动服务
###拷贝网页到apache目录 cp -r ./frontends/php/ /var/www/html/zabbix chown -R apache.apache /var/www/html/zabbix ###启动相关服务 chkconfig zabbix_server on chkconfig zabbix_agentd on ln -s /usr/local/zabbix-2.4.6/sbin/* /usr/local/sbin/ service zabbix_server start service zabbix_agentd start |
2.2.6 网页访问zabbix页面
提示:确保防火墙、selinux正常!(测试环境最好关闭)
http://203.195.132.107/zabbix/setup.php
根据提示,安装完成即可;(默认用户名admin,密码zabbix)
- 客户端agent安装
3.1 Linux安装、配置agent客户端
3.1.1 安装agent客户端
###创建用户和组 groupadd zabbix -g 201 useradd -g zabbix -u 201 -m -s /sbin/nologin zabbix ###安装agent tar zxf zabbix-2.4.6.tar.gz cd zabbix-2.4.6 ./configure --prefix=/usr/local/zabbix-2.4.6 --sysconfdir=/etc/zabbix --enable-agent make && make install ###创建日志目录 mkdir /var/log/zabbix chown zabbix.zabbix /var/log/zabbix ###拷贝服务脚本 cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ chmod 755 /etc/init.d/zabbix_agentd |
3.1.2 配置zabbix_agentd.conf文件
[root@localhost ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf LogFile=/var/log/zabbix/zabbix_agentd.log EnableRemoteCommands=1 Server=10.124.140.253,223.202.119.185 ####zabbix_server_IP ServerActive=10.124.140.253:10050,223.202.119.185:10050 ####zabbix_server_IP Hostname=Zabbix server Timeout=20 UnsafeUserParameters=1 |
3.1.3 启动agent服务
ln -s /usr/local/zabbix-2.4.6/sbin/* /usr/local/sbin/ service zabbix_agentd start |
3.2 SNMP监控方式
3.2.1 安装、配置SNMP服务
###安装 yum -y install net-snmp ###配置SNMP服务 mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak01 cat > /etc/snmp/snmpd.conf << EOF com2sec mynetwork 10.190.147.123 public_monitor com2sec mynetwork 127.0.0.1 public group MyROGroup v2c mynetwork access MyROGroup "" any noauth prefix all none none view all included .1 80 > EOF |
3.2.2 启动SNMP服务
chkconfig snmpd on /etc/init.d/snmpd start |
- 配置zabbix简单监控主机
Host Groups(设备组)->Hosts(设备)->Applications(监控项组)->Items(监控项)->Triggers(触发器)->Actions(告警动作)->Medias(告警方式)->User Group(用户组)->Users(用户)对于实际使用的时候,一般都是采用模板进行监控配置。
注:使用过cacti的都知道,可以先添加主机,然后选择对应模板即可,zabbix 中同样存在此功能。
4.1 zabbix 服务监控
4.1.1 创建主机
Host 是Zabbix 监控的基本载体,所有的监控项都是基于host 的。通过Configuration->Hosts->Create Host 来创建监控设备:
4.1.2 将相关模板链接到新建主机
4.1.3 查看监控数据
4.1.4 查看图表数据
4.2 如何自定义监控?
在自定义监控之前,需要了解几个概念
Items:创建监控项,这里会运用到自定义的key 值
Triggers:创建触发器,这里是监控项达到报警的阈值
Graphs:添加图形
自定义监控,可以在单台机器上面添加,也可以先定义成模板再把模板应用到主机上
面。
首先是创建key 值,
比如我想监控/etc/passwd 文件的行数,则,首先定义key。
4.2.1 Key的创建
客户端配置文件如下:
[root@centos_02 ~]# grep -v "#" /etc/zabbix/zabbix_agentd.conf|grep -v "^$" LogFile=/var/log/zabbix/zabbix_agentd.log EnableRemoteCommands=0 Server=127.0.0.1,10.190.147.123 StartAgents=8 ServerActive=10.190.147.123:10051 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.conf.d/ UnsafeUserParameters=1
echo "UserParameter=count.line.passwd,wc -l /etc/passwd|awk '{print $1}'" > /etc/zabbix/zabbix_agentd.conf.d/count_line_passwd.conf cat /etc/zabbix/zabbix_agentd.conf.d/count_line_passwd.conf ###重启zabbix_agentd服务 service zabbix_agentd restart |
Key 值创建后是否成功,可以用命令行来检测
/usr/local/zabbix-2.4.6/bin/zabbix_get -s 127.0.0.1 -k count.line.passwd |
4.2.2 WEB页面创建模板
注:创建模板过程太过复杂,这里暂时不讲解;
4.2.3 导入模板并添加到主机中
注:导入模板太简单,不写操作步骤;
4.3 监控应用服务
4.3.1 监控MySQL服务
导入模板
修改配置
vim /etc/zabbix/zabbix_agentd.conf ... # Include=/usr/local/etc/zabbix_agentd.userparams.conf # Include=/usr/local/etc/zabbix_agentd.conf.d/ # Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf ... |
创建Key
cp /root/zabbix-2.4.6/conf/zabbix_agentd/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/ ls /etc/zabbix/zabbix_agentd.conf.d/ cat /etc/zabbix/zabbix_agentd.conf.d/userparameter_mysql.conf |
重启服务
/etc/init.d/zabbix_agentd restart |
验证效果
4.3.2 监控Nginx服务
导入模板(略)
创建监控脚本
[root@localhost ~]# cat /etc/zabbix/scripts/nginx_status.sh #!/bin/bash # DateTime: 2015-10-25 # Description:zabbix监控nginx性能以及进程状态
HOST="10.125.56.251" PORT="8080"
# 检测nginx进程是否存在 function ping { /sbin/pidof nginx | wc -l } # 检测nginx性能 function active { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } # 执行function $1 |
Zabbix 客户端配置
[root@localhost ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf LogFile=/var/log/zabbix/zabbix_agentd.log EnableRemoteCommands=1 Server=10.124.140.253,223.202.119.185 StartAgents=8 ServerActive=10.124.140.253 Hostname=zxtweb03 Timeout=30 Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1 |
Zabbix Server 测试
/usr/local/zabbix/bin/zabbix_get -s 10.125.56.251 -k 'nginx.status[accepts]' |
效果展示
提示:分别表示活动连接数、读连接数、写连接数、等待连接数;
提示:分别表示接受连接数、处理连接数、请求数;
4.3.3 监控 HAproxy 服务