目 录

  • 一、zabbix概述
  • 二、Zabbix的功能
  • 三、部署Zabbix
  • 环境配置
  • 1、安装nginx
  • 2、部署mariadb
  • 3、部署php
  • 4、测试连接数据库
  • 5、部署zabbix server
  • 6、配置代理端zabbix
  • 7、配置告警自动发布邮件
  • ① 首先,选择邮箱,开启pop3、smtp服务
  • 8、Web 页面配置监控机制


一、zabbix概述

Zabbix 是一个企业级分布式开源监控解决方案

Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。

所有的监控,承载的协议都离不开SNMP

zabbix监控业务量 zabbix 业务监控_zabbix


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_02


Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。

Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。

二、Zabbix的功能

Zabbix 是一个高度成熟完善的网络监控解决方案,一个的软件包中包含了多种功能。

数据采集

  • 可用性和性能检查;
  • 支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
  • 自定义检查;
  • 按照自定义的时间间隔采集需要的数据;
  • 通过 Server/Proxy 和 Agents 来执行数据采集。

灵活的阈值定义

  • 可以参考后端数据库定义非常灵活的告警阈值,即触发器

高度可配置化的告警

  • 可以根据递增计划、接收者、媒介类型自定义发送告警通知;
  • 使用宏变量可以使告警通知变得更加高效有用;
  • 自动操作包含远程执行命令。

实时图形

  • 使用内置图形功能可以将监控项实时绘制成图形。

Web 监控功能

  • Zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。

丰富的可视化选项

  • 可以组合多个监控项到单个视图中,创建自定义图表;
  • 网络拓扑图;
  • 以仪表盘样式展示自定义聚合图形和幻灯片演示;
  • 报表;
  • 监控资源的更高层次展示视图(业务视图)。

历史数据存储

  • 存储在数据库中的数据;
  • 历史配置;

内置数据管理机制(housekeeping)。

配置简单

  • 将被监控设备添加为主机;
  • 主机一旦添加到数据库中,就会采集数据用于监控;
  • 将模板用于监控设备。

使用模板

  • 模板中分组检查;
  • 模板可以关联模板,继承已关联模板的属性。

网络发现

  • 自动发现网络设备;
  • Zabbix Agent 发现设备后自动注册;
  • 自动发现文件系统、网络接口和 SNMP OIDs 值。

快捷的Web 界面

  • 基于 PHP 的 Web 前端;
  • 可以从任何地方访问;
  • 可以定制自己的操作方式;
  • 可以通过审计日志来查看你的操作。

Zabbix API

  • Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。

权限管理系统

  • 安全的用户身份验证;
  • 指定的用户只能查看指定的权限范围内的视图。

功能强大且易于扩展的 Zabbix Agent

  • 部署于被监控对象上;
  • 支持 Linux 和 Windows ;

二进制守护进程

  • 为了更好的性能和更少的内存占用,采用 C 语言编写;
  • 便于移植。

适应更复杂的环境

  • 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。

三、部署Zabbix

环境配置

主机

操作系统

IP地址

所需软件

server

CentOS7.6

192.168.217.40

/

client

CentOS7.6

192.168.217.60

/

1、安装nginx

server(192.168.217.40)

systemctl stop firewalld
setenforce 0		
	
vim /etc/yum.repos.d/nginx.repo
[nginx]	
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

zabbix监控业务量 zabbix 业务监控_nginx_03

yum clean all
yum list

zabbix监控业务量 zabbix 业务监控_nginx_04

yum -y install nginx
systemctl start nginx
systemctl enable nginx
	
netstat -natp | grep nginx

zabbix监控业务量 zabbix 业务监控_监控程序_05

zabbix监控业务量 zabbix 业务监控_监控程序_06

2、部署mariadb

yum -y install mariadb*
systemctl start mariadb.service
systemctl enable mariadb.service 
netstat -natp | grep 3306

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_07

#mysql安全配置向导
mysql_secure_installation
回车
y
123456
123456
n
n
n
y

zabbix监控业务量 zabbix 业务监控_监控程序_08


zabbix监控业务量 zabbix 业务监控_监控程序_09

3、部署php

yum -y install epel-release.noarch 多次安装

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php72w php72w-devel php72w-fpm php72w-gd php72w-mbstring php72w-mysql # 语言和语言开发包,处理动态请求,支持图像化处理,可以处理多文本字符串,数据库中支持php语言的驱动
php -v

zabbix监控业务量 zabbix 业务监控_php_10


zabbix监控业务量 zabbix 业务监控_php_11

vim /etc/php-fpm.d/www.conf

