目录
一、Zabbix Server(192.168.52.161)配置
二、MySQL Master(192.168.52.162)配置
三、MySQL Slave(192.168.52.164)配置
四、Zabbix Agent 配置(Master 和 Slave)
1. Zabbix Server(192.168.52.161)配置
2. Redis 集群节点(192.168.52.165/166/167)配置
1. 在 Redis 节点安装 Zabbix Agent(所有节点)
2. 在 Zabbix Server 创建 Redis 监控脚本
一、操作系统监控
1、Linux操作系统
1.1、被监控端配置
被监控端安装zabbix-agent
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm
yum install -y zabbix-agent
配置zabbix-agent
vim zabbix_agentd.conf
117 Server=192.168.115.240 #zabbix serverIP地址
启动zabbix-agent服务
systemctl enable --now zabbix-agent.service
root@localhost zabbix]# netstat -anptu |grep zabbix_agent
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3562/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 3562/zabbix_agentd
1.2、zabbix-server配置
添加主机
数据采集->主机->创建主机
填写内容后如下:
点击“添加”即可。
查看图形
在“可用性”处显示
监测->主机->图形
2、Windows操作系统
2.1、Windows端配置
下载zabbix-agent安装包,地址如下:
https://cdn.zabbix.com/zabbix/binaries/stable/7.0/7.0.4/zabbix_agent-7.0.4-windows-amd64.zip
在非C盘盘符中创建zabbix-agent目录,拷贝zabbix-agent安装包道该目录下,然后直接解压到该目录,最后打开“cmd”命令行,执行如下命令:
E: cd zabbix-agent\bin zabbix_agentd.exe -i -c D:\zabbix-agent\conf\zabbix_agentd.conf zabbix_agentd.exe -s ##验证启动结果 netstat -ano | findstr 10050 TCP 0.0.0.0:10050 0.0.0.0:0 LISTENING 8560 TCP [::]:10050 [::]:0 LISTENING 8560
2.2、Zabbix Server配置
添加“windows”主机组
数据采集->主机群组->创建主机组
添加主机
数据采集->主机->创建主机
查看图形
在“可用性”处显示
监测->主机->图形
二、网络设备监控
1、GNS模拟器的使用
2、添加Cisco路由器的监控
3、结果展示
三、中间件监控
1、MySQL数据库监控
1.1、拷贝自定义的监控脚本到指定目录
cp /usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
1.2、添加监控用户
mysql create user root@'192.168.115.%' identified by '123.com'; grant all on *.* to root@'192.168.115.%'; vim /etc/my.cnf [client] protocol=tcp user='root' password='123.com'
1.3、重启zabbix-agent服务
systemctl restart zabbix-agent
1.4、在zabbix-server服务端测试数据
yum install -y zabbix-get zabbix_get -s 192.168.115.224 -p 10050 -k "mysql.ping[192.168.115.224,3306]" zabbix_get -s 192.168.115.224 -p 10050 -k "mysql.version[192.168.115.224,3306]" zabbix_get -s 192.168.115.224 -p 10050 -k "mysql.get_status_variables[192.168.115.224,3306]"
1.5、在UI界面添加监控模版
添加主机
查看图形
1.6、添加自定义监控项及图形
在监控mysql端添加自定义项目
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf UserParameter=mysql.database.count[*], mysql -h"$1" -P"$2" -sN -e "show databases" | wc -l
在zabbix-server测试数据
[root@localhost zabbix]# zabbix_get -s 192.168.115.224 -p 10050 -k "mysql.database.count[192.168.115.224,3306]" 4
在UI界面添加监控项及图形
安装GNS3
点击左上角preference
选择IOS routers
点击new
选择已有镜像
修改以上两个地方,然后点击finish
点击左边第五个all devices,将刚添加的路由器拖出
右键选择start
点击console打开控制台
刷新
点击idle-PC
选择数字最高并带*号的节点
然后添加两台host主机,用左六的线进行连接并修改网口,然后开机
然后在虚拟机里配置网卡vmnet1和vmnet2,并将网卡设置为不要吧DHCP地址分配给主机
然后在windterm终端中用telnet远程连接路由器
点击上方画板添加笔记
查看版本
查看接口
进入全局模式,进行配置
进入接口模式0/0
然后进行配置
同样的步骤配置接口1/0
查看配置结果,已经配置好直连路由
在host1主机中配置IP地址,然后连接路由,然后连接默认路由
然后配置host2主机和路由
之后用host1去pinghost2
用示意图表示出用zabbix主机
用虚拟机连接路由器R2
配置zabbix主机和路由的连接
启动zabbix服务器数据库
启动zabbix客户端服务
测试zabbix服务端和路由的连通性
在路由器R2中创建路由器组
在zabbix中添加主机组
添加主机(服务端端口161,客户端端口162)
修改可用值,然后点击添加
选择模板
然后发现有图形界面
点进图形
客户端安装MySQL数据库
将客户端的配置拷贝过来然后进行修改,然后保存退出,重启服务
查看命令可用性
row代表行,输出为一个xml文档
选择服务端,更新模板
在客户端添加MySQL用户用于监控
修改MySQL配置文件
在zabbix服务端进行数据库测试
修改宏
更新之后等一会就可以在图形界面看到数据
2、Redis数据库监控
创建一台主机 ,并安装zabbix-agent2服务(关闭安全上下文和防火墙)
配置安装源
安装zabbix-agent2
在服务端安装并启动edis服务
修改服务端zabbix配置文件
保存退出后重启zabbix服务端
在zabbix网页上配置redis监控
查看图形
3、Nginx服务监控
在服务端安装nginx
然后启动nginx
然后配置模板
可以查看到图形
4、MySQL主从监控
创建监控脚本
赋予权限
添加以下监控项
重启zabbix服务
以下是基于三台主机已完成时间同步的优化配置步骤,重点关注服务安装、配置细节及安全优化,省略防火墙与时区配置相关内容。
一、Zabbix Server(192.168.52.161)配置
1. 安装 Zabbix 组件
# 添加Zabbix源
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
dnf clean all
# 安装核心组件
dnf install -y zabbix-server-mysql zabbix-web-nginx zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
2. 配置数据库
# 安装并启动MySQL
dnf install -y mysql-server
systemctl enable --now mysqld
# 创建Zabbix数据库
mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 导入初始Schema
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix
3. 配置 Zabbix Server
# 编辑配置文件
vi /etc/zabbix/zabbix_server.conf
修改以下参数:
# 编辑配置文件
vi /etc/zabbix/zabbix_server.conf
4. 配置 PHP 时区
vi /etc/php-fpm.d/zabbix.conf
设置时区:
php_value[date.timezone] = Asia/Shanghai
5. 启动服务
systemctl enable --now zabbix-server zabbix-agent nginx php-fpm
二、MySQL Master(192.168.52.162)配置
1. 安装 MySQL
dnf install -y mysql-server
systemctl enable --now mysqld
2. 配置主库参数
vi /etc/my.cnf.d/mysql-server.cnf
添加以下配置:
[mysqld]
server-id = 101
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = test_db # 需要复制的数据库
binlog_format = ROW # 推荐使用ROW格式
expire_logs_days = 7
sync_binlog = 1 # 确保事务安全
innodb_flush_log_at_trx_commit = 1
3. 重启 MySQL 并创建复制用户
systemctl restart mysqld
# 创建复制用户
mysql -u root -p
CREATE USER 'repl_user'@'192.168.52.164' IDENTIFIED BY 'Repl@123';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.52.164';
FLUSH PRIVILEGES;
# 查看主库状态
SHOW MASTER STATUS;
三、MySQL Slave(192.168.52.164)配置
1. 安装 MySQL
dnf install -y mysql-server
systemctl enable --now mysqld
2. 配置从库参数
vi /etc/my.cnf.d/mysql-server.cnf
添加以下配置:
[mysqld]
server-id = 104
relay_log = /var/log/mysql/mysql-relay-bin.log
read_only = 1
log_bin = /var/log/mysql/mysql-bin.log # 可选,用于级联复制
log_slave_updates = 1
sync_relay_log = 1
sync_relay_log_info = 1
3. 重启 MySQL 并配置复制
systemctl restart mysqld
# 配置复制关系(替换为实际的File和Position值)
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='192.168.52.162',
MASTER_USER='repl_user',
MASTER_PASSWORD='Repl@123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=156;
# 启动复制
START SLAVE;
# 验证状态
SHOW SLAVE STATUS\G
四、Zabbix Agent 配置(Master 和 Slave)
1. 安装 Agent
# 添加Zabbix源并安装Agent
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
dnf clean all
dnf install -y zabbix-agent
2. 配置 Agent
# 配置Master(162)
vi /etc/zabbix/zabbix_agentd.conf
修改以下参数:
Server=192.168.52.161
ServerActive=192.168.52.161
Hostname=MySQL-Master-162
# 配置Slave(164)
vi /etc/zabbix/zabbix_agentd.conf
修改以下参数:
Server=192.168.52.161
ServerActive=192.168.52.161
Hostname=MySQL-Slave-164
3. 启动 Agent
systemctl enable --now zabbix-agent
五、Zabbix Web 配置
- 按向导完成配置:
- Database configuration:
- 主机:localhost
-
-
- 数据库名:zabbix
-
- 用户:zabbix
- 密码:Zabbix@123
- Zabbix server configuration:
- 主机名:localhost
-
-
- 端口:10051
-
- 登录(默认账号:Admin,密码:zabbix)
六、添加主机和模板
- 添加 MySQL Master(162):
- Configuration → Hosts → Create host
- Host name:MySQL-Master-162
- Interfaces:IP 填192.168.52.162,端口10050
- Templates:链接Template DB MySQL
- Groups:添加到Databases组
- 点击 Add
- 添加 MySQL Slave(164):
-
- 重复上述步骤,主机名填MySQL-Slave-164,IP 填192.168.52.164
七、自定义复制监控(Slave)
1. 创建监控脚本
# 在Zabbix Server(161)上创建脚本
mkdir -p /usr/lib/zabbix/externalscripts
vi /usr/lib/zabbix/externalscripts/check_mysql_slave.sh
脚本内容:
#!/bin/bash
# 用法:check_mysql_slave.sh <slave_ip> <mysql_user> <mysql_password>
SLAVE_IP=$1
USER=$2
PASSWORD=$3
RESULT=$(mysql -h $SLAVE_IP -u $USER -p$PASSWORD -e "SHOW SLAVE STATUS\G" 2>/dev/null)
IO_RUNNING=$(echo "$RESULT" | grep 'Slave_IO_Running:' | awk '{print $2}')
SQL_RUNNING=$(echo "$RESULT" | grep 'Slave_SQL_Running:' | awk '{print $2}')
DELAY=$(echo "$RESULT" | grep 'Seconds_Behind_Master:' | awk '{print $2}')
# 输出JSON格式,便于解析
echo "{\"io_running\":\"$IO_RUNNING\",\"sql_running\":\"$SQL_RUNNING\",\"delay\":$DELAY}"
设置权限:
chmod +x /usr/lib/zabbix/externalscripts/check_mysql_slave.sh
chown zabbix:zabbix /usr/lib/zabbix/externalscripts/check_mysql_slave.sh
2. 创建监控项
- Configuration → Hosts → MySQL-Slave-164 → Items → Create item
- Name:MySQL Slave Replication Status
- Type:External check
- Key:check_mysql_slave.sh[192.168.52.164,zabbix_monitor,Monitor@123] # 使用专用监控用户
- Type of information:Text
- Update interval:30s
3. 创建依赖监控项(用于解析 JSON 值)
- IO Running 状态:
- Name:MySQL Slave IO Running
- Type:Dependent item
- Master item:选择上面创建的MySQL Slave Replication Status
- Key:jsonvalue[,,io_running]
- Type of information:Character
- SQL Running 状态:
- Name:MySQL Slave SQL Running
- Type:Dependent item
- Master item:选择上面创建的MySQL Slave Replication Status
- Key:jsonvalue[,,sql_running]
- Type of information:Character
- 复制延迟(秒):
- Name:MySQL Slave Replication Delay
- Type:Dependent item
- Master item:选择上面创建的MySQL Slave Replication Status
- Key:jsonvalue[,,delay]
- Type of information:Numeric (unsigned)
八、创建触发器
- 复制失败告警:
- Name:MySQL Slave Replication Stopped
- Expression:
{MySQL-Slave-164:mysql_slave_io_running.str(Yes)}=0 or
{MySQL-Slave-164:mysql_slave_sql_running.str(Yes)}=0
- Severity:High
- Recovery expression:
{MySQL-Slave-164:mysql_slave_io_running.str(Yes)}=1 and
{MySQL-Slave-164:mysql_slave_sql_running.str(Yes)}=1
- 复制延迟告警:
- Name:MySQL Slave Replication Delay > 30s
- Expression:
{MySQL-Slave-164:mysql_slave_replication_delay.last()} > 30
- Severity:Warning
- Recovery expression:
{MySQL-Slave-164:mysql_slave_replication_delay.last()} <= 30
九、安全优化
1. 创建专用监控用户
-- 在Slave(164)上执行
CREATE USER 'zabbix_monitor'@'192.168.52.161' IDENTIFIED BY 'Monitor@123';
GRANT REPLICATION CLIENT ON *.* TO 'zabbix_monitor'@'192.168.52.161';
FLUSH PRIVILEGES;
2. 使用 Zabbix 宏隐藏密码
- Administration → General → Macros → Create macro
- Macro:{$MYSQL_PASSWORD}
- Value:Monitor@123
- 更新监控项 Key 为:check_mysql_slave.sh[192.168.52.164,zabbix_monitor,{$MYSQL_PASSWORD}]
十、验证配置
- 查看监控数据:
- Monitoring → Latest data
- 筛选 MySQL-Slave-164 主机,确认监控项正常采集
- 测试告警:
- 在 Slave(164)执行STOP SLAVE;
- 等待 30 秒,检查 Zabbix 是否触发告警
- 执行START SLAVE;恢复复制,确认告警解除
十一、性能优化建议
- 调整 Zabbix Server 参数:
vi /etc/zabbix/zabbix_server.conf
优化以下参数:
StartPollers=15 # 增加轮询进程数
StartTrappers=5 # 增加主动监控进程数
CacheSize=128M # 增加缓存大小
HistoryCacheSize=64M # 增加历史数据缓存
TrendCacheSize=32M # 增加趋势数据缓存
- MySQL 性能参数:
[mysqld]
innodb_buffer_pool_size = 512M # 根据服务器内存调整
innodb_log_file_size = 128M
query_cache_type = 0 # 关闭查询缓存(MySQL 8.0默认关闭)
5、Redis集群监控
一、环境规划
至少需要 3 台主机(1 台 Zabbix Server + 3 节点 Redis 集群):
主机角色 | IP 地址 | 软件安装 |
---|---|---|
Zabbix Server | 192.168.52.161 | Zabbix Server 6.4、Zabbix Agent |
Redis Node 1 | 192.168.52.165 | Redis 6.x、Zabbix Agent |
Redis Node 2 | 192.168.52.166 | Redis 6.x、Zabbix Agent |
Redis Node 3 | 192.168.52.167 | Redis 6.x、Zabbix Agent |
二、软件安装与配置
1. Zabbix Server(192.168.52.161)配置
# 添加Zabbix源并安装
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
dnf clean all
dnf install -y zabbix-server-mysql zabbix-web-nginx zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
# 配置数据库(已存在则跳过)
mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 导入Zabbix架构
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix
# 配置Zabbix Server数据库密码
vi /etc/zabbix/zabbix_server.conf
DBPassword=Zabbix@123
# 启动服务
systemctl enable --now zabbix-server zabbix-agent nginx php-fpm
2. Redis 集群节点(192.168.52.165/166/167)配置
# 添加EPEL源并安装Redis
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install -y redis
# 配置Redis(所有节点)
vi /etc/redis.conf
修改以下参数:
bind 0.0.0.0 # 允许外部访问
protected-mode no # 关闭保护模式
port 6379 # 端口
cluster-enabled yes # 启用集群模式
cluster-config-file nodes.conf # 集群配置文件
cluster-node-timeout 5000 # 节点超时时间
appendonly yes # 开启AOF持久化
# 启动Redis并设置开机自启(所有节点)
systemctl enable --now redis
三、创建 Redis 集群
1. 生成集群配置(所有节点)
# 所有节点执行,生成集群ID
redis-cli --cluster create \
192.168.52.165:6379 \
192.168.52.166:6379 \
192.168.52.167:6379 \
--cluster-replicas 0
按提示输入yes确认创建集群。
2. 验证集群状态
# 任意节点执行
redis-cli -c -h 192.168.52.165 cluster nodes
确保所有节点状态正常(connected)。
四、Zabbix 监控配置
1. 在 Redis 节点安装 Zabbix Agent(所有节点)
# 添加Zabbix源并安装Agent
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
dnf clean all
dnf install -y zabbix-agent
# 配置Agent指向Zabbix Server
vi /etc/zabbix/zabbix_agentd.conf
修改以下参数:
Server=192.168.52.161
ServerActive=192.168.52.161
Hostname=Redis-Node-165 # 节点1使用
# 或Hostname=Redis-Node-166 # 节点2使用
# 或Hostname=Redis-Node-167 # 节点3使用
# 启动Agent
systemctl enable --now zabbix-agent
2. 在 Zabbix Server 创建 Redis 监控脚本
mkdir -p /usr/lib/zabbix/externalscripts
vi /usr/lib/zabbix/externalscripts/redis_stats.sh
脚本内容:
#!/bin/bash
# 用法: redis_stats.sh <host> <port> <password> <metric>
HOST=$1
PORT=$2
PASSWORD=$3
METRIC=$4
if [ -n "$PASSWORD" ]; then
AUTH="AUTH $PASSWORD"
else
AUTH=""
fi
# 获取Redis信息
INFO=$(redis-cli -h "$HOST" -p "$PORT" $AUTH INFO 2>/dev/null)
if [ $? -ne 0 ]; then
echo "0"
exit 1
fi
# 提取指标
case $METRIC in
connected_clients) echo "$INFO" | grep 'connected_clients:' | cut -d: -f2 | tr -d '\r' ;;
used_memory) echo "$INFO" | grep 'used_memory:' | cut -d: -f2 | tr -d '\r' ;;
used_memory_rss) echo "$INFO" | grep 'used_memory_rss:' | cut -d: -f2 | tr -d '\r' ;;
keyspace_hits) echo "$INFO" | grep 'keyspace_hits:' | cut -d: -f2 | tr -d '\r' ;;
keyspace_misses) echo "$INFO" | grep 'keyspace_misses:' | cut -d: -f2 | tr -d '\r' ;;
role) echo "$INFO" | grep 'role:' | cut -d: -f2 | tr -d '\r' ;;
cluster_enabled) echo "$INFO" | grep 'cluster_enabled:' | cut -d: -f2 | tr -d '\r' ;;
cluster_known_nodes) echo "$INFO" | grep 'cluster_known_nodes:' | cut -d: -f2 | tr -d '\r' ;;
cluster_size) echo "$INFO" | grep 'cluster_size:' | cut -d: -f2 | tr -d '\r' ;;
*) echo "0" ;;
esac
设置权限:
chmod +x /usr/lib/zabbix/externalscripts/redis_stats.sh
chown zabbix:zabbix /usr/lib/zabbix/externalscripts/redis_stats.sh
五、在 Zabbix Web 添加 Redis 监控
1. 导入 Redis 监控模板
Configuration → Templates → Import
选择下载的 XML 模板文件
2. 添加 Redis 主机
Configuration → Hosts → Create host
- Host name:Redis-Node-165
- Interfaces:IP 192.168.52.165,端口 10050
- Templates:链接Template App Redis
- Macros:
- {$REDIS.HOST}:192.168.52.165
-
-
{$REDIS.PORT}:6379
-
- {$REDIS.PASSWORD}:(如无密码则留空)
重复上述步骤添加其他 Redis 节点(166、167)
六、自定义 Redis 集群监控项
1. 创建集群节点数监控项
Configuration → Hosts → Redis-Node-165 → Items → Create item
- Name:Redis Cluster Nodes
- Type:External check
- Key:redis_stats.sh[192.168.52.165,6379,,cluster_known_nodes]
- Type of information:Numeric (unsigned)
- Update interval:60s
2. 创建集群状态监控项
Name:Redis Cluster Status
- Type:Zabbix agent
- Key:system.run[redis-cli -c -h 192.168.52.165 cluster info | grep cluster_state | cut -d: -f2]
- Type of information:Character
- Update interval:60s
七、创建触发器
1. 集群节点数异常告警
Name:Redis Cluster Node Count Changed
- Expression:{Redis-Node-165:redis_stats.sh[192.168.52.165,6379,,cluster_known_nodes].last()}<>3
- Severity:Warning
2. 集群状态异常告警
Name:Redis Cluster Not Ok
- Expression:{Redis-Node-165:system.run[redis-cli -c -h 192.168.52.165 cluster info | grep cluster_state | cut -d: -f2].str(ok)}=0
- Severity:High
八、验证监控配置
查看监控数据:
- Monitoring → Latest data
- 筛选 Redis 节点,确认各项指标正常显示
测试集群状态:
- 临时停止一个 Redis 节点:systemctl stop redis
- 检查 Zabbix 是否触发Redis Cluster Node Count Changed告警
- 重启 Redis 节点,确认告警恢复
九、安全与性能优化
1. Redis 安全配置
# 所有节点设置密码(可选)
vi /etc/redis.conf
requirepass YourRedisPassword # 设置强密码
# 重启Redis
systemctl restart redis
2. Zabbix 性能优化
# 编辑Zabbix Server配置
vi /etc/zabbix/zabbix_server.conf
调整参数:
StartPollers=20
StartTrappers=10
CacheSize=256M
HistoryCacheSize=128M
TrendCacheSize=64M
3. Redis 性能参数
vi /etc/redis.conf
调整参数:
maxmemory 2G # 根据服务器内存调整
maxmemory-policy allkeys-lru # 内存淘汰策略
tcp-keepalive 300 # 保持长连接