Zabbix监控网站
本章资源请访问
https://download.csdn.net/download/weixin_54373617/19040005
技能目标:
- 了解 Zabbix 模板
- 会创建 Zabbix 模板
- 会监控 Nginx、Redis、MySQL 主机
案例分析
案例概述
Zabbix 是一个基于Web 界面的提供分布式系统监控以及网络监控功能的企业级开源解决方案。本案例将展示如何使用 Zabbix 实现一个网站的全面监控。
当运维人员有 10 台服务器需要添加监控,应该怎么做呢?运维人员可以一台一台的添加每一个监控项,一个一个设置触发器。如果动作快,一天之内就能搞定。但是,如果服务器数量变成 20 台、30 台、100 台呢?如果还是运维人员一台一台设置就很耗费人力。Zabbix 中的监控模板可以解决该问题,只需提前创建一个监控模板,然后将建好的模板应用在所有服务器上。如此一来无论服务器的数量有多少,只需简单几个动作即可搞定。
平时工作中,运维人员需要监控 Web、MySQL、Redis、Nginx 等服务,众多服务器的业务都是一样的。所以只要事先创建好模板,然后所有服务器链接这个模板。如果后续有修改或新增一些功能,只需要修改模板即可。
案例环境
1. 本案例实验环境
本案例共使用四台主机,分别作为 Zabbix Server 服务器、Nginx 服务器、Redis 服务器以及 MySQL 服务器。服务器具体环境信息如下表所示。
| 主机名 | 系统 | IP地址 | 配置 | 主要软件 |
|---|---|---|---|---|
| server | CentOS7.9 | 192.168.10.101 | 2C/2G | Zabbix-server、MySQL、lnmp |
| nginx | CentOS7.9 | 192.168.10.102 | 1C/1G | Zabbix-agent、Nginx |
| redis | CentOS7.9 | 192.168.10.103 | 1C/1G | Zabbix-agent、Redis |
| mysql | CentOS7.9 | 192.168.10.104 | 1C/1G | Zabbix-agent、MySQL |
2. 案例需求
(1) 部署 Zabbix 服务器。
(2) 创建 Nginx、Redis、MySQL 模板。
(3) 应用 Nginx、Redis、MySQL 模板。
3. 案例实现思路
(1) 安装 LNMP + Zabbix Server。
(2) 安装 Nginx。
(3) 安装 Redis。
(4) 安装 MySQL。
(5) 创建 Nginx、Redis、MySQL 模板。
(6) 应用 Nginx、Redis、MySQL 模板。
案例实施
部署 Zabbix 架构服务在前面的章节已经讲过了请参考“企业分布式部署“这篇文章
1.安装 Nginx 服务、Redis 服务和 MariaDB 服务
分别在 Nginx 主机、Redis 主机和 MySQL 主机上安装 Nginx 服务、Redis 服务和MariaDB 服务。
nginx端操作
yum -y install zabbix-agent
yum -y install nginx
redis端操作
yum -y install zabbix-agent
yum -y install redis
mysql端操作
yum -y install zabbix-agent
yum -u install mariadb-server
systemctl start mariadb
systemctl enable mariadb
Nginx 主机添加监控脚本
Zabbix Agent 配置文件中,修改以下配置项
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.101
ServerActive=192.168.10.101
Hostname=Agent nginx #Agent nginx 本地的名称,此名称需要与 server 端的 Web 页面上的主机名称一 致,名称自定义
创建目录保存监控脚本,目录自定义
mkdir /etc/zabbix/scriptsvi /etc/zabbix/scripts/nginx-check.sh#!/bin/bash
#Zabbix requested parameter
ZBX_REQ_DATA="$1"
ZBX_REQ_DATA_URL="$2"#Nginx defaults
NGINX_STATUS_DEFAULT_URL="http://localhost:10080/nginx_status" #设置Nginx监控URL 之后在外面需要定义nginx_status文件定义监控的URL
WGET_BIN="/usr/bin/wget" #定义监控工具之后在外面需要安装wget工具#设置错误返回值:
#能够在 Zabbix 中展示 (避免 NOT_SUPPORTED)
ERROR_NO_ACCESS_FILE="-0.9900"
ERROR_NO_ACCESS="-0.9901"
ERROR_WRONG_PARAM="-0.9902"
ERROR_DATA="-0.9903" # either can not connect /bad host / bad port#如果没有设定 URL 则取默认值
if [ ! -z "$ZBX_REQ_DATA_URL" ]; thenURL="$ZBX_REQ_DATA_URL"
elseURL="$NGINX_STATUS_DEFAULT_URL"
fi#将 nginx 状态数据存入变量中
NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)#处理访问过程中的错误
if [ $? -ne 0 -o -z "$NGINX_STATS" ]; thenecho $ERROR_DATAexit 1
fi#获取 nginx 状态数据中的特定数值(即 zabbix 模板中添加的监控项)
case $ZBX_REQ_DATA inactive_connections) echo "$NGINX_STATS" | head -1 | cut -f3 -d' ';;accepted_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f2 -d' ';;handled_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f3 -d' ';;handled_requests) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f4 -d' ';;reading) echo "$NGINX_STATS" | tail -1 | cut -f2 -d' ';;writing) echo "$NGINX_STATS" | tail -1 | cut -f4 -d' ';;waiting) echo "$NGINX_STATS" | tail -1 | cut -f6 -d' ';;*) echo $ERROR_WRONG_PARAM; exit 1;;
esac
exit 0
为脚本添加可执行权限
chmod +x /etc/zabbix/scripts/nginx-check.sh
添加 Zabbix Agent 配置,并启动 Zabbix Agent
vim /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx[*],/etc/zabbix/scripts/nginx-check.sh "$1" "$2"systemctl start zabbix-agent
systemctl enable zabbix-agnet
添加 Nginx 配置,创建监控 URL 启动Nginx
vim /etc/nginx/conf.d/nginx-status.conf
server {listen 10080;server_name _;location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;}
}systemctl start nginx
systemctl enable nginx
验证 Nginx 监控数值获取
在 server 主机执行如下命令测试
安装 Zabbix_get
wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-get-3.2.1-1.el7.x86_64.rpm
rpm -ivh zabbix-get-3.2.1-1.el7.x86_64.rpm
zabbix_get -s 192.168.10.102 -k nginx[active_connections]
1
在Zabbix web界面上面添加Nginx 监控
1. 创建 Nginx 模板
创建 Nginx 模板需要依次点击 配置——模板——创建模板,如下图所示。

