第一部分:zabbix安装环境简介
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
zabbix的运行即可以基于LAMP的环境,也可以基于LNMP的环境,在部署时根据需要,可自行选择。
本案例是基于LAMP的环境,操作系统使用CentOS7.3,数据库使用Mariadb,zabbix软件版本为zabbix3.2.6。使用系统盘作为本地yum源。
第二部分:zabbix分布式监控系统的拓扑图
第三部分:LAMP环境的搭建
一:配置防火墙
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
1、关闭firewall:
[root@localhost ~]# systemctl stop firewalld.service #停止firewall
[root@localhost ~]# systemctl disable firewalld.service #禁止firewall开机启动
2、安装并配置iptables防火墙
[root@localhost ~]# yum install iptables-services #安装
zabbix是一个基于web的监控系统,需要防火墙为其开放TCP的80端口,Mariadb使用的端口号是TCP的3306,也要开放此端口,zabbix server需要监听TCP和UDP的10051端口,而zabbix agent需要监听TCP和UDP的10050端口,防火墙的配置如下:
[root@localhost ~]# vi /etc/sysconfig/iptables #编辑防火墙配置文件
# Firewall configuration written by system-config-firewall
***# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 10050:10051 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq!
#保存退出
[root@localhost ~]# systemctl restart iptables.service #最后重启防火墙使配置生效
[root@localhost ~]# systemctl enable iptables.service #设置防火墙开机启动
3、关闭SELINUX
[root@localhost ~]# vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
二:安装并配置apache环境
1、安装apache
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl enable httpd.service
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
ServerSignature On #添加,末尾
MaxKeepAliveRequests 500 #添加,增加并发连接数,末尾
Options Includes ExecCGI FollowSymLinks #144行,允许服务器执行CGI及SSI,禁止列出目录
AddHandler cgi-script .cgi .pl #294行,允许扩展名为.pl的CGI脚本运行
AddDefaultCharset GB2312 #316行
DirectoryIndex index.html index.php 164行
此时可访问apache的测试页面,在浏览器中访问HTTP://127.0.0.1,结果如下:
2、安装并配置Mariadb数据库
[root@localhost ~]# yum -y install mariadb mariadb-server
[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# systemctl enable mariadb.service
[root@localhost ~]# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
[root@localhost ~]# mysql_secure_installation #设置mysql密码并初始化
[root@localhost ~]# systemctl restart mariadb.service
[root@localhost ~]# vim /etc/my.cnf
在[mysqld]后添加
lower_case_table_names=0
init_connect=‘SET collation_connection=utf8_unicode_ci’
init_connect=‘SET NAMES utf8’
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
[root@localhost ~]# vi /etc/my.cnf.d/client.cnf
在[client]中添加
default-character-set=utf8
[root@localhost ~]# vi /etc/my.cnf.d/mysql-clients.cnf
在[mysql]中添加
default-character-set=utf8
[root@localhost ~]# systemctl restart mariadb.service
查看mysql的字符集
[root@localhost ~]# mysql -u root -p
MariaDB [(none)]> show variables like ‘%collation%’;
±---------------------±----------------+
| Variable_name | Value |
±---------------------±----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
±---------------------±----------------+
MariaDB [(none)]> exit
3、安装php极其所需组件
yum -y install php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash
以下两个rpm包需要单独下载后方可安装
[root@localhost opt]# rpm -ivh php-bcmath-5.4.16-42.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh php-mbstring-5.4.16-42.el7.x86_64.rpm
[root@localhost ~]# vi /etc/php.ini
date.timezone =Asia/shanghai #878行
expose_php = off #375行,禁止显示php版本的信息
short_open_tag = on #211行,支持php短标签
max_execution_time = 300 #384
max_input_time = 300 #394
post_max_size = 16M #672
[root@localhost ~]# systemctl restart mariadb.service
[root@localhost ~]# systemctl restart httpd.service
5、测试lamp环境
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vi index.php
打开浏览器,访问HTTP://127.0.0.1,结果如下
第四部分:Zabbix Server的安装
zabbix server和zabbix agent都在同一个源码包中,可以到zabbix的官方网站上下载:http://www.zabbix.com/download.php,本案例使用的是zabbix3.2.6的版本。
一:配置数据库
1、 将zabbix源码包拷贝到/opt下,解压zabbix源码包
[root@localhost opt]# tar zxvf zabbix-3.2.6.tar.gz
2、为zabbix创建数据库用户
[root@localhost opt]# mysql -u root -p
MariaDB [(none)]> create database zabbix character set utf8;
MariaDB [(none)]> grant all on zabbix.* to ‘zabbix’@‘localhost’ identified by ‘zabbix’;
MariaDB [(none)]> flush privileges;
3、导入数据库
zabbix的源码包中已经包含有zabbix所需的数据库文件,直接导入即可使用,操作如下:
MariaDB [zabbix]> use zabbix;
MariaDB [zabbix]> Source /opt/zabbix-3.2.6/database/mysql/schema.sql;
MariaDB [zabbix]> Source /opt/zabbix-3.2.6/database/mysql/images.sql;
MariaDB [zabbix]> Source /opt/zabbix-3.2.6/database/mysql/data.sql;
MariaDB [zabbix]> exit
3、安装zabbix server
[root@localhost opt]# cd zabbix-3.2.6
为了保证服务器的安全,为zabbix设置运行账户:
[root@localhost zabbix-3.2.6]# groupadd zabbix
[root@localhost zabbix-3.2.6]# useradd zabbix -g zabbix -s /bin/nologin
[root@localhost zabbix-3.2.6]# yum -y install gcc* mysql-devel curl-devel libxml2 libxml2-devel unixODBC-devel
[root@localhost zabbix-3.2.6]# yum -y install net-snmp-devel
[root@localhost zabbix-3.2.6]# ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
[root@localhost zabbix-3.2.6]# /sbin/ldconfig
如果要安装zabbix server 和zabbix agent的基本功能,可以如下进行configure:
./configure –enable-server --enable-agent --with-mysql
如果需要监控虚拟机的功能,需要添加–with-libxml2;
如果需要开启SNMP监控,需要添加 --with-snmp。
如果想一步到位,可以执行以下配置:
[root@localhost zabbix-3.2.6]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc --enable-proxy --with-mysql=/usr/bin/mysql_config
配置成功后,会看到如下提示:
接下来就可以直接开始安装:
[root@localhost zabbix-3.2.6]# make install
4、安装后的优化
安装结束后需要优化相关的命令路径:
[root@localhost zabbix-3.2.6]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
[root@localhost zabbix-3.2.6]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
查看zabbix的相关服务:
[root@localhost zabbix-3.2.6]# cat /etc/services | grep zabbix
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
将zabbix server和zabbix agent的服务脚本拷贝到服务目录,并设置执行权,便于操作zabbix服务的运行:
[root@localhost ~]# cp /opt/zabbix-3.2.6/misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
[root@localhost ~]# cp /opt/zabbix-3.2.6/misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agent
[root@localhost ~]# chmod +x /etc/init.d/zabbix_server
[root@localhost ~]# chmod +x /etc/init.d/zabbix_agent
[root@localhost ~]# chkconfig zabbix_server on
[root@localhost ~]# chkconfig zabbix_agent on
5、设置zabbix server参数
(1)设置zabbix的主目录
[root@localhost ~]# vi /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix/ #22行
(2)生成zabbix的网页代码
zabbix的网页代码在zabbix的源码包中,解压后拷贝到/var/www/html下并设置其归属:
[root@localhost ~]# cp -r /opt/zabbix-3.2.6/frontends/php/ /var/www/html/zabbix
[root@localhost ~]# chown -R apache.apache /var/www/html/zabbix
(3)复制zabbix网站的数据库链接文件并修改其参数
[root@localhost ~]# cp /var/www/html/zabbix/conf/zabbix.conf.php.example /var/www/html/zabbix/conf/zabbix.conf.php
[root@localhost ~]# vi /var/www/html/zabbix/conf/zabbix.conf.php
off [root@localhost ~]# setsebool httpd_can_network_connect 1 [root@localhost ~]# getsebool -a | grep httpd httpd_can_network_connect --> on 使用火狐浏览器打开HTTP://127.0.0.1/zabbix,结果如下: 其中: Username为Admin (A为大写) Password为zabbix 第五部分:安装Zabbix客户端 一:CentOS版本:7.3下安装客户端 Zabbix版本: 3.2.6 1、添加用户群组 [root@localhost ~]# groupadd zabbix [root@localhost ~]# useradd -g zabbix -m zabbix 2、解压安装包,编译安装 [root@localhost ~]# yum -y inatall gcc* [root@localhost ~]# tar -zxvf zabbix-3.2.6.tar.gz [root@localhost zabbix-3.2.6]# #cd zabbix-3.2.6 [root@localhost zabbix-3.2.6]# #./configure --prefix=/usr/local/zabbix --enable-agent [root@localhost zabbix-3.2.6]# # make install 3、修改agentd配置文件 [root@localhost ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf Server=X.X.X.X #服务端ip地址,91行 ServerActive= X.X.X.X #服务端ip地址,132行 Hostname=client1 #此主机名需要和zabbix创建被监控主机时的hostname名字一致,143行 4、修改启动配置,添加软链接 [root@localhost zabbix-3.2.6]# cp /opt/zabbix-3.2.6/misc/init.d/tru64/zabbix_agentd /etc/init.d/ [root@localhost zabbix-3.2.6]# chmod +x /etc/init.d/zabbix_agentd [root@localhost zabbix-3.2.6]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ [root@localhost zabbix-3.2.6]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/ 5、设置自启动 [root@localhost ~]# vi /etc/rc.d/init.d/zabbix_agentd #在第二行添加如下内容 #chkconfig: 2345 10 90 #description: zabbix agent 保存后退出文件 [root@localhost ~]# chkconfig --add zabbix_agentd [root@localhost ~]# chkconfig zabbix_agentd on [root@localhost ~]# /etc/init.d/zabbix_agentd restart 二:windows2008r2系统下安装客户端(注意防火墙设置) 1、修改主配置文件 解压zabbix的软件包 找到其中的conf文件夹中的zabbix_agentd.win.conf,将其重命名为zabbix_agentd.conf 修改其中的参数(可以把这个文件拷贝到linux的系统中再修改) Server= X.X.X.X #zabbix服务器的ip地址,windows版的在84行,zabbix_agentd.win.conf是windows版的 ServerActive= X.X.X.X #zabbix服务器的ip地址,windows版的在125行 Hostname=win08b #此主机名需要和zabbix创建被监控主机时的hostname名字一致,在136行 修改完后将zabbix_agentd.conf拷贝到windows Server 2008 R2的C盘 2、安装客户端程序 找到zabbix文件夹下的bin文件夹,64位的windows需要打开win64文件夹,将里面的内容全都拷贝到windows系统的C盘。 打开cmd,进入c盘根目录下(输入“cd:”即可进入),然后执行以下命令: 执行安装:zabbix_agentd.exe --install 开启服务:zabbix_agentd.exe --start 第六部分:修改语言 zabbix server安装完后默认使用的英文,对于中国用户,使用不是很方便,可以修改web界面的语言,以提供对中文的支持。 如图1—5所示,点击右上角的头像图标,进入到系统参数设置的界面,如图1—6,找到language下拉菜单,选择中文,点击下方的update即可。 图1—5 图1—6 第七部分:Zabbix监控设置 本章节主要讲解监控设置过程中需要添加并设置的各个组件,在这个过程中,如果需要接收报警邮件,还需要对邮件服务进行设置。 其设置思路包括: n 添加管理账户 n 添加被监控设备 n 添加监控项 n 添加触发器 n 安装并配置邮件服务 n 设置邮件发送脚本 n 设置报警媒介 第一节:添加管理账户 在安装完zabbix server以后系统会自动创建一个名为zabbix的账户,该账户是zabbix server的管理员账户。可以为zabbix创建其他的用户,以便管理zabbix系统。 如图4—1所示,在一级菜单栏中点击管理,再点击二级菜单中的用户,会看到用户设置界面,点击创建用户按钮就可以为zabbix添加用户。 图4—1 在添加用户是需要填写的信息如图4—2所示,在填写完后点击页面下方的添加按钮即可。 图4—2 第二节:添加被监控设备 在zabbix中被监控的服务器称为Host。 创建主机的过程如图4—3所示,点击主菜单的配置,在点击二级菜单的主机,可以看到右侧的创建主机按钮,点击后可进入主机创建的界面,如图4—4所示填写基本信息后点击页面最下方的添加按钮即可。 图4—3 图4—4 添加完主机后可以查看主机当前的监控状态,如图4—5所示。 图4—5 如果可用性一栏中显示红色的ZBX,表示Host主机和zabbix server之间的通信不正常,如果ZBX的图标为灰色的,表示很久没有更新数据,或没有可更新的数据。 第三节:添加监控项(Item) 当我们添加完Host后,还不能监控到Host上的任何数据,此时添加进来的Host,只是一个空主机,在没有设置具体的监控项的时候,是没有用的,必须为Host再添加相应的监控项才能监控到数据。所以此时的Host中的可用性ZBX标志是灰色的。 在主菜单上点击配置,在二级菜单中点击主机,如图4—6所示选择需要添加Item的主机,点击他的监控项。在新弹出的界面中点击“创建监控”项按钮,如图4—7所示。 图4—6 图4—7 之后会弹出添加监控项的页面,如图4—8,添加关键参数后点击页面最下方的添加按钮,即可添加新的监控项。添加完成后就可以看到相应的主机中可用性的ZBX项变成了绿色。 图4—8 第四节:添加触发器(Trigger) 当Host主机出现不正常的情况时,会触发一些提示行为,zabbix可以定义这些触发条件,如果某个监控项超出了定义的阈值,就会触发我们定义的触发器。触发器是zabbix警报中的核心之一,功能极其强大。 监控项仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,"触发器"正式 用于为监控项所收集的数据定义阈值。 每一个触发器仅能管理一个监控项,但是可以为一个监控项同时使用多个触发器;意思就是,为一个监控项定义多个具有不同阈值的触发器,可以实现不同级别的报警。 一个触发器由一个表达式构成,它定义了监控项所采集的数据的一个阈值。 一旦某次采集的数据超出了触发器定义的阈值,触发器状态将会转为“问题”;而当采集的数据再次回归至合理的范围内时,其状态将重新返回到“OK”。 点击主菜单的配置,二级菜单中点击主机,如图4—9,找到需要添加触发器的主机,点击“触发器”,打开触发器页面点击右侧的“创建触发器”即可打开触发器创建页面,如图4—10。 图4—9 图4—10 在“名称”栏填写该触发器的名字,如果要检测主机是否重启,可以在表达式中填写表达式:{win08b:system.uptime.change(0)}<0,(关于表达式,会在后续章节中详细讲解),描述中可以填写该触发器的描述信息。 设置完后点击主菜单的“检测中”,在点击二级菜单的“触发器”,选择需要监控的群组和主机,并将触发器状态设置为“任何”,点击应用后就可以看到干才设置的触发器,如图4—11。 图4—11 此时可以重启被监控的主机,待重启结束后可以在“状态”列观察到主机状态出现异常问题,并且可以在“确认”列看到有相应的事件数量,如图4—12。 图4—12 还可以点击“检测中”à“问题”选项看具体的事件,如图4—13。 图4—13 第五节:安装并配置邮件服务 想要实现邮件的发送linux服务器需要设置邮件服务,这里我们使用mailx服务。 首先安装mailx服务 [root@localhost ~]# yum install mailx [root@localhost ~]# vi /etc/mail.rc 添加如下三行,相关参数,请自行设置 set [email protected] smtp=smtp.163.com set [email protected] smtp-auth-password=邮箱密码 set smtp-auth=login 保存退出后,可使用如下命令测试发送, 注意:邮箱密码需要使用权限掩码,登录网易邮箱,选择“设置”-单击“POP3/SMTP/IMAP”-单击左侧栏“客户端授权码”-通过手机验证-获取权限掩码。 邮件发送测试: [root@localhost ~]# echo "zabbix test mail" |mail -s "zabbix" [email protected] 第六节:设置邮件发送脚本 编写zabbix中发送邮件的脚本 [root@localhost ~]# cd /usr/local/zabbix/share/zabbix/alertscripts/ [root@localhost alertscripts]# ls [root@localhost alertscripts]# vi sendmail.sh 添加脚本: #!/bin/sh #export.UTF-8 echo "$3" | sed s/'\r'//g | mail -s "$2" $1 [root@localhost alertscripts]# chown zabbix:zabbix sendmail.sh [root@localhost alertscripts]# chmod +x sendmail.sh 第七节:添加报警媒介 最后设置一下报警动作发送的邮箱:在“管理”à“报警媒介类型”中创建报警媒介,按如下参数填写后点击添加,如图4—14。 名称:Sendmail 类型:脚本 脚本名称:sendmail.sh 添加以下3个参数,分别对应sendmail.sh脚本需要的3个参数:收件人地址、主题、详细内容 {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE} 图4—14 第五节:添加动作(action) Action是Zabbix非常强大的功能,可以基于Event的不同状态,执行不同的操作。 最常见的就是报警时,将报警通过各种方式发送给对应的用户,在Zabbix 中,这个被定义为Action(动作) ,就是当某种Condition符合时,会进行一些操作,这些操作就叫做Action。 Condition译为“条件”,在Zabbix中,Action的触发是需要条件的,比如属于某个Host Group的Host的某个Trigger变为Problem状态。 在Zabbix中,报警的途径是依附于用户的。即不能直接将一个Action设置为给某个邮箱发邮件,一定要设置Action向某个用户发送报警,发送报警的途径是邮箱,那么就会发送到用户的预先设置邮箱地址。 这个邮箱地址叫做用户的Media ,即联系方式。 目前Zabbix支持Action动作根据下面所列出的Events触发: Ø Trigger Events:当Trigger的状态变化,即从OK 到 Problem 或从 Problem 到OK时都会产生。 Ø Discovery Events:当发生网络Discovery的时候产生。 Ø Auto Registration Events: 当有新的Zabbix Agent自动注册到Zabbix的时候产生。 Ø Internal Events:当Item变为“异常”状态 或者Trigger变为“未知”状态时产生。 下面进入动作的配置。 从菜单栏的“配置” → “动作” ,进入界面后,点击“创建动作”按钮,如图4—15。 图4—15 在动作创建页面中的动作选项卡中填写动作名称等相关信息,如图4—16: 图4—16 在操作选项卡中设置操作的具体细节,设置过后点击下方的“添加”,如图4—17: 图4—17 创建完成后可以在动作选项中看到新添加的动作,如图4—18: 图4—18 以上各环节设置完毕后就可以重启被监控的主机,并查看“监控中”à“问题”选项,可以看到相应的邮件发送已完成。然后到邮箱中即可查看到报警邮件