【企业级分布式系统】Zabbix监控系统与部署安装

文章目录

Zabbix监控系统

Zabbix 6.0 是一个功能强大的开源监控系统,用于监视分布式系统和网络的状态。它提供了一个基于Web的界面,使运维人员能够方便地查看和分析服务器性能、应用服务状态和网站流量等指标。

Zabbix是什么?

Zabbix是一个企业级开源解决方案,通过Web界面提供分布式系统监视和网络监视功能。它能够监控各种网络参数,确保服务器系统的安全运营,并提供灵活的通知机制,帮助系统管理员快速定位和解决存在的问题。Zabbix由Zabbix Server和可选的Zabbix Agent两部分构成,通过C/S模式采集数据,通过B/S模式在Web端展示和配置。

Zabbix监控原理

  1. Zabbix Agent:安装在被监控的主机上,负责定期收集客户端本地的各项数据,如CPU、内存、磁盘使用情况等,并将这些数据发送至Zabbix Server端。
  2. Zabbix Server:接收来自Zabbix Agent的数据,并将其存储到数据库中。同时,Zabbix Server还负责配置信息的存储、告警的触发和通知的发送。
  3. 数据库:存储所有配置信息和Zabbix采集到的数据。Zabbix支持多种数据库,如MySQL、PostgreSQL、Oracle等。
  4. Web前端:用户通过Web前端查看监控数据、配置监控项和触发器。Web前端基于Apache/Nginx + PHP实现,可以与Zabbix Server运行在同一台物理机器上,也可以分开部署。

Zabbix 6.0新特性

  1. Zabbix Server高可用:原生支持HA群集配置,可以定义一个或多个备用节点,实时监控Zabbix Server群集节点的状态,从而防止硬件故障或计划维护期导致的停机。
  2. Kubernetes监控功能:新增对Kubernetes系统的监控,可以自动发现和监控Kubernetes节点和Pods,无需代理即可采集相关信息,并提供高水平的节点主机信息。

Zabbix 6.0功能组件

  1. Zabbix Server:Zabbix软件的核心组件,负责接收Zabbix Agent发送的数据,存储配置信息和监控数据,以及触发告警和发送通知。
  2. 数据库:存储所有配置信息和监控数据,支持多种数据库类型。
  3. Web界面:基于Apache/Nginx + PHP实现,用于展示和配置监控项、触发器和告警等。
  4. Zabbix Agent:部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给Zabbix Server。
  5. Zabbix Proxy:可选组件,用于代替Zabbix Server采集性能和可用性数据,可以分担单个Zabbix Server的负载,适用于监控大量主机的情况。
  6. 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页面中添加客户端主机

  1. 登录Zabbix Web界面。
  2. 点击左边菜单栏的【配置】中的【主机】。
  3. 点击【创建主机】。
  4. 填写以下信息:
    • 【主机名称】:输入zbx-agent01。
    • 【可见的名称】:输入zbx-agent01-192.168.80.30,用于在Web界面中显示。
    • 【模板】:搜索Linux,选择Linux by Zabbix agent模板。
    • 【群组】:选择Linux servers群组。
    • 【Interfaces】:点击添加客户端,输入客户端的IP地址192.168.80.30。

监控模板下载地址

https://share.zabbix.com/

https://monitoringartist.github.io/zabbix-searcher/

https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates


自定义监控内容

自定义监控内容:服务器登录人数

目标:限制登录人数不超过3个,超过则发出报警信息。