设置“模板名称”为“Templates App Nginx”,并加入“Zabbix Templates”群组中,点击“添加”按钮完成模板的创建操作,如下图所示。

创建完成后,在模板列表中可以看到刚刚创建完成的“Template App Nginx”,如下图

2. 创建应用集
点击上图中“Template App Nginx”,首先需要创建应用集,点击“应用集”—— “创建应用集”,在“名称”一栏中输入“Nginx”,并点击“添加”按钮,完成新应用集的创建,如下图所示。

3. 创建监控项
- 配置 Nginx 活跃连接数
创建“Nginx 应用集后,开始创建监控项,依次点击上图中的“监控项”——“创建监控项”,进入监控项创建页面。输入名称“Nginx $1”、键值“nginx[active_connections]”,信息类型选择“浮点数”,应用集选择“Nginx”后点击“添加”按钮,完成一个监控项的创建。监控名称中“$1”的值等于键值中方括号中的内容。
此处键值一项按图下所示输入即可,后面将在 Zabbix 中设置键值获取的方式。


按照上面的方式,继续创建如下几个监控项。
-
配置监控 Nginx 客户端的连接数
输入名称“Nginx $1”,输入键值“nginx[writing]”,信息类型选择“浮点数”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

-
配置监控 Nginx 等待下一次请求指令的驻留连接数
输入名称“Nginx $1”,输入键值“nginx[waiting]”,信息类型选择“浮点数”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

