Zabbix分布式监控系统


IP 主机名 节点
192.168.200.50 zabbix-server Server节点
192.168.200.60 zabbix-agent Agent节点

一 基础环境配置

1.虚拟机基础配置(IP,挂载,yum源)

2.更改主机名

# hostnamectl set-hostname zabbix-server
# hostnamectl set-hostname zabbix-agent

3.关闭防火墙

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0

4.添加host映射

# vi /etc/hosts
192.168.200.50 zabbix-server
192.168.200.60 zabbix-agent

二 LNMP环境部署(Zabbix服务端)

1.上传LNMP环境部署包

 2.解压LNMP环境部署源码包

# tar zxvf lnmp1.6-full.tar.gz

3.一键部署LNMP环境

# cd lnmp1.6-full             修改MySQL数据目录:
# vi lnmp.conf     
MySQL_Data_Dir='/data/mysql'
# ./install.sh lnmp           执行脚本

选择MySQL版本:

 设置MySQL密码,选择InnoDB引擎是否开启:

 选择PHP版本:

 选择不安装内存分配器:

 按Enter键开始安装:

 部署成功显示:

测试访问网页:

 

三  Zabbix服务端部署及配置

 1.安装依赖包:

# yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel

2.创建 zabbix 用户

# useradd -s /sbin/nologin zabbix

3.zabbix-4.0.3.tar.gz传到/usr/local/src目录下解压编译安装

# tar zxvf zabbix-4.0.3.tar.gz         #解压源码包
# mkdir /usr/local/zabbix
# mv /usr/local/src/zabbix-4.0.3/* /usr/local/zabbix        #迁移到安装目录
# cd /usr/local/zabbix/
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 

● --prefix指定安装目录

● --enable-server安装Zabbix server

● --enable-agent安装Zabbix agent

● --with-mysql用MySQL来存储

 

编译完成结果:

# make  && make install        #编译安装

4.环境变量设置:

# vi /etc/profile
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
# source /etc/profile
# echo $PATH

查看版本:zabbix_server --version

 5.配置启动脚本:

# cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_server /etc/init.d/
#cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# vi /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix  #zabbix安装目录
# vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix  #zabbix安装目录

添加权限:

# chmod 755 /etc/init.d/zabbix_*

启动Zabbix服务及启动状态:

# systemctl start zabbix_server
# systemctl start zabbix_agentd
# systemctl status zabbix_server
# systemctl status zabbix_agentd

6.登录数据库创建Zabbix用户和导入Zabbix库

Mysql数据库 mysql -h 127.0.0.1 -uroot -p000000
mysql> create database zabbix character set utf8 collate utf8_bin;                               ##创建Zabbix库和设置格式
mysql> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';            ##创建Zabbix用户并分配权限
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
mysql> flush privileges;              ##刷新权限
mysql> set names utf8;                ##设置字符集
mysql> use zabbix                     ##切换到Zabbix库中

把源码/usr/local/zabbix/database/mysql/安装路径下的3个sql文件导入数据库:

mysql> source /usr/local/zabbix/database/mysql/schema.sql
mysql> source /usr/local/zabbix/database/mysql/data.sql
mysql> source /usr/local/zabbix/database/mysql/images.sql
mysql> show tables;        ##查看导入的表格

 7.编辑Zabbix server的配置

# cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak} 
# vi /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1                      ##指定数据库信息(需配合参数 DBSocket 使用)
DBName=zabbix                         ##服务端连接数据库的库名
DBUser=zabbix                         ##连接数据库的用户
DBPassword=zabbix                     ##连接数据库的密码
DBPort=3306                           ##指定连接数据库的端口
Timeout=30                            ##与AGNET和其它外部设备通信超时设置,单位为秒
LogSlowQueries=3000                   ##用于服务端数据库慢查询功能,单位是毫秒
DBSocket=/tmp/mysql.sock              ##指定MYSQL的SOCK连接路径

修改Zabbix目录的权限:

# chown zabbix:zabbix -R /usr/local/zabbix/    

重启服务生效:

# systemctl restart zabbix_server

四 Zabbix Web界面部署

