*******需要配置网易YUM源来安装相关依赖包:
name=local_yum
baseurl=http://mirrors.163.com/centos/6/os/x86_64/
enabled=1
gpgcheck=0
1》Zabbix介绍:
zabbix是一个国外的开源网络监控系统,后台配置逻辑分类清晰,容易配置上手,我们都知道cacti和nagios,是运维圈内常用的监控和流量互补工具,那么由于cacti依 赖于snmp协议,导致有网络波动的时候部分数据丢失,nagios虽然不依赖snmp,但是初始配置及需要读懂插件的语法,导致很多初学者望而却步,那么zabbix集合了cacti以 及Nagios 两者的制图和动态监控的优点,而且大部分的插件以及常用的模板都是系统自带的,最重要的是配置和功能分类清晰明了,省出很多学习的时间的,而且可以根据个 人爱好定义不同的语言支持;
1>特点
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能等等
2>功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
3>工作原理与架构:
zabbix由2部分构成,zabbix server与可选组件zabbix agent:
zabbix server:可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台之上;
zabbix agent:需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux ,Solaris, HP- UX, AIX, Free BSD, Open BSD, OS X, Tru64/OSF1,
Windows NT4.0, Windows 2000/2003/XP/Vista等系统之上;-
Server:指安装zabbix服务的服务器(以下简称服务器端),是最重要的部份,主要安装在linux系统上(支持多种操作系统),采用mysql存储监.控数据并使用apache+php 的方式呈现;
Agent:指安装在被监.控设备上的zabbix代理(以下简称代理),被监.控设备上的数据由代理收集后统一上传到服务器端由服务器端收集、整理并呈现;
SNMP:也是agent的一种,指支持SNMP协议的设备(也可以是服务器),通过设定SNMP的参数将相关监.控数据传送至服务器端(大部份的交换机、防火墙等网络设备 都支持SNMP协议);
IPMI:Agent的另一种方式,主要应用于设备的物理性能监.控,例如设备的温度、风扇的转速等;
Zabbix体系结构图:
2》前期准备:
1>安装软件:
1)打开http://www.zabbix.com/download.php下载statble稳定源码包(用于安装Zabbix Server)
2)找到和2.2对应的Agen包,并且下载(用户被监控端安装),选择内核版本为2.6 架构为adm X86_64位安装包;
2>安装依赖包
# yum -y install make mysql-server httpd php mysql-devel gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml
# useraddzabbix
3>启动Mysql
# /etc/init.d/mysql start
# mysqladmin–u root –p password ‘123456’
# mysql–uroot–p
4>创建zabbix数据库
Mysql> create database zabbix character set utf8;
Mysql> grant all on zabbix.* TO zabbix@'localhost' identified by 'zabbixpass';
Mysql> flush privileges;
5>导入zabbix数据
# tar -xvf zabbix-2.2.2.tar.gz
# cd zabbix-2.2.2/database/mysql
# mysql -uroot -p123456 -h localhostzabbix<schema.sql
# mysql -uroot -p123456 -h localhostzabbix<images.sql
# mysql -uroot -p123456 -h localhostzabbix<data.sql
6>调整服务器时间
# date -s "2014-3-11 11:22:35"如果时间正确的话,这一步直接跳过;
3》Zabbix服务器安装部署
1>安装Zabbix
#cd zabbix-2.2.2
# ./configure --enable-java--with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --prefix=/usr/local/zabbix
# make&&mamke install
2>增加端口
#vim /etc/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>修改apache配置文件
# vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.html index.html.varindex.php
4>修改zabbix配置文件
# vim/usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix连接数据库的账号,与Mysql授权账号对应
DBPassword=zabbixpass连接数据库的密码,与Mysql授权账号的密码对应
5>修改服务启动文件
回到编译安装目录
# cd zabbix-2.2.2/misc/init.d/fedora/core5
# cp zabbix_* /etc/init.d/
# chmod 700 /etc/init.d/zabbix_*
# vim /etc/init.d/zabbix_server
安装路径修改为
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
# vim /etc/init.d/zabbix_agentd
安装路径修改为
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
6>启动服务并设置开机启动
# /etc/init.d/zabbix_server start
# /etc/init.d/zabbix_agentd start
# chkconfigzabbix_server on
# chkconfigzabbix_agentd on
7>修改php相关参数
# vim /etc/php.ini 找到如下几项,改成下面的值,前面有;号的要删掉
max_execution_time = 300
max_input_time = 300
date.timezone = PRC
post_max_size = 32M
8>启动apache
# /etc/init.d/httpd restart
# cd zabbix-2.2.2/frontends
# cp -rf php /var/www/html/zabbix
# chown -R zabbix:zabbix /var/www/html/zabbix
9>登陆WEB进行配置Zabbix
(1)出现Welcome to Zabbix 2.2 Next下一步
(2)Check of pre-requisties检查配置环境是否OK,Next下一步
(3)配置Configure DB connetcion配置DB,主要此处和授权时要一样
(4)Zabbix服务器地址及端口和名称
(5) Pre-Installation summary 信息确认
(6)zabbix会根据5步的信息生成一个zabbix.conf.php配置文件,我们需要手工把这个配置文件放入apache的默认WEB目录/var/www/html/zabbix/conf
(7)Zabbix配置完成
默认用户admin 密码为:zabbix
4》Linux被监控端部署
1>创建用户
# groupadd zabbix
# useradd –g zabbix zabbix –s /sbin/nologin
2>解压Agent包
zabbix_agents_2.2.1.linux2_6.amd64.tar.gz都是官方已经编译好的。直接解压到目录就行了。
# mkdir /usr/loca/zabbix
# tar -xvf zabbix_agents_2.2.1.linux2_6.amd64.tar.gz -C /usr/local/zabbix/
# chown–R zabbix:zabbix /usr/local/zabbix
3>配置agent文件
只要这4个参数。其它的全部注释掉
# vim /usr/local/zabbix/conf/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log #日志文件
SourceIP=127.0.0.1 #agen本机IP
Server=192.168.100.214 #zabbix_server IP地址
ListenPort=10050 #agent 监听端口
Hostname=DB206 #本机hostname
#ServerActive=127.0.0.1注释掉
4>启动服务
# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
# cat/tmp/zabbix_agentd.log
# echo “/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf”>> /etc/rc.d/rc.local
# ps–ef | grepzabbix
5》Windows被监控端部署
1>下载Agent安装包
http://www.zabbix.com/download.php
2>解压配置
(1)在C:\Program Files\下创建zabbix文件夹
(2)解压到 C:\Program Files\zabbix下,根据操作系统删除不对应的目录,如果是win64的系统就把win32目录删除掉。只保留win64 ,如果是32位的那么就删除 掉win64目录,
(3)并在该目录下创建一个zabbix_agentd.conf文件,内容为
LogFile=C:\Program Files\zabbix\zabbix_agentd.log #日志文件
SourceIP=127.0.0.1 #agen本机IP
Server=192.168.100.214 #zabbix_server IP地址
ListenPort=10050 #agent 监听端口
Hostname=testwindows #本机hostname
UnsafeUserParameters=1 #开启定义KEY
3>安装并启动服务
(1)开始运行输入CMD
(2)安装客户端
C:\>cd C:\Program Files\zabbix\bin\win32
C:\Program Files\zabbix\bin\win32>zabbix_agentd.exe -c "c:\Program Files\zabbix
conf\zabbix_agentd.conf" -i
zabbix_agentd.exe [2024]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [2024]: event source [Zabbix Agent] installed successfully
(3)启动服务
C:\Program Files\zabbix\bin\win32>zabbix_agentd.exe -c "c:\Program Files
conf\zabbix_agentd.conf" -s
zabbix_agentd.exe [2044]: service [Zabbix Agent] started successfully
zabbix_agentd.exe参数含义:
-c 制定配置文件所在位置
-i 安装客户端
-s 启动客户端
-x 停止客户端
-d 卸载客户端
4>检查服务
6》Zabbix默认模板应用
1>修改默认模板
(1)选择组态à模板àTemplate OS Linux 模板(系统自带)
(2) Template OS Linux说明
(3)CPU项目分解
(4)filesystem文件系统分解
(5)General基本信息
(6)Memory内存信息
(7)Network interfaces网络接口
(8)OS 项目信息
(9)Performance 项目信息
因为CPU和Performance都包含这些项目,在CPU里面已经有应用所有这里全部停止掉;
(10)Processes 进程信息
OK。模板分析完成,我们接下来定义主机;
2>创建一个主机
(1)选择-->组态->主机->创建主机
3>为主机添加模板
4>查看监控后的事实数据
7》Zabbix定义模板应用
说明:根据企业的业务内容来自定义合适的模板,所有主机都可以使用这个定义模板,这样方便管理。
1>首先创建个人模板
这里名称可以随意。我这里定义为:alvin_check_all
2>在被监控端定义KEY和脚本
# mkdir /usr/local/zabbix/scripts
# vim /usr/local/zabbix/scripts/httpd.sh 编辑一个检测httpd状态的脚本,并且返回值为1
#!/bin/bash
aa=`/etc/init.d/httpd status |grep "pid" |wc -l` #如果htttp服务正常这个值为1,不为1表示错误
echo $aa
# chownzabbix:zabbix–R /usr/local/zabbix/scripts
3>在被监控端开始定义KEY的使用
# cd /usr/local/zabbix/conf/
# vimzabbix_agentd.conf
UnsafeUserParameters=1 #开启定义KEY的参数
UserParameter=check.http.serivces,/usr/local/zabbix/scripts/httpd.sh
#key值为check.http. services应用脚本为:/usr/local/zabbix/scripts/httpd.sh
#语法为:UserParameter=KEY, <脚本/命令>脚本或者命令都可以,以上应用是脚本
4>重启被监控端的agent服务
# ps -ef | grepzabbix |grep -v "grep " |xargs kill -9
# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
5>回到主Zabbix服务器命令测试
# cd /usr/local/zabbix/bin/
# ./zabbix_get -s 192.168.100.206 -p 10050 -k "check.http.serivces"查看返回值是否为脚本的正确值。
如果返回值不对,在agetn被监控端,切换zabbix用户尝试执行这个脚本,看看到底哪里出问题了。
比如:su - zabbix
bbix@slave scripts]$ /etc/init.d/httpd status
httpd已死,但是subsys被锁
解决:在监控端agent,将apache组加入到zabbix
usermod–G apache zabbix
6>回WEB界面自己定义模板添加应用集
(1)创建一个名为httpd的应用集
7>为应用集添加一个监控项目
8>为项目添加一个触发报警器
(1)开始创建
(2)定义项目值
(3)保存退出
9>为主机DB206增加一个自定义模板
(1)添加一个自定义模板
(2)验证自定义模板是否成功
8》Zabbix定义邮件报警通知
1>修改zabbix server hostname
声明:在配置zabbix的Email报警之前,需要将sendmail使用的域名进行相应的修改,系统默认为localhost.localdomain,其实不改也行,不过有些pop3服务器会过滤掉来 自localhost.localdomain的邮件,导致邮件不能正常查收,所以,最好是改一下 hostname,确保邮件发送的成功率;
# vim /etc/hosts
127.0.0.1 zabbix.alvin.comlocalhost.localdomainlocalhost
# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zabbix.alvin.com
# hostname zabbix.alvin.com
# exit 重新登录终端。生效
2>安装sendmail
# yum -y install sendmail
3>修改mail access
# vim /etc/mail/access
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1
Connect:zabbix.alvin.com RELAY
4>修改maill hostname
# vim /etc/mail/local-host-names
zabbix.alvin.com
5>重启动sendmail
# /etc/init.d/sendmail
6>测试smtp域名是否为zabbix.alvin.com
# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 zabbix.alvin.com ESMTP Postfix
7>创建一个告警媒介
(1)创建一个告警媒介类型
(2)设置详细内容
8>创建一个告警动作
(1)组态->动作->创建一个动作
(2)设置动作
(3)设置操作
9>修改一个用户组
(1)管理->用户->选择组->点击对应的用户
(2)点击Admin
(3) 选择告警媒介,添加->然后添加收件人,
测试、在QQ邮箱里面,增加白名单
将zabbix@zabbix.alvin.com增加到白名单,然后停止一个服务,开始测试,可以将收件人QQ邮箱改成139邮箱。可以实现短信提示+邮件报警;
在触发器里面如果不勾选次项,那么系统在遇到故障的时候发一次邮件,如果勾选上了将根据触发器的更新时间来不停地发送错误邮件或者短信
# yum –y install mail 安装mail客户端
# /etc/init.d/postfix stop关闭postfix
# /etc/init.d/sendmail restart
# cat /var/log /maillog邮件日志
9》Zabbix定义短信报警通知
声明:fetion针对对6.0以上的系统支持很不好,建议监控系统使用Centos 5.5 或者centos 5.4
1>飞信安装
http://bbs.it-adv.net/viewthread.php?tid=1081&extra=page%3D1&page=1下载机器人和库文件
# unzip fetion.zip
# mkdir /usr/local/fetion
# cpfetion /usr/local/fetion
# mv lib /usr/local/fetion
# cd /usr/local/fetion
# ls
# export LD_LIBRARY_PATH=/usr/local/fetion/lib
./fetion --mobile=13692xxx096 --pwd=xxxxxxx --to=1369xxxx6096 --msg-utf8=测试
这个会产生一个手机名的验证码图片,打开另外一个终端;
这个136ddddd.jpg 下载下来。然后查看验证码多少。输入验证码这个第一次需要输入。以后就不要了
2>自定义飞信报警脚本
# mkdir /usr/local/sms
# vim /usr/loca/sms/fetionsms.sh
#!/bin/bash
export LD_LIBRARY_PATH=/usr/local/fetion/lib
aa=$@
/usr/local/fetion/fetion --mobile=136xxxxxx096 --pwd=zmypaswd --to=$1 --msg-utf8="$aa"
# chwon–R zabbix:zabbix /usr/local/sms/
测试:
# cd /usr/local/sms/
# ./fetionsms.sh 1369xxxx096 test test2 test3 test 4
SIP-C/4.0 280 Send SMS OK
T: sip:900869406@fetion.com.cn;p=2823
I: 2
Q: 1 M
RQ: 24808655073
L: 112
XI: 8f64794cbd524ebabaffc980e9a38d56
3>创建一个告警媒介
4>编辑配置文件定义脚本路径
# vim /usr/local/zabbix/etc/zabbix_server.conf
找到AlertScriptsPath参数并修改成AlertScriptsPath=/usr/local/sms
# /etc/init.d/zabbix_server重启服务
5>创建一个告警动作
(1)设置动作
(2)设置操作
6>修改一个用户组
(1)管理->用户->选择组->点击对应的用户
(2)点击Admin
(3)编辑媒介,选择上面定义的媒介类型Fetion,然后收件人写入XXXX手机号码
测试、关闭一个服务测试
停止一个服务,开始测试。在触发器里面勾选这个项目,根据触发更新时间发送多次信息,否则之发送一次
7>小技巧
(1)如果短信和邮件一起使用,此动作需要两个动作步骤,一个短信,一个邮件,否则发送短信将失败;
(2)封装的py脚本或者shell脚本,传递参数有规定,参数1为手机号码,参数2为空,参数3为内容,否则短信将只收到一个告警头部;