在客户端创建自定义Key
  1. 确定需要执行的Linux命令
    使用who | wc -l命令来获取当前登录的用户数。

  2. 创建Zabbix的自定义监控项配置文件

    • 编辑Zabbix Agent2的主配置文件,确保包含自定义监控项配置文件的目录。

      bash 复制代码
      vim /etc/zabbix/zabbix_agent2.conf
      # 找到并确认以下行,确保包含/etc/zabbix/zabbix_agent2.d/目录
      Include=/etc/zabbix/zabbix_agent2.d/*.conf
    • 创建自定义监控项的配置文件。

      bash 复制代码
      cd /etc/zabbix/zabbix_agent2.d/
      vim UserParameter_login.conf
    • 在配置文件中添加自定义的监控项。

      bash 复制代码
      UserParameter=login.user,who|wc -l
    • 重启Zabbix Agent2服务以应用更改。

      bash 复制代码
      systemctl restart zabbix-agent2
  3. 在服务端验证新建的监控项
    使用zabbix_get命令从服务端验证自定义监控项是否能正确返回数据。

    bash 复制代码
    zabbix_get -s '192.168.80.30' -p 10050 -k 'login.user'
在Web页面创建自定义监控项模板
  1. 创建模板
    • 在Zabbix Web界面的【配置】->【模板】中创建新模板。
    • 设置模板名称、可见名称、群组和描述。
  2. 创建监控项
    • 在新创建的模板中,点击【监控项】->【创建监控项】。
    • 设置监控项的名称、键值(与客户端自定义的监控项一致)、更新间隔和历史数据保留时长。
  3. 创建触发器
    • 在模板中,点击【触发器】->【创建触发器】。
    • 设置触发器的名称、严重性、表达式(用于判断监控项的值是否触发报警)。
      • 表达式示例:{Template Login User:login.user.last()}>3
  4. 创建图形
    • 在模板中,点击【图形】->【创建图形】。
    • 设置图形的名称、宽度、高度和要展示的监控项。
  5. 将主机与模板关联
    • 在【配置】->【主机】中,找到要关联的主机。
    • 在主机的模板选项卡中,搜索并选择Template Login User模板,然后点击【更新】。
  6. 查看监控项指标
    • 在【监测】->【主机】中,找到关联的主机,点击其【图形】以查看监控项指标。
设置邮件报警
  1. 创建报警媒介类型
    • 在【管理】->【报警媒介类型】中创建新的报警媒介类型。
    • 设置SMTP服务器、端口、HELO、电邮地址、认证方式等。
    • 生成并设置QQ邮箱的授权码作为密码。
  2. 配置用户报警媒介
    • 在【User settings】->【Profile】->【报警媒介】中为用户添加报警媒介。
    • 设置收件人、启用时间和严重性级别。
  3. 配置动作
    • 在【配置】->【动作】->【Trigger actions】中配置当触发器触发时要执行的动作。
    • 添加新的动作,设置动作类型为触发器,并指定要触发的触发器。
    • 勾选已启动并更新动作。
测试邮件报警
  • 增加测试客户端的用户登录数,使其超过触发器预设的值。
  • 在【监测】->【仪表板】中确认是否收到报警邮件。

Zabbix自动发现与自动注册

Zabbix 自动发现(被动模式)

Zabbix Server会主动扫描指定的IP范围,寻找运行着Zabbix Agent的主机,并将它们添加到Zabbix Server的管理列表中。

  1. 确保客户端Zabbix Agent2服务正常
    使用systemctl is-active zabbix-agent2.service命令检查Zabbix Agent2服务是否处于活动状态。
  2. 删除原有的客户端主机
    在Zabbix Web界面的【配置】->【主机】中,删除已经存在的客户端主机,以便测试自动发现功能。
  3. 配置hosts解析
    在服务端和客户端的/etc/hosts文件中添加主机名和IP地址的对应关系,确保Zabbix Server和Agent之间可以通过主机名相互访问。
  4. 配置自动发现规则
    • 在Zabbix Web界面的【配置】->【自动发现】中,创建新的发现规则。
    • 设置规则名称、IP范围、更新间隔等参数。
    • 添加检查项,选择Zabbix客户端作为检查类型,设置端口范围和键值(如system.uname)。
    • 设置设备唯一性准则和主机名称等选项。
    • 启用规则。
  5. 配置发现动作
    在【配置】->【动作】->【发现动作】中,启用默认的发现动作(如Auto discovery. Linux servers.),以便在发现新主机时自动添加它们。
  6. 等待并验证自动发现
    等待一段时间后,刷新【配置】->【主机】页面,应该能够看到新发现的客户端主机。同时,可以在服务端查看Zabbix日志以确认发现过程。

Zabbix 自动注册(主动模式)

Zabbix Agent2会主动向Zabbix Server注册自己的信息,这种方式通常用于动态网络环境或需要快速添加大量主机的情况。

  1. 环境准备
    • 禁用自动发现规则。
    • 删除原有的客户端主机。
    • 确保服务端和客户端的hosts解析正确。
  2. 修改Zabbix Agent2配置文件
    • /etc/zabbix/zabbix_agent2.conf文件中,确保ServerServerActive参数设置为Zabbix Server的IP地址。
    • 取消注释HostnameItem=system.hostname,以便Agent使用系统主机名作为注册时的主机名。
    • 重启Zabbix Agent2服务以应用更改。
  3. 配置自动注册动作
    • 在Zabbix Web界面的【配置】->【动作】->【自动注册动作】中,创建新的自动注册动作。
    • 设置动作名称。
    • 添加条件,选择主机名称包含特定字符串(如zbx-agent)。
    • 添加操作,选择添加主机、添加到主机群组、与模板关联等操作。
    • 保存并启用动作。
  4. 等待并验证自动注册
    等待一段时间后,刷新【配置】->【主机】页面,应该能够看到自动注册的客户端主机。同时,可以在服务端查看Zabbix日志以确认注册过程。

以下是对部署Zabbix代理服务器步骤的详细注释和解释:


部署Zabbix代理服务器

分布式监控的作用

  • 分担Zabbix Server的集中式压力,通过引入代理服务器来分散数据收集和处理的工作负载。
  • 解决多机房之间的网络延时问题,通过在各机房部署代理服务器,减少跨机房数据传输的延迟。

部署步骤:

  1. 系统准备
    • 禁用防火墙:systemctl disable --now firewalld
    • 设置SELinux为宽松模式:setenforce 0
    • 设置主机名:hostnamectl set-hostname zbx-proxy
  2. 设置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
bash 复制代码
yum install -y zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy
  1. 部署数据库
    • 配置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并授权。
  1. 导入数据库信息
    • 查询zabbix-sql-scripts包中SQL文件的位置,并导入到创建的数据库中:
bash 复制代码
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql -uroot -pabc123 zabbix_proxy
  1. 配置Zabbix-Proxy

    • 修改/etc/zabbix/zabbix_proxy.conf文件,设置Server为Zabbix Server的IP地址,Hostname为代理服务器的主机名,DBPassword为数据库用户的密码。
  2. 启动Zabbix-Proxy

    • 启动并启用Zabbix-Proxy服务:
bash 复制代码
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
  1. 配置hosts解析

    • 在所有相关主机上(包括Zabbix Server、代理服务器、客户端)的/etc/hosts文件中添加主机名和IP地址的对应关系。
  2. 在Web页面配置Agent代理

    • 禁用自动注册规则,并删除原有的客户端主机。
    • 在【管理】->【agent代理程序】中创建新的代理,设置代理名称、模式和地址。
  3. 配置Agent使用Proxy

    • 修改客户端的/etc/zabbix/zabbix_agent2.conf文件,将ServerServerActive设置为Zabbix代理服务器的IP地址。
    • 在Web页面的【配置】->【主机】中创建新的主机,设置主机名称、可见名称、模板、群组等,并选择由zbx-proxy代理程序监测。
  4. 重启服务和验证

    • 在客户端和代理服务器上重启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配置

  1. 编辑Zabbix Server配置文件:

    bash 复制代码
    vim /etc/zabbix/zabbix_server.conf
  2. 在配置文件中,找到并设置以下参数:

    • DBHost:数据库服务器的IP地址。
    • DBNameDBUserDBPassword:数据库名称、用户名和密码。
    • HANodeName:当前节点的主机名或IP地址,同一集群中必须唯一。
    • NodeAddress:当前节点的IP地址和Zabbix Server的监听端口(默认10051)。
  3. 重启Zabbix Server服务以应用配置:

    bash 复制代码
    systemctl restart zabbix-server
  4. 在数据库服务器上,为主节点和备节点授权远程登录权限(如果数据库和Zabbix Server不在同一台机器上):

    bash 复制代码
    mysql -uroot -pabc123
    GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
    FLUSH PRIVILEGES;

备节点Zabbix Server配置

  1. 编辑备节点的Zabbix Server配置文件,设置与主节点相同的数据库参数。
  2. 设置HANodeNameNodeAddress为备节点的唯一值。
  3. 重启备节点的Zabbix Server服务以应用配置。

注意

  • 在配置文件中,确保没有重复的HANodeName
  • 如果使用防火墙,请确保Zabbix Server的监听端口(默认10051)在防火墙规则中已开放。

客户端配置

为了使客户端能够同时向主节点和备节点发送数据,需要修改客户端配置文件:

  1. 编辑Zabbix Agent配置文件:

    bash 复制代码
    vim /etc/zabbix/zabbix_agentd.conf
  2. 在配置文件中,找到并设置以下参数:

    • Server:列出主节点和备节点的IP地址,用逗号分隔。这是Agent向Server发送被动检查数据的地址列表。
    • ServerActive:列出主节点和备节点的IP地址,用分号分隔。这是Agent向Server发送主动检查数据的地址列表。注意,与Server参数不同,ServerActive的连接符是分号(;)。
  3. 重启Zabbix Agent服务以应用配置。

注意

  • 在配置文件中,确保ServerServerActive参数正确无误,并且使用了正确的连接符。
  • 如果客户端与Zabbix Server之间存在防火墙,请确保Zabbix Agent的端口(默认10050)在防火墙规则中已开放。
相关推荐
进击的阿尔法猿20 分钟前
docker
运维·docker·容器
北京阿法龙科技有限公司29 分钟前
AR 虚实叠加技术在工业设备运维中的实现流程方案
运维·ar
君不见,青丝成雪30 分钟前
Hadoop技术栈(四)HIVE常用函数汇总
大数据·数据库·数据仓库·hive·sql
刘一说35 分钟前
CentOS 系统 Java 开发测试环境搭建手册
java·linux·运维·服务器·centos
会飞的灰大狼3 小时前
MyCAT完整实验报告
mysql·centos7
不羁。。6 小时前
【撸靶笔记】第七关:GET - Dump into outfile - String
数据库·笔记·oracle
yangchanghua1117 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance7 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai7 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白8 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发