-
配置监控 Nginx 读取客户端的连接数
输入名称“Nginx $1”,输入键值“nginx[reading]”,信息类型选择“浮点数”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

-
配置监控 Nginx 总共处理的请求数
输入名称“Nginx $1/sec”,输入键值“nginx[handled_requests]”,信息类型选择“浮点数”, 应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

-
配置监控 Nginx 接受的连接数
输入名称“Nginx $1/sec”,输入键值“nginx[accepted_connections]”,信息类型选择“浮点数”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

-
配置监控 Nginx 处理的连接数
输入名称“Nginx $1/sec”,输入键值“nginx[handled_connections]”,信息类型选择“浮点数”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

-
配置监控 Nginx 开机启动
输入名称“Nginx is enable autostart”,输入键值“chkconfig[nginx]”,信息类型选择“数字
(无正负)”,数据类型选择“布尔”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

-
配置监控 Nginx 版本
输入名称“Nginx Version”,输入键值“nginx.version”,信息类型选择“字符”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。
-
配置监控 Nginx 进程数
输入名称“Number of $1 process”,输入键值“proc.num[nginx]”,信息类型选择“数字(无正负)”,数据类型选择“十字位数字”,应用集选择“Nginx”。然后,点击“添加”按钮,如下图所示。

4. 创建触发器
创建触发器,依次点击“触发器”——“创建触发器”,创建如下触发器。如下图所示

- 配置 Nginx 开机启动触发器
输入名称“Nginx is not enabled in autostart” , 严重性选择“ 警告” , 表达式输入“{Templates App Nginx:chkconfig[nginx].last(0)}=0”。然后,点击最下方的“添加”按钮,如下图所示。

- 配置 Nginx 运行状态触发器
输入名称“Nginx is not running”, 严重性选择“严重”, 表达式输入“{Templates App Nginx:proc.num[nginx].last(0)}=0”,。然后,点击最下方的“添加”按钮,如图下所示。

- 配置 Nginx 版本变化触发器
输入名称“version of nginx server was changed”, 严重性选择“信息”, 表达式输入“{Templates App Nginx:nginx.version.diff(0)}=0”。然后,点击最下方的“添加”按钮,如下图

5. 创建图形
创建图形,依次点击“图形”——“创建图形”,创建 Nginx 连接数和请求数趋势图、Nginx 线程状态图。如下图

- 配置 Nginx 连接数和请求数趋势图
输入名称“Nginx-Connections and Requested status”,监控项添加刚才创建的三个连接请求数监控项。然后,点击最下方的“添加”按钮,如下图所示。

- 配置 Nginx 线程状态图
输入名称“Nginx-Threads status”,监控项添加刚才创建的三个线程监控项。然后,点击最下方的“添加”按钮,如下图所示。

6. 添加客户端主机
添加客户端主机,依次选择“配置”——“主机”——“创建主机”,如下图所示。

填写客户端相关信息,输入主机名称“Nginx”,输入可见的名称“Agent nginx”,群组选择“Linux servers”,新的群组输入“Nginx server”,IP 地址输入“192.168.10.102”。然后,点击“添加”按钮,完成主机创建,如下图所示。

7. 关联模板和主机
依次选择“配置”——“模板”——“Template App Nginx”,在“主机/模板”处添加刚刚创建的“Agent nginx”主机,并点击“更新”按钮,如下图所示。

8. 结果验证
先在nginx端并发访问
for i in {1..100} ; do curl 127.0.0.1 > /dev/null ; done
依次点击“监测中”——“最新数据”,在“主机”一栏输入“Agent nginx”,点击“应用”按钮,在下方可以看到 Nginx 主机最新数据获取结果,如下图所示。

点击上图中的图形可看到如下图的图形

