一、简介
Zabbix是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。
官方网站:http://www.zabbix.com
官方文档:http://www.zabbix.com/documentation/2.0/manual/quickstart
1、功能
具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制)支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。Server对设备性能要求低(实际测试环境:虚拟机CentOS5,2GCPU 1G内存,监控5台设备,CPU使用率基本保持在10%以下,内存剩余400M以上);支持设备多;支持分布式集中管理;开放式接口,扩展性强。
2、说明
Server:指安装zabbix服务的服务器(以下简称服务器端),是最重要的部份,主要安装在linux系统上(支持多种操作系统),采用mysql存储监控数据并使用apache+php的方式呈现。即Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下。
Agent:指安装在被监控设备上的zabbix代理(以下简称代理),被监控设备上的数据由代理收集后统一上传到服务器端由服务器端收集、整理并呈现。目前已有的agent基本支持市面常见的OS,包含Linux、Solaris、Sun、windows等。
SNMP:也是agent的一种,指支持SNMP协议的设备(也可以是服务器),通过设定SNMP的参数将相关监控数据传送至服务器端(大部份的交换机、防火墙等网络设备都支持SNMP协议)。
IPMI:Agent的另一种方式,主要应用于设备的物理性能监控,例如设备的温度、风扇的转速等。
3、Zabbix架构
Zabbix支持多种网络方式下的监控,可通过分布式的方式部署和安装监控代理,整个架构如下图所示。
二、环境说明
Hostname |
IP | Software |
server | 192.168.0.115 | apache、mysql、mhp、zabbix20、zabbix20-agent、zabbix20-server、zabbix20-server-mysql、zabbix20-web、zabbix20-web-mysql、net-snmp-devel |
client | 192.168.0.114 | zabbix20-agent |
关闭防火墙:iptables -F,SELINUX=disabled
三、安装配置
1、服务端安装zabbix
1)安装epel的扩展源
[root@server ~]# yum install -y epel-release
2)安装lamp环境
[root@server ~]# yum install -y httpd mysql mysql-libs php php-mysql mysql-server php-bcmath php-gd php-mbstring
3)安装zabbix服务
[root@server ~]# yum install zabbix20 zabbix20-agent zabbix20-server zabbix20-server-mysql zabbix20-web zabbix20-web-mysql net-snmp-devel
2、服务端配置数据库
1)修改mysql配置文件
[root@server ~]# vim /etc/my.cnf //修改或增加如下内容
[mysql] default-character-set = utf8 [mysqld] character_set_server = utf8 |
2)启动httpd和mysqld服务
[root@server ~]# /etc/init.d/httpd start
[root@server ~]# /etc/init.d/mysqld start
3)建数据库以及导入数据
[root@server ~]# mysql -uroot -e "create database zabbix" //创建库名为:zabbix
[root@server ~]# mysql -uroot -e "grant all on *.* to 'zabbix'@'localhost' identified by 'zabbix';"
//新建一个用户为:zabbix,密码为:zabbix
[root@server ~]# mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/schema.sql
[root@server ~]# mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/p_w_picpaths.sql
[root@server ~]# mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/data.sql
3、服务端配置zabbix
1)编辑zabbix服务配置文件
[root@server ~]# vim /etc/zabbix/zabbix_server.conf //找到这三项
DBName=zabbix //数据库名 DBUser=zabbix //用户名 DBPassword=zabbix //用户密码 |
2)启动zabbix服务
[root@server ~]# /etc/init.d/zabbix-server start
[root@server ~]# /etc/init.d/zabbix-agent start
我们可以查看下zabbix-server和zabbix-agent是否启动起来:
[root@server ~]# ps aux | grep zabbix
也可以查看下zabbix-server和zabbix-agent监听的端口:
[root@server ~]# netstat -lnp | grep zabbix
4、网页上安装zabbix
1)浏览器输入: http://192.168.0.115/zabbix
说明:
这里最上面提示waring,说未设置timezone,下面我们设置timezone
[root@server ~]# vim /etc/php.ini //找到添加一行
date.timezone='Asia/Chongqing'
重启httpd服务
[root@server ~]# /etc/init.d/httpd restart
刷新页面后,waring提示消失。
2)接着点击next,会出现如下参数Fail。
我们编辑配置php.ini文件
[root@server ~]# vim /etc/php.ini //修改以下参数
post_max_size = 16M max_execution_time = 300 max_input_time = 300 |
重启httpd服务
[root@server ~]# /etc/init.d/httpd restart
点击Retry,全部显示OK;
接着点击Next,输入账号密码后点击Test connection,显示OK;
3)点击Next,其他默认,只输入Name 为0.115(可以自定义);点next,再点next,最后点finish。
默认管理员账号为:admin,密码为:zabbix 。最后进入到网页服务端。
注意
这时可能会遇到“zabbix server is not running the information displayed may not be current”这样的错误:
解决思路:
1)需要编辑一下 /etc/zabbix/zabbix_server.conf ,配置DBUser, DBPassword
2)一定要关闭selinux
临时关闭:setenforce 0,立即生效
永久关闭:vim /etc/selinux/config,修改SELINUX=disabled,重启Linux才可生效
5、接入要监控的客户端主机
1)客户端安装zabbix20-agent
[root@client ~]# yum install zabbix20-agent
2)编辑配置文件
[root@client ~]# vim /etc/zabbix_agentd.conf
Server=192.168.0.115 //服务端IP ServerActive=0.0.0.0:10050 //监听的端口 Hostname=tpp //自定义,但是要唯一 |
启动客户端
[root@client ~]# /etc/init.d/zabbix-agent start
3)在服务端执行命令
[root@server ~]# zabbix_get -s 192.168.0.114 -p10050 -k "system.hostname"
client //显示出了客户端的hostname,说明可以正常通信
4)在web界面下,点”configuration” --> “hosts” --> 右上角点”Create Host”
host name为:tpp (自定义)
visible name为:tpp (自定义)
groups:Linux servers
ip address 写入客户端ip:192.168.0.114
其他的默认即可。
配置监控项目模板:点“Templates”, 点 "add", 在弹出的小窗口中选择Template OS Linux, 然后点select, 最后点save
然后我们可以在 "Monitoring" --> "Latest data" 下查看到刚添加的Host "tpp",也可以查看各状态
注意:
若报错:Received empty response from Zabbix Agent at [192.168.0.115]. Assuming that agent dropped connection
可以查看客户端的/etc/zabbix_agentd.conf配置文件是否正确。
5)自定义templates
Zabbix自带了很多模板,模板中有很多监控项目,比如CPU、网卡、内存、进程等等。使用系统自带模板有点太多了,所以我们可以自定义模板。
点configuration 选择 templates,点右上角的create template --> Template name和Visible name 自定义,Groups 选择templates, 点save。 |
然后我们去挑选一些项目拷贝到该模板下:比如我们找到Template OS Linux
点一下items,选择我们想要的项目,然后在下面选择copy selected to … 然后点go ,Group 选择templates, 找到刚才我们自定义的templates,点copy,点configuration 选择 templates可以看到新建的templates中已经有刚刚我们copy的items了。 |
我们可以使用和上面相同的方法自定义拷贝Triggers(触发器 ),它用来设置告警的阀值,当然我们也可以自定义编辑它。
监控客户端网卡流量 http://www.apelearn.com/bbs/thread-8091-1-1.html
四、zabbix 配置邮件告警
设置触发器的目的是为了让监控的服务实现告警, 那告警如何告呢, 下面我们来配置一下邮件告警。发邮件是服务器通过自己的 sendmail 服务发出的,有时候如果配置不合适或者服务没有启动,我们是发不出邮件的。
1、测试邮件服务
[root@server ~]# yum install -y sendmail
[root@server ~]# /etc/init.d/sendmail start
[root@server ~]# echo "test mail" |mail -s "test" [email protected]
[root@server ~]# mailq
说明
"test mail"为邮件内容
"test"为主题
"[email protected]"为收件人
"mailq"是查看是否发送成功。
如果是虚拟机,很有可能是收不到邮件的,但如果是真机还是可以收到的,只不过很有可能在垃圾邮件箱里。除了sendmail 服务外,我们还可以用 postfix 服务发邮件。
2、配置邮件告警
1) 配置报警脚本
[root@server ~]# mkdir -p /home/zabbix/bin //邮件告警脚本存放目录
[root@server ~]# vim /home/zabbix/bin/baojing.sh //告警脚本,写入以下内容
#! /bin/bash echo "$3" |/bin/mail -s "$2" $1 //$3为邮件内容,$2为主题,$1为收件人 |
保存后,修改文件的权限
[root@server ~]# chmod +x /home/zabbix/bin/baojing.sh
2)修改zabbix_server配置文件
[root@server ~]# vim /etc/zabbix_server.conf //修改如下内容
AlertScriptsPath=/home/zabbix/bin/ //用户自定义的 media types 脚本 ExternalScripts=/home/zabbix/bin/ //用户自定义的检查的脚本(item) |
3)在浏览器配置
创建 mediea types:
"Administration" -->"Media types",点击右上角"Create Media Type"其中 Description 填"baojing" 或其它自定义名称,Type 选择"Script",Script name填"baojing.sh"然后点"Save"。 |
创建 user:
"Administration"--> "Users" 在右上角,选择"Users",点击"Create User", alias: test1,自定义 name 和 lastname password:123456;groups 选择 guests, 回到上面点一下 media -->type 选择 baojing,send to 写要发送邮件的邮箱,点 add, 最后点 save。 |
创建 action:
"configuration" --> actions,右上角"Create Actions", Name 自定义,我这里写"baojing",其他默认,然后点右侧的"Operations"下的"New"按钮,"Operation Type"选择"Send message",“Send to User groups”选择一个或多个要发送消息的用户组, Send to Users 选择我们之前新增的 test1, “Send only to”选择 baojing , 点一下 add,最后点 save。 |
到这里我们的告警服务就配置完成了。
关于中文问题:
1、更改为中文界面:
最右上角 Print-->Language :Chinese(zh_CN)
2、有乱码(方框):
yum 安装的zabbix 字体位置可以通过查看配置文件:/usr/share/zabbix/include/defines.inc.php
define('ZBX_FONTPATH', '/usr/share/fonts/dejavu');
我们需要下载一个中文字体放到这里来,虽然这个目录下有个 DejaVuSans.ttf 但是不管用
[root@server ~]# wget 'http://downloads.sourceforge.net/project/wqy/wqy-microhei/0.2.0-beta/wqy-microhei-0.2.0-beta.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fwqy%2Ffiles%2Fwqy-microhei%2F0.2.0-beta%2F&ts=1365584502&use_mirror=jaist' -O wqy-microhei-0.2.0-beta.tar.gz
[root@server ~]# tar -zxvf wqy-microhei-0.2.0-beta.tar.gz
[root@server ~]# scp wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
参考文章
自定义脚本:http://www.linuxidc.com/Linux/2013-11/92476.htm
zabbix agent 类型所有key:http://www.iyunv.com/thread-22959-1-1.html
zabbix中文配置指南:http://waringid.blog.51cto.com/65148/955939/