==8修改用户==
user = nginx

==10修改组==
group = nginx

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_12

vim /etc/nginx/conf.d/default.conf
//10 index.php
//29-35 取消注释
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

zabbix监控业务量 zabbix 业务监控_监控程序_13


zabbix监控业务量 zabbix 业务监控_nginx_14

vim /etc/php.ini
//202 short_open_tag = On
//359 expose_php = Off
//368 max_execution_time = 300
//378 max_input_time = 300
//656 post_max_size = 16M
//799 upload_max_filesize = 2M
//800 always_populate_raw_post_data = -1
//877 date.timezone = Asia/Shanghai

zabbix监控业务量 zabbix 业务监控_zabbix_15


zabbix监控业务量 zabbix 业务监控_zabbix_16


zabbix监控业务量 zabbix 业务监控_php_17


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_18


zabbix监控业务量 zabbix 业务监控_zabbix_19


zabbix监控业务量 zabbix 业务监控_监控程序_20

systemctl start php-fpm
systemctl enable php-fpm
netstat -natp | grep 9000

zabbix监控业务量 zabbix 业务监控_监控程序_21

4、测试连接数据库

vim /usr/share/nginx/html/info.php

<?php
phpinfo();
?>

zabbix监控业务量 zabbix 业务监控_php_22

systemctl restart php-fpm.service
systemctl restart nginx

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_23

==真机访问==
http://192.168.217.40/info.php

zabbix监控业务量 zabbix 业务监控_zabbix_24

vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','root','123456');
if ($link) echo '连接成功';
else echo '连接失败';
?>



==真机访问==
http://192.168.217.40/info.php

zabbix监控业务量 zabbix 业务监控_zabbix_25


注:

上图测试连接数据库,用户root,密码123456.是之前设置的mysql安全配置向导里的

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_26


访问

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_27

mysql -uroot -p123456
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on *.* to 'zabbix'@'%' identified by 'admin123';
flush privileges;
exit

zabbix监控业务量 zabbix 业务监控_php_28

vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','zabbix','admin123');
if ($link) echo 'zabbix成功';
else echo 'zabbix失败';
?>

==真机访问==
http://192.168.217.40/info.php

zabbix监控业务量 zabbix 业务监控_php_29


zabbix监控业务量 zabbix 业务监控_zabbix_30

连接失败解决方法
原因:用户冲突

mysql -uroot -p123456
select user,host from mysql.user;
drop user ''@'localhost';
drop user ''@'localhost.localdomain';
flush privileges;

zabbix监控业务量 zabbix 业务监控_php_31


zabbix监控业务量 zabbix 业务监控_监控程序_32

5、部署zabbix server

rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

#多次安装
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_33

cd /usr/share/doc/zabbix-server-mysql-4.0.30/
zcat create.sql.gz | mysql -uzabbix -p zabbix
mysql -uzabbix -padmin123
use zabbix;
show tables;

zabbix监控业务量 zabbix 业务监控_php_34


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_35


zabbix监控业务量 zabbix 业务监控_zabbix_36

#编辑zabbix服务端配置文件
vim /etc/zabbix/zabbix_server.conf

#定义日志文件位置和名称
//38 LogFile=/var/log/zabbix/zabbix_server.log  

#定义日志文件大小,0表示不限制大小
//49 LogFileSize=0

#进程文件位置
//72 PidFile=/var/run/zabbix/zabbix_server.pid

#通信sock文件
//82 SocketDir=/var/run/zabbix

#数据库所在服务器,本地
//91 DBHost=localhost

#数据库名称
//100 DBName=zabbix

#数据库用户
//116 DBUser=zabbix

#数据库密码
//124 DBPassword=admin123

#snmp协议日志位置
//356 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

#定义超时时间
//473 Timeout=4

#告警的脚本存放位置
//516 AlertScriptsPath=/usr/lib/zabbix/alertscripts

#扩展性脚本存放位置
//527 ExternalScripts=/usr/lib/zabbix/externalscripts

#定义慢查询时间
//563 LogSlowQueries=3000

zabbix监控业务量 zabbix 业务监控_nginx_37


zabbix监控业务量 zabbix 业务监控_zabbix_38


zabbix监控业务量 zabbix 业务监控_zabbix_39


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_40


zabbix监控业务量 zabbix 业务监控_php_41

zabbix监控业务量 zabbix 业务监控_php_42

zabbix监控业务量 zabbix 业务监控_监控程序_43