至此,Nginx 创建完成。
添加 Redis 监控
在 Redis 主机上进行如下操作
Zabbix Agent 配置文件中,修改以下配置项
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.101
ServerActive=192.168.10.101
Hostname=Agent redis #Agent redis本地的名称,此名称需要与 server 端的 Web 页面上的主机名称一 致,名称自定义
添加扩展配置文件
vi /etc/zabbix/zabbix_agentd.d/redis.conf
UserParameter=redis[*],redis-cli info | grep $1":" | cut -d ':' -f 2
UserParameter=redis.version, redis-server --version | cut -d " " -f 3 | cut -d "=" -f 2
启动服务
systemctl start zabbix-agent redis
systemctl enable zabbix-agent redis
在 server 主机上验证 Redis 监控数据获取
zabbix_get -s 192.168.10.103 -k redis[total_commands_processed]
0
在Zabbix web页面添加 Redis 主机
1. 创建 Redis 模板
创建 Redis 模板的方法同上,依次点击“配置” ——“模板”——“创建模板”,设置“模板名称” 为“Templates App Redis”,并添加到“Zabbix Templates”群组。点击“添加”按钮完成创建, 如下图所示。

2. 创建应用集
创建 Redis 应用集,“应用集”——“创建应用集”,名称输入“Redis”。再点击“添加”按钮, 如下图所示。



3. 创建 Redis 监控项
需要创建的 Redis 监控项有:监控 Redis 开机启动、监控 Redis 版本、监控 Redis 是否宕机、监控 Redis 总连接数、监控 Redis 执行的操作命令总数、监控 Redis 最近一次存盘的状态。
-
监控Redis 开机启动
应用集创建完成后,开始创建监控项。依次点击“监控项”“创建监控项”,进入监控项创建页面。输入名称“Redis enabled autostart”,输入键值“chkconfig[redis]”,信息类型选择 “数字(无正负)”,数据类型选择“布尔”,应用集选择“Redis”。然后,点击“添加”按钮,完成监控项的创建。如下图所示。



-
监控Redis 版本
和前面的创建方法一样,依次点击“监控项”——“创建监控项”,进入监控项创建页面。输入名称“Redis Version”, 输入键值“redis.version”,信息类型选择“字符”,应用集选择“Redis”。然后,点击“添加”按钮, 完成监控项的创建,如下图所示。

-
监控Redis 是否宕机
依次点击“监控项”——“创建监控项”,进入监控项创建页面。输入名称“[Redis]server is running”,输入键值“net.tcp.port[,6379]”,信息类型选择“数字(无正负)”,数据类型选择“十进位数字”,应用集选择“Redis”。然后,点击“添加”按钮,完成监控项的创建。如下图所示。

-
监控Redis 总连接数
输入名称“[Redis]$1”,输入键值“redis[total_connections_received]”,信息类型选择“数字(无正负)”,数据类型选择“十进位数字”,应用集选择“Redis”。然后,点击“添加”按钮, 完成监控项的创建,如下图所示。

-
监控Redis 执行的操作命令总数
输入名称“[Redis]$1”,输入键值“redis[total_commands_processed]”,信息类型选择“数字(无正负)”,数据类型选择“十进位数字”,应用集选择“Redis”。然后,点击“添加”按钮, 完成监控项的创建,如下图所示。

-
监控Redis 最近一次存盘的状态
输入名称“[Redis]$1”,输入键值“redis[rdb_last_bgsave_status]”,信息类型选择“文本”, 应用集选择“Redis”。然后,点击“添加”按钮,完成监控项的创建,如图下所示。

4. 创建 Redis 触发器
-
Redis 开机启动触发器
创建 Redis 开机启动触发器,即如果 Redis 未开机启动,则触发警报。名称输入“Redis is not enabled in autostart” , 严 重 性 选 择 “ 警 告 ” , 表 达 式 输 入 “{Templates App Redis:chkconfig[redis].last(0)}=0”,如下图所示。