1. 配置Nginx虚拟主机
# vi /usr/local/nginx/conf/vhost/zabbix.com.conf
server
    {
        listen 80;
        server_name zabbix.com www.zabbix.com;
        index index.html index.htm index.php;
        root /data/nginx/zabbix;        ##Zabbix Web界面数据目录
     location ~ [^/]\.php(/|$)
        {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME /data/nginx/zabbix$fastcgi_script_name;
            include fastcgi_params;
        }
    }

源码安装包路径下的文件cpZabbix Web文件目录当中:

# mkdir -p /data/nginx/zabbix
# /etc/init.d/nginx reload        ##生效服务
# cp -rf /usr/local/zabbix/frontends/php/* /data/nginx/zabbix      
2. 修改php.ini的配置文件
# vi /usr/local/php/etc/php.ini
post_max_size = 32M
max_execution_time = 350
max_input_time = 350
date.timezone = Asia/Shanghai
3. 修改php-fpm.conf的配置文件
# vi /usr/local/php/etc/php-fpm.conf
[www]
listen = 127.0.0.1:9000

重启php-fpm服务:

/etc/init.d/php-fpm restart

检查端口是否启动:

# netstat -lntp | grep php
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2141/php-fpm: maste 

4. Web界面部署安装

初始页面:

 

配置数据库连接信息:

配置Zabbix服务端详细信息:

 安装确认信息:

 安装报错:

根据提示下载,并把它放到指定路径/data/nginx/zabbix/conf/zabbix.conf.php

# pwd
data/nginx/zabbix/conf
# ll

重新刷新界面:

登录界面:(账号:Admin 密码:zabbix)

登录后界面:

 五  Zabbix 客户端部署

1. 下载Zabbix客户端安装包
# yum -y install wget
# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.3-1.el7.x86_64.rpm

2. 安装Zabbix客户端

# rpm -ivh zabbix-agent-4.0.3-1.el7.x86_64.rpm

安装完后我们后面经常使用的文件如路径如下:

/etc/zabbix/zabbix_agentd.conf     ##zabbix_agentd配置文件
/etc/zabbix/zabbix_agentd.d         ##zabbix_agentd进程文件
/var/run/zabbix/zabbix_agentd.pid         ##zabbix_agentd pid文件路径
/var/log/zabbix/zabbix_agentd.log         ##zabbix_agentd日志文件路径

备份配置文件:

# cp /etc/zabbix/zabbix_agentd.conf{,.bak} 
# egrep -v '^$|#' /etc/zabbix/zabbix_agentd.conf.bak > /etc/zabbix/zabbix_agentd.conf

