文章目录
- Zabbix监控系统
-
- Zabbix是什么?
- Zabbix监控原理
- [Zabbix 6.0新特性](#Zabbix 6.0新特性)
- [Zabbix 6.0功能组件](#Zabbix 6.0功能组件)
- 部署安装
-
- [关闭 selinux 与防火墙](#关闭 selinux 与防火墙)
- 服务端
- 添加Zabbix客户端主机的指南~
-
- 禁用防火墙和SELinux
- 设置主机名
- 时间同步
- 配置hosts解析
- [配置Zabbix下载源并安装Zabbix Agent2](#配置Zabbix下载源并安装Zabbix Agent2)
- [配置Zabbix Agent2](#配置Zabbix Agent2)
- [启动并启用Zabbix Agent2](#启动并启用Zabbix Agent2)
- [在服务端验证Zabbix Agent2的连通性](#在服务端验证Zabbix Agent2的连通性)
- [在Zabbix Web页面中添加客户端主机](#在Zabbix Web页面中添加客户端主机)
- 监控模板下载地址
- 自定义监控内容
- Zabbix自动发现与自动注册
-
- [Zabbix 自动发现(被动模式)](#Zabbix 自动发现(被动模式))
- [Zabbix 自动注册(主动模式)](#Zabbix 自动注册(主动模式))
- 部署Zabbix代理服务器
- 部署Zabbix高可用集群
Zabbix监控系统
Zabbix 6.0 是一个功能强大的开源监控系统,用于监视分布式系统和网络的状态。它提供了一个基于Web的界面,使运维人员能够方便地查看和分析服务器性能、应用服务状态和网站流量等指标。
Zabbix是什么?
Zabbix是一个企业级开源解决方案,通过Web界面提供分布式系统监视和网络监视功能。它能够监控各种网络参数,确保服务器系统的安全运营,并提供灵活的通知机制,帮助系统管理员快速定位和解决存在的问题。Zabbix由Zabbix Server和可选的Zabbix Agent两部分构成,通过C/S模式采集数据,通过B/S模式在Web端展示和配置。
Zabbix监控原理
- Zabbix Agent:安装在被监控的主机上,负责定期收集客户端本地的各项数据,如CPU、内存、磁盘使用情况等,并将这些数据发送至Zabbix Server端。
- Zabbix Server:接收来自Zabbix Agent的数据,并将其存储到数据库中。同时,Zabbix Server还负责配置信息的存储、告警的触发和通知的发送。
- 数据库:存储所有配置信息和Zabbix采集到的数据。Zabbix支持多种数据库,如MySQL、PostgreSQL、Oracle等。
- Web前端:用户通过Web前端查看监控数据、配置监控项和触发器。Web前端基于Apache/Nginx + PHP实现,可以与Zabbix Server运行在同一台物理机器上,也可以分开部署。
Zabbix 6.0新特性
- Zabbix Server高可用:原生支持HA群集配置,可以定义一个或多个备用节点,实时监控Zabbix Server群集节点的状态,从而防止硬件故障或计划维护期导致的停机。
- Kubernetes监控功能:新增对Kubernetes系统的监控,可以自动发现和监控Kubernetes节点和Pods,无需代理即可采集相关信息,并提供高水平的节点主机信息。
Zabbix 6.0功能组件
- Zabbix Server:Zabbix软件的核心组件,负责接收Zabbix Agent发送的数据,存储配置信息和监控数据,以及触发告警和发送通知。
- 数据库:存储所有配置信息和监控数据,支持多种数据库类型。
- Web界面:基于Apache/Nginx + PHP实现,用于展示和配置监控项、触发器和告警等。
- Zabbix Agent:部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给Zabbix Server。
- Zabbix Proxy:可选组件,用于代替Zabbix Server采集性能和可用性数据,可以分担单个Zabbix Server的负载,适用于监控大量主机的情况。
- Java Gateway:用于监控Tomcat服务或其他Java程序,作为代理从Java程序中获取数据。
部署安装
●系统:CentOS 7 不支持 yum 方式安装 Zabbix 6.0 服务端
●安装方式:Zabbix 服务端采用编译安装的方式,zabbix 客户端采用 yum 安装的方式
关闭 selinux 与防火墙
bash
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server
服务端
部署 Nginx + PHP 环境并测试
安装 nginx
bash
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
bash
yum install -y nginx
安装 php
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum -y install https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath
修改 nginx 配置
bash
vim /etc/nginx/conf.d/zbx.conf
server {
listen 80;
server_name zbx.xy101.com;
root /var/www/zbx;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/zbx$fastcgi_script_name;
include fastcgi_params;
}
}
bash
vim /etc/nginx/conf.d/zbx.conf
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /var/www/zbx;
index index.php index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /var/www/zbx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/zbx$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
修改 php 配置
bash
vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
vim /etc/php.ini
max_execution_time = 300 # 368行
max_input_time = 600 # 378行
post_max_size = 80M # 656行
date.timezone = Asia/Shanghai # 877行
创建目录和测试文件
#创建目录和测试文件
mkdir -p /var/www/zbx
bash
vim /var/www/zbx/index.php
<?php
phpinfo();
?>
启动服务
#启动服务
systemctl enable --now nginx php-fpm
测试访问
方式一:直接访问ip地址
方式二:windows主机上修改hosts文件解析域名访问
bash
#修改
C:\Windows\System32\drivers\etc\hosts
192.168.80.20 zbx.xy101.com
浏览器访问:http://zbx.xy101.com/index.php
数据库部署
部署数据库,要求 MySQL 5.7 或 Mariadb 10.5 及以上版本
配置 Mariadb yum源
bash
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF
yum安装
bash
yum install -y mariadb-server mariadb
启动
systemctl enable --now mariadb
初始化数据库
bash
mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如abc123) -> 后面一路 Y
登陆数据库
bash
mysql -u root -pabc123
创建数据库并指定字符集
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
创建 zabbix 数据库用户并授权
GRANT all ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
向数据库导入 zabbix 数据
上传源码包 zabbix-6.0.13.tar.gz 到 /opt 目录
注意压缩包的名字,不同版本的名字会有所不同
bash
cd /opt
tar xf zabbix-6.0.13.tar.gz
bash
ls /opt/zabbix-6.0.13/database/mysql
data.sql double.sql history_pk_prepare.sql images.sql Makefile.am Makefile.in schema.sql
按照顺序导入数据库
cd /opt/zabbix-6.0.13/database/mysql
mysql -uroot -pabc123 zabbix < schema.sql
mysql -uroot -pabc123 zabbix < images.sql
mysql -uroot -pabc123 zabbix < data.sql
mysql -uroot -pabc123 zabbix < double.sql
mysql -uroot -pabc123 zabbix < history_pk_prepare.sql
编译安装 zabbix Server 服务端
安装依赖包,创建 zabbix 用户
bash
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
添加用户
useradd -s /sbin/nologin -M zabbix
编译安装
cd /opt/zabbix-6.0.13/
./configure \
--sysconfdir=/etc/zabbix/ \
--enable-server \
--with-mysql \
--with-net-snmp \
--with-libxml2 \
--with-ssh2 \
--with-openipmi \
--with-zlib \
--with-libpthread \
--with-libevent \
--with-openssl \
--with-ldap \
--with-libcurl \
--with-libpcre
make install
检查版本
zabbix_server --version
zabbix_server (Zabbix) 6.0.13
修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
......
LogFile=/var/log/zabbix_server.log # 38行,指定 zabbix 日志路径
DBPassword=zabbix # 123行,指定 zabbix 数据库的密码
准备 systemctl 服务管理文件
bash
cat > /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
EOF
重新加载 systemd 配置
bash
systemctl daemon-reload
创建目录并授予权限
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log
启动服务
systemctl enable --now zabbix-server
检查端口
netstat -lntp | grep 10051 #zabbix_server 默认监听 10051 端口
#部署 Web 前端,进行访问
cp -r /opt/zabbix-6.0.13/ui/* /var/www/zbx
授予权限
chown -R nginx.nginx /var/www/zbxz
浏览器访问域名或者IP地址
【Default language】选择 Chinese(zh_CN),点击下一步
【密码】输入 zabbix,点击下一步
【Zabbix主机名称】输入 Zabbix-监控;【默认时区】选择 Asia/Shanghai,点击下一步
安装完成后,默认的登录账号和密码为:Admin/zabbix
安装 zabbix 客户端,实现 zabbix 服务端自我监控
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
zabbix 5.0 版本开始采用 golang 语言开发的新版本客户端 agent2
yum install -y zabbix-agent2
启动zabbix agent
systemctl enable --now zabbix-agent2
检查端口
netstat -lntp | grep 10050 #客户端 zabbix_agent2 默认监听 10050 端口
解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /var/www/zbx/assets/fonts/DejaVuSans.ttf
然后刷新浏览器页面即可
添加Zabbix客户端主机的指南~
禁用防火墙和SELinux
bash
# 禁用并停止firewalld防火墙服务
systemctl disable --now firewalld
# 将SELinux设置为宽容模式(permissive),允许所有操作但不强制执行安全策略
setenforce 0
设置主机名
bash
# 将主机名设置为zbx-agent01
hostnamectl set-hostname zbx-agent01
时间同步
bash
# 安装ntpdate工具,用于同步时间
yum install -y ntpdate
# 使用阿里云提供的NTP服务器同步时间
ntpdate -u ntp.aliyun.com
配置hosts解析
bash
# 向/etc/hosts文件中添加服务端和客户端的IP地址和主机名映射
cat > /etc/hosts << EOF
192.168.80.20 zbx-server
192.168.80.30 zbx-agent01
EOF
配置Zabbix下载源并安装Zabbix Agent2
bash
# 从Zabbix官方仓库下载Zabbix的RPM包
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
# 将Zabbix的YUM源地址替换为阿里云的镜像地址,以加速下载
sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
# 安装Zabbix Agent2
yum install -y zabbix-agent2
配置Zabbix Agent2
bash
# 编辑Zabbix Agent2的配置文件
vim /etc/zabbix/zabbix_agent2.conf
# 修改以下配置项:
# Server:指定Zabbix服务端的IP地址
# ServerActive:指定主动向Zabbix服务端发送数据的IP地址
# Hostname:指定当前Zabbix客户端的主机名,应与Zabbix Web界面中添加的主机名一致
启动并启用Zabbix Agent2
bash
# 启动Zabbix Agent2服务
systemctl start zabbix-agent2
# 设置Zabbix Agent2服务开机自启动
systemctl enable zabbix-agent2
# 检查Zabbix Agent2服务是否正常运行,监听在10050端口
netstat -natp | grep zabbix
在服务端验证Zabbix Agent2的连通性
bash
# 在Zabbix服务端安装zabbix-get工具
yum install -y zabbix-get
# 使用zabbix-get工具测试与客户端的连通性
# agent.ping:测试服务端与客户端是否连通,返回1表示可达
zabbix_get -s '192.168.80.30' -p 10050 -k 'agent.ping'
# system.hostname:获取客户端的系统主机名
zabbix_get -s '192.168.80.30' -p 10050 -k 'system.hostname'
在Zabbix Web页面中添加客户端主机
- 登录Zabbix Web界面。
- 点击左边菜单栏的【配置】中的【主机】。
- 点击【创建主机】。
- 填写以下信息:
- 【主机名称】:输入zbx-agent01。
- 【可见的名称】:输入zbx-agent01-192.168.80.30,用于在Web界面中显示。
- 【模板】:搜索Linux,选择Linux by Zabbix agent模板。
- 【群组】:选择Linux servers群组。
- 【Interfaces】:点击添加客户端,输入客户端的IP地址192.168.80.30。
监控模板下载地址
https://monitoringartist.github.io/zabbix-searcher/
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates
自定义监控内容
自定义监控内容:服务器登录人数
目标:限制登录人数不超过3个,超过则发出报警信息。
在客户端创建自定义Key
-
确定需要执行的Linux命令 :
使用who | wc -l
命令来获取当前登录的用户数。 -
创建Zabbix的自定义监控项配置文件 :
-
编辑Zabbix Agent2的主配置文件,确保包含自定义监控项配置文件的目录。
bashvim /etc/zabbix/zabbix_agent2.conf # 找到并确认以下行,确保包含/etc/zabbix/zabbix_agent2.d/目录 Include=/etc/zabbix/zabbix_agent2.d/*.conf
-
创建自定义监控项的配置文件。
bashcd /etc/zabbix/zabbix_agent2.d/ vim UserParameter_login.conf
-
在配置文件中添加自定义的监控项。
bashUserParameter=login.user,who|wc -l
-
重启Zabbix Agent2服务以应用更改。
bashsystemctl restart zabbix-agent2
-
-
在服务端验证新建的监控项 :
使用zabbix_get
命令从服务端验证自定义监控项是否能正确返回数据。bashzabbix_get -s '192.168.80.30' -p 10050 -k 'login.user'
在Web页面创建自定义监控项模板
- 创建模板 :
- 在Zabbix Web界面的【配置】->【模板】中创建新模板。
- 设置模板名称、可见名称、群组和描述。
- 创建监控项 :
- 在新创建的模板中,点击【监控项】->【创建监控项】。
- 设置监控项的名称、键值(与客户端自定义的监控项一致)、更新间隔和历史数据保留时长。
- 创建触发器 :
- 在模板中,点击【触发器】->【创建触发器】。
- 设置触发器的名称、严重性、表达式(用于判断监控项的值是否触发报警)。
- 表达式示例:
{Template Login User:login.user.last()}>3
- 表达式示例:
- 创建图形 :
- 在模板中,点击【图形】->【创建图形】。
- 设置图形的名称、宽度、高度和要展示的监控项。
- 将主机与模板关联 :
- 在【配置】->【主机】中,找到要关联的主机。
- 在主机的模板选项卡中,搜索并选择
Template Login User
模板,然后点击【更新】。
- 查看监控项指标 :
- 在【监测】->【主机】中,找到关联的主机,点击其【图形】以查看监控项指标。
设置邮件报警
- 创建报警媒介类型 :
- 在【管理】->【报警媒介类型】中创建新的报警媒介类型。
- 设置SMTP服务器、端口、HELO、电邮地址、认证方式等。
- 生成并设置QQ邮箱的授权码作为密码。
- 配置用户报警媒介 :
- 在【User settings】->【Profile】->【报警媒介】中为用户添加报警媒介。
- 设置收件人、启用时间和严重性级别。
- 配置动作 :
- 在【配置】->【动作】->【Trigger actions】中配置当触发器触发时要执行的动作。
- 添加新的动作,设置动作类型为触发器,并指定要触发的触发器。
- 勾选已启动并更新动作。
测试邮件报警
- 增加测试客户端的用户登录数,使其超过触发器预设的值。
- 在【监测】->【仪表板】中确认是否收到报警邮件。
Zabbix自动发现与自动注册
Zabbix 自动发现(被动模式)
Zabbix Server会主动扫描指定的IP范围,寻找运行着Zabbix Agent的主机,并将它们添加到Zabbix Server的管理列表中。
- 确保客户端Zabbix Agent2服务正常 :
使用systemctl is-active zabbix-agent2.service
命令检查Zabbix Agent2服务是否处于活动状态。 - 删除原有的客户端主机 :
在Zabbix Web界面的【配置】->【主机】中,删除已经存在的客户端主机,以便测试自动发现功能。 - 配置hosts解析 :
在服务端和客户端的/etc/hosts
文件中添加主机名和IP地址的对应关系,确保Zabbix Server和Agent之间可以通过主机名相互访问。 - 配置自动发现规则 :
- 在Zabbix Web界面的【配置】->【自动发现】中,创建新的发现规则。
- 设置规则名称、IP范围、更新间隔等参数。
- 添加检查项,选择Zabbix客户端作为检查类型,设置端口范围和键值(如
system.uname
)。 - 设置设备唯一性准则和主机名称等选项。
- 启用规则。
- 配置发现动作 :
在【配置】->【动作】->【发现动作】中,启用默认的发现动作(如Auto discovery. Linux servers.
),以便在发现新主机时自动添加它们。 - 等待并验证自动发现 :
等待一段时间后,刷新【配置】->【主机】页面,应该能够看到新发现的客户端主机。同时,可以在服务端查看Zabbix日志以确认发现过程。
Zabbix 自动注册(主动模式)
Zabbix Agent2会主动向Zabbix Server注册自己的信息,这种方式通常用于动态网络环境或需要快速添加大量主机的情况。
- 环境准备 :
- 禁用自动发现规则。
- 删除原有的客户端主机。
- 确保服务端和客户端的hosts解析正确。
- 修改Zabbix Agent2配置文件 :
- 在
/etc/zabbix/zabbix_agent2.conf
文件中,确保Server
和ServerActive
参数设置为Zabbix Server的IP地址。 - 取消注释
HostnameItem=system.hostname
,以便Agent使用系统主机名作为注册时的主机名。 - 重启Zabbix Agent2服务以应用更改。
- 在
- 配置自动注册动作 :
- 在Zabbix Web界面的【配置】->【动作】->【自动注册动作】中,创建新的自动注册动作。
- 设置动作名称。
- 添加条件,选择主机名称包含特定字符串(如
zbx-agent
)。 - 添加操作,选择添加主机、添加到主机群组、与模板关联等操作。
- 保存并启用动作。
- 等待并验证自动注册 :
等待一段时间后,刷新【配置】->【主机】页面,应该能够看到自动注册的客户端主机。同时,可以在服务端查看Zabbix日志以确认注册过程。
以下是对部署Zabbix代理服务器步骤的详细注释和解释:
部署Zabbix代理服务器
分布式监控的作用:
- 分担Zabbix Server的集中式压力,通过引入代理服务器来分散数据收集和处理的工作负载。
- 解决多机房之间的网络延时问题,通过在各机房部署代理服务器,减少跨机房数据传输的延迟。
部署步骤:
- 系统准备 :
- 禁用防火墙:
systemctl disable --now firewalld
- 设置SELinux为宽松模式:
setenforce 0
- 设置主机名:
hostnamectl set-hostname zbx-proxy
- 禁用防火墙:
- 设置Zabbix下载源并安装Zabbix-Proxy:
- 下载并安装Zabbix-release包:
bash
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
-
修改Zabbix yum源为阿里云镜像:
sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
-
安装Zabbix-Proxy及其依赖:
bash
yum install -y zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy
- 部署数据库 :
- 配置MariaDB yum源,并安装MariaDB服务器和客户端:通过创建
bash
/etc/yum.repos.d/mariadb.repo`文件并运行`yum install -y mariadb-server mariadb
- 启动并启用MariaDB服务:
bash
systemctl enable --now mariadb
- 初始化数据库:
运行mysql_secure_installation
并设置root密码(如abc123),后续选择Y进行安全配置。 - 创建Zabbix代理数据库和用户:
登录MySQL后,创建数据库zabbix_proxy
并设置字符集,然后创建用户zabbix
并授权。
- 导入数据库信息 :
- 查询
zabbix-sql-scripts
包中SQL文件的位置,并导入到创建的数据库中:
- 查询
bash
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql -uroot -pabc123 zabbix_proxy
-
配置Zabbix-Proxy:
- 修改
/etc/zabbix/zabbix_proxy.conf
文件,设置Server
为Zabbix Server的IP地址,Hostname
为代理服务器的主机名,DBPassword
为数据库用户的密码。
- 修改
-
启动Zabbix-Proxy:
- 启动并启用Zabbix-Proxy服务:
bash
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
-
配置hosts解析:
- 在所有相关主机上(包括Zabbix Server、代理服务器、客户端)的
/etc/hosts
文件中添加主机名和IP地址的对应关系。
- 在所有相关主机上(包括Zabbix Server、代理服务器、客户端)的
-
在Web页面配置Agent代理:
- 禁用自动注册规则,并删除原有的客户端主机。
- 在【管理】->【agent代理程序】中创建新的代理,设置代理名称、模式和地址。
-
配置Agent使用Proxy:
- 修改客户端的
/etc/zabbix/zabbix_agent2.conf
文件,将Server
和ServerActive
设置为Zabbix代理服务器的IP地址。 - 在Web页面的【配置】->【主机】中创建新的主机,设置主机名称、可见名称、模板、群组等,并选择由
zbx-proxy
代理程序监测。
- 修改客户端的
-
重启服务和验证:
- 在客户端和代理服务器上重启Zabbix-Agent和Zabbix-Proxy服务。
- 等待一段时间后,刷新Web页面的【配置】->【主机】以查看客户端主机的监控状态。
- 在服务端查看Zabbix-Proxy的日志以确认配置和运行状态。
部署Zabbix高可用集群
Zabbix官方的高可用解决方案仅针对Zabbix Server部分。为了实现完整的高可用,还需要对数据库(如MySQL/MariaDB)和前端(如Zabbix Web界面)采用各自领域的高可用解决方案,如数据库的主从复制、负载均衡等。
服务端配置
默认情况下,Zabbix Server的高可用(HA)功能是关闭的。HA相关的配置位于Zabbix Server配置文件的"High availability cluster parameters"部分。
主节点Zabbix Server配置:
-
编辑Zabbix Server配置文件:
bashvim /etc/zabbix/zabbix_server.conf
-
在配置文件中,找到并设置以下参数:
DBHost
:数据库服务器的IP地址。DBName
、DBUser
、DBPassword
:数据库名称、用户名和密码。HANodeName
:当前节点的主机名或IP地址,同一集群中必须唯一。NodeAddress
:当前节点的IP地址和Zabbix Server的监听端口(默认10051)。
-
重启Zabbix Server服务以应用配置:
bashsystemctl restart zabbix-server
-
在数据库服务器上,为主节点和备节点授权远程登录权限(如果数据库和Zabbix Server不在同一台机器上):
bashmysql -uroot -pabc123 GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix'; FLUSH PRIVILEGES;
备节点Zabbix Server配置:
- 编辑备节点的Zabbix Server配置文件,设置与主节点相同的数据库参数。
- 设置
HANodeName
和NodeAddress
为备节点的唯一值。 - 重启备节点的Zabbix Server服务以应用配置。
注意:
- 在配置文件中,确保没有重复的
HANodeName
。 - 如果使用防火墙,请确保Zabbix Server的监听端口(默认10051)在防火墙规则中已开放。
客户端配置
为了使客户端能够同时向主节点和备节点发送数据,需要修改客户端配置文件:
-
编辑Zabbix Agent配置文件:
bashvim /etc/zabbix/zabbix_agentd.conf
-
在配置文件中,找到并设置以下参数:
Server
:列出主节点和备节点的IP地址,用逗号分隔。这是Agent向Server发送被动检查数据的地址列表。ServerActive
:列出主节点和备节点的IP地址,用分号分隔。这是Agent向Server发送主动检查数据的地址列表。注意,与Server
参数不同,ServerActive
的连接符是分号(;
)。
-
重启Zabbix Agent服务以应用配置。
注意:
- 在配置文件中,确保
Server
和ServerActive
参数正确无误,并且使用了正确的连接符。 - 如果客户端与Zabbix Server之间存在防火墙,请确保Zabbix Agent的端口(默认10050)在防火墙规则中已开放。