-
Redis 宕机触发器
创建 Redis 宕机触发器,即如果 Redis 宕机,则触发警报。名称输入“Redis is down”, 严重性选择“灾难”,表达式输入“{Templates App Redis:net.tcp.port[,6379].last(0)}=0”,如下图所示。

-
Redis 响应触发器
创建 Redis 响应触发器,名称输入“Redis is not responding”,严重性选择“严重”,表达式输入“{Templates App Redis:redis[total_commands_processed].nodata(2m)}=1”, 如下图所示。

5. 添加 Redis 图形
创建图形,依次点击“图形”“创建图形”,创建 Redis 总连接数、总命令数趋势图。 输入名称“[Redis]Total”,监控项添加刚才创建的监控项。然后,点击最下方的“添加”按钮,如图下所示。



6. 关联模板和主机
- 添加 Redis 主机
在 Zabbix 的管理界面,依次选择“配置”-——“主机”——“创建主机”,在创建主机界面,填入主机信息。主机名称输入“Agent redis”,可见的名称输入“Agent redis”,新的群组输入“Redis Server”, 然后输入 Redis 主机 IP 地址“192.168.10.103”,其他保持默认。点击最下方“添加”按钮,如下图所示。


- 关联模板和主机
依次选择“配置”——“模板”——“Templates App Redis”,在“主机/模板”处添加刚刚创建的“Agent redis”主机,并点击“更新”按钮,如下图所示。


结果验证,依次点击“监测中”-——“最新数据”,在“主机”一栏输入“Agent redis”,点击“应用” 按钮,在下方可以看到 Redis 主机最新数据获取结果,如下图所示。

点击上图中的图形可以查看到如下图所示

添加 MySQL 监控
在 MySQL 主机上进行如下操作
执行mysql进入数据库
mysql#授权
GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY '123456';FLUSH PRIVILEGES;quit;
Zabbix Agent 配置文件中,修改以下配置项
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.101
ServerActive=192.168.10.101
Hostname=Agent mysql #Agent mysql 本地的名称,此名称需要与 server 端的 Web 页面上的主机名称一 致,名称自定义
- 创建配置文件/etc/zabbix/.my.cnf 以提供 Zabbix Agent 访问数据库
vim /etc/zabbix/.my.cnf#Zabbix Agent
[mysql]
host=localhost
user=zabbix
password=123456
[mysqladmin]
host=localhost
user=zabbix
password=123456
- 修改监控配置文件/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf,将所有的 “/var/lib/zabbix”修改为当前.my.cnf 文件的路径“/etc/zabbix”
sed -i 's/\/var\/lib\/zabbix/\/etc\/zabbix/g' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.confsystemctl start zabbix-agent
systemctl enable zabbix-agent
- 在 Zabbix Server 主机执行下列命令,验证获取 MySQL 状态数据的效果
zabbix_get -s 192.168.10.104 -k mysql.status[Com_begin]
0
添加MySQL 监控
1. MySQL 模板
MySQL 模板默认包含在 Zabbix 中,依次选择“配置”——“模板”。在默认的模板中,可以找到“Template App MySQL”模板,如下图所示。

2. 添加 MySQL 主机
在 Zabbix 的管理界面,依次选择“配置”——“主机”——“创建主机”。在创建主机界面,填入主机信息。主机名称输入“Agent mysql”,可见的名称输入“Agent mysql”,新的群组输入“MySQL Server”,然后输入 MySQL 主机 IP 地址“192.168.10.104”,其他保持默认值。点击最下方“添加”按钮,如下图所示。


关联模板和主机,依次选择“配置”——“模板”——“Templates App MySQL”,在“主机/模板” 处添加刚刚创建的“Agent mysql”主机,其他保持默认值。然后,点击“更新”按钮,如下图所示。


结果验证,依次点击“监测中”——“最新数据”,在“主机”一栏输入“Agent mysql”。点击“应用” 按钮,下方可以看到 MySQL 主机最新数据获取结果,如下图所示。

点击上图中的图形可看到如下图



