修改配置文件:

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0                              ##指定日志文件的大小,单位MB。0表示禁用日志轮转
ListenPort=10050                           ##指定监听端口
StartAgents=3                              ##Zabbix启动之后开启被动监控的进程数量,如果设置    为0,那么Zabbix被动监控被禁用
ListenIP=0.0.0.0                           ##监听IP地址,默认为所有接口
Server=192.168.200.50                      ##允许哪个Zabbix server的IP地址监控本机
#ServerActive=192.168.200.50               ##Zabbix 主动监控server的ip地址
Hostname=zabbix agent        
Include=/etc/zabbix/zabbix_agentd.d/*.conf    ##自定义配置文件

重启生效配置:

# systemctl restart zabbix-agent

查看端口10050是否启动:

# netstat -lntp | grep zabbix 

 六  Zabbix Web界面的使用管理操作

1. 首先设置中文

2. 解决中文乱码问题

从Windows控制面板找到字体,选择字体文件,拷贝到Zabbix服务器的/data/nginx/zabbix/fonts目录下。

 

 

 将DejaVuSans.ttf字体备份起来,然后用simhei.ttf重命名成DejaVuSans.ttf

重新刷新页面后中文乱码消失:

3. 创建客户端监控主机

1.创建群组

找到配置→主机→创建主机:

 

接着配置主机链接模板,选择Template OS Linux,单击“添加”按钮。

 之后在最新数据中查看结果:

 

4. 创建模板

选择配置→模板→创建模板→添加监控项

选择自带的监控项:

 七 Zabbix自定义监控项

1.配置自定义监控脚本,修改agent配置文件:

# vi /etc/zabbix/zabbix_agentd.d/users.conf
UnsafeUserParameters=1
UserParameter=users, /bin/bash /scripts/user.sh        ##存放脚本位置 

2.配置监控脚本:

# mkdir /scripts
# vi /scripts/user.sh
#!/bin/bash
user=$(who |wc -l)
if [ $user -gt 3 ];then
        echo '1'
else
        echo '2'
fi

3.添加权限:

# chown -R zabbix.zabbix /scripts/
# chmod 777 /scripts/user.sh

4.测试脚本:

./user.sh

如果返回值为1说明在线用户超过3个,如果返回值为2,说明在线用户不超过3个;

生效配置:

# systemctl restart zabbix-agent
# systemctl status zabbix-agent
# netstat -lntp | grep zabbix  ##查看端口是否都启动了

 5.服务端测试:

# zabbix_get -s 192.168.200.60 -k users 

6.进入Zabbix Web配置;

流程:配置→主机→监控项→创建监控项;配置→主机→触发器→创建触发器。

7.验证

客户端主机开多于三个用户,看是否会触发报警!

# who

八 Zabbix自定义报警媒介

创建自定义报警媒介

创建邮件报警需要执行以下步骤:

安装sendMail→创建邮件发送脚本→创建报警媒介类型

1.安装sendMail:

[root@zabbix-server ~]# yum -y install sendmail mailx

2.配置邮件发送配置:

[root@zabbix-server ~]# vi /etc/mail.rc
set from=972xxxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=972xxxx@qq.com
set smtp-auth-password=xxxxxxx     //smtp授权码,非QQ密码
set smtp-auth=login

重启服务:

# systemctl restart sendmail

授权码方式获取:打开QQ邮箱→设置→帐户→开启IMAP/SMTP服务。

定义告警脚本存放路径:

[root@zabbix-server ~]# vi /usr/local/zabbix/etc/zabbix_server.conf
添加以下参数
AlertScriptsPath=/scripts 

创建存放目录:

[root@zabbix-server ~]# mkdir /scripts

编写邮件发送脚本:

[root@zabbix-server ~]# vi /scripts/mail.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`            ##定义邮件内容变量
subject=`echo $2 | tr '\r\n' '\n'`                ##定义邮件主题变量
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

对脚本以及日志输出文件授权:

[root@zabbix-server ~]# touch /tmp/mailx.log
[root@zabbix-server ~]# chown zabbix.zabbix /tmp/mailx.log
[root@zabbix-server ~]# chown -R zabbix.zabbix /scripts/
[root@zabbix-server ~]# chmod +x /scripts/mail.sh

测试脚本发送是否成功:

[root@zabbix-server ~]# /scripts/mail.sh 972xxxx@qq.com "hello" "test mail!"

3.Zabbix Web界面设置告警媒介:

管理→报警媒介类型→创建报警媒介

脚本参数:

{ALERT.SENDTO}      收件人
{ALERT.SUBJECT}      邮件标题
{ALERT.MESSAGE}     邮件内容

创建完报警媒介后,会发现你的媒介类型就多了一个邮件报警:

 

 九  Zabbix自定义邮件告警的使用

1. 配置告警接收用户,选择告警等级

步骤如下:管理→用户→编辑Admin用户→报警媒介→单击“添加”按钮

 添加成功后选择更新

2. 创建邮件发送动作:

步骤如下:配置→动作→创建动作→添加触发条件→添加操作内容→添加恢复操作内容

 

告警标题:

Problem: {EVENT.NAME}故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

告警内容:

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

在操作中勾选Pause operations for suppressed problems→新的

添加一下内容:选择“添加”按钮。

添加成功后:

恢复操作与操作那边一样。

添加恢复标题→添加恢复内容→添加新的

 

 恢复标题

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

恢复内容:

复告警设备: {HOSTNAME1}
触发名称: {TRIGGER.NAME} 
告警时间:{EVENT.DATE} {EVENT.TIME} 
告警等级:{TRIGGER.SEVERITY} 
恢复详情: {ITEM.NAME}:{ITEM.VALUE} 
恢复当前状态为:{TRIGGER.STATUS} 
事件ID:{EVENT.ID}

之后单击“添加”按钮,创建动作就完成了!

 

3. 邮件报警与恢复通知测试

首先让客户端监控项报警:

# who

相关