cp -r /usr/share/zabbix/ /usr/share/nginx/html
chown -R zabbix.zabbix /etc/zabbix
chown -R zabbix.zabbix /usr/share/nginx
chown -R zabbix.zabbix /usr/lib/zabbix
chmod -R 755 /etc/zabbix/web
chmod -R 777 /var/lib/php/session

systemctl start zabbix-server.service
systemctl enable zabbix-server.service

netstat -napl | grep 10051
systemctl restart php-fpm.service

zabbix监控业务量 zabbix 业务监控_php_44


zabbix监控业务量 zabbix 业务监控_监控程序_45

==真机访问==
http://192.168.217.40/zabbix

zabbix监控业务量 zabbix 业务监控_php_46


zabbix监控业务量 zabbix 业务监控_php_47

zabbix监控业务量 zabbix 业务监控_nginx_48


zabbix监控业务量 zabbix 业务监控_zabbix_49


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_50


zabbix监控业务量 zabbix 业务监控_nginx_51

cd /etc/zabbix/web

chmod +x zabbix.conf.php

zabbix监控业务量 zabbix 业务监控_监控程序_52


zabbix监控业务量 zabbix 业务监控_监控程序_53


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_54


登陆成功

zabbix监控业务量 zabbix 业务监控_zabbix_55


zabbix监控业务量 zabbix 业务监控_zabbix_56

6、配置代理端zabbix

cilent(192.168.217.60)

systemctl stop firewalld.service
setenforce 0

rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

yum -y install zabbix-agent

zabbix监控业务量 zabbix 业务监控_nginx_57

vim /etc/zabbix/zabbix_agentd.conf
//98 Server=192.168.217.40  指向监控端地址
//139  ServerActive=192.168.217.40 指向监控服务器
//150 Hostname=test 修改主机名

zabbix监控业务量 zabbix 业务监控_zabbix_58


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_59


zabbix监控业务量 zabbix 业务监控_nginx_60


zabbix监控业务量 zabbix 业务监控_nginx_61


zabbix监控业务量 zabbix 业务监控_监控程序_62


zabbix监控业务量 zabbix 业务监控_nginx_63

zabbix监控业务量 zabbix 业务监控_zabbix_64


zabbix监控业务量 zabbix 业务监控_监控程序_65

zabbix监控业务量 zabbix 业务监控_php_66

7、配置告警自动发布邮件

① 首先,选择邮箱,开启pop3、smtp服务

  • QQ邮箱开启方式

zabbix监控业务量 zabbix 业务监控_zabbix_67

  • 163邮箱开启方式

在网页邮箱配置,这里就不写出来了

在服务器上配置

server(192.168.217.40)

yum -y install mailx

vim /etc/mail.rc

#末行添加
set from=QQ号@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=QQ号@qq.com
set smtp-auth-password=授权码
set smtp-auth=login

zabbix监控业务量 zabbix 业务监控_zabbix_68

#测试能否正常发送
echo 'hello wbw' | mail -s 'test' QQ号@qq.com

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_69

#编写发送邮件的shell脚本,一定要在这个目录下
cd /usr/lib/zabbix/alertscripts/

vim mailx.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

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_70

#创建日志文件
touch /tmp/mailx.log

#赋权
chown -R zabbix.zabbix  /tmp/mailx.log
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/

#测试脚本
. /usr/lib/zabbix/alertscripts/mailx.sh QQ号@qq.com "zabbix" "hello world"

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_71


zabbix监控业务量 zabbix 业务监控_zabbix_72

8、Web 页面配置监控机制

zabbix监控业务量 zabbix 业务监控_php_73

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

zabbix监控业务量 zabbix 业务监控_php_74


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_75


zabbix监控业务量 zabbix 业务监控_php_76

zabbix监控业务量 zabbix 业务监控_nginx_77


zabbix监控业务量 zabbix 业务监控_php_78


zabbix监控业务量 zabbix 业务监控_php_79

zabbix监控业务量 zabbix 业务监控_监控程序_80


zabbix监控业务量 zabbix 业务监控_监控程序_81

按照默认

zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_82


zabbix监控业务量 zabbix 业务监控_nginx_83

按照默认

zabbix监控业务量 zabbix 业务监控_监控程序_84


zabbix监控业务量 zabbix 业务监控_zabbix_85

服务器重启zabbix服务
server(192.168.217.40)

systemctl restart zabbix-*

zabbix监控业务量 zabbix 业务监控_nginx_86

代理端重启ssh服务,看是否能收到邮件
cilent(192.168.217.60)

systemctl restart sshd

zabbix监控业务量 zabbix 业务监控_nginx_87


zabbix监控业务量 zabbix 业务监控_zabbix监控业务量_88