本次serevr1和server2应用rocky9.6,server3应用CentOS 7

ZABBIX

基础概念

基础定位

Zabbix 是一款开源免费、企业级分布式运维监控系统,由 Alexei Vladishev 开发,主打服务器、网络设备、中间件、数据库、业务服务全方位指标采集、监控告警、可视化大屏、历史数据存储,运维领域主流老牌监控方案,适配中小集群到大型分布式 IDC 环境。

核心特点
  1. 完全开源免费,无授权费用,社区生态完善;
  2. 支持多采集方式、自定义监控项、灵活触发器告警;
  3. 内置 Web 可视化、图形、报表、拓扑图、自动发现;
  4. 兼容 Linux/Windows/ 网络交换机、路由器、MySQL/Nginx/Redis 等几乎所有 IT 资源。
经典五大核心组件
组件 作用说明 部署位置
Zabbix Server 核心调度中心:接收采集数据、判断触发器阈值、生成告警、下发配置、写入数据库 监控服务端(独立服务器)
Zabbix Agent 客户端采集程序,本地主动采集 CPU、内存、磁盘、端口、进程、日志等指标 被监控主机(Linux/Windows)
Zabbix Database 持久化存储监控历史数据、配置、告警记录,主流搭配MySQL 8.0、PostgreSQL 服务端配套数据库
Zabbix Web UI 可视化管理后台,浏览器配置监控项、看图表、处理告警、主机管理、大屏展示 Nginx/Apache+PHP 运行
Zabbix Proxy 分布式代理节点,大批量跨机房、跨地域环境分流采集压力,代理收集数据统一上报 Server 各地机房中转服务器
两种 Agent 工作模式
  1. 被动模式(默认):Server 定时主动连接 Agent 拉取监控数据;
  2. 主动模式:Agent 主动定时上报数据给 Server,大规模主机场景减轻 Server 网络压力,推荐集群使用。
主流数据采集方式
  1. Agent 采集(最常用):主机本地部署 agent,精准采集系统层指标;
  2. SNMP:监控交换机、防火墙、路由器等网络硬件设备;
  3. JMX:监控 Java 应用(Tomcat、SpringBoot、JVM 堆内存、线程数);
  4. SSH/Telnet:远程执行命令抓取指标(无 agent 临时监控);
  5. HTTP/Agent 脚本:自定义 Shell/Python 脚本抓取业务接口、日志、中间件指标;
  6. Zabbix Sender:业务程序主动推送自定义指标(业务埋点上报);
  7. VMware API:对接虚拟化平台,监控虚拟机、宿主机资源。
核心工作流程
  1. Server 下发监控配置 → Agent 按周期采集指标;
  2. 数据上传至 Server,入库保存历史数据;
  3. **触发器(Trigger)**预设阈值规则(示例:CPU 使用率连续 5 分钟>90%);
  4. 触发阈值异常 → 生成事件,执行告警动作;
  5. 运维人员在 Web 查看告警、图形,故障恢复后自动关闭告警。
告警渠道

邮件、钉钉、企业微信、短信、电话、Webhook 对接运维平台、脚本执行(故障自动自愈脚本重启服务)。

常用核心概念
  1. 主机组 Host groups:对服务器分类(Web 组、数据库组、网络设备组);
  2. 监控项 Item:单一采集指标(空闲内存、根分区使用率、80 端口监听状态);
  3. 模板 Template:批量打包监控项、触发器、图形,一键套用至多台同类型主机(Nginx 模板、MySQL 模板);
  4. 触发器 Trigger:判定正常 / 异常的阈值规则;
  5. 动作 Action:告警触发后执行操作(发通知、执行自愈脚本);
  6. 图形 Graph:指标时序曲线图,观察负载波动;
  7. 自动发现 Discovery:网段扫描自动发现新服务器,自动挂载监控模板,免手动一台台添加主机。
典型部署架构
  1. 单机架构:Server+Web+MySQL 部署同一台服务器,几十台以内小规模环境;
  2. 主从分离架构:数据库独立部署,提升 IO 性能;
  3. 分布式 Proxy 架构:多机房部署 Proxy 代理,各自采集本机房数据汇总至中心 Server,适合上百台以上大规模集群;
  4. 高可用架构:搭配 Keepalived 做 Server 双机 VIP 漂移、数据库 MGR 主从、数据库分表优化解决海量历史数据性能瓶颈。
优缺点
优点
  • 免费开源、社区文档丰富,运维上手门槛适中;
  • 覆盖系统、网络、数据库、应用全场景监控;
  • 高度自定义,脚本扩展能力极强;
  • 稳定成熟,大量传统企业、云内部署;
缺点
  • 海量监控数据长期堆积 MySQL 会性能下降,需定期分表、清理历史数据;
  • 原生界面可视化美观度不如 Prometheus+Grafana;
  • 云原生容器监控原生适配较弱,容器场景一般搭配 Prometheus。

部署服务器

server1配置
安装ZABBIX

安装官网https://www.zabbix.com/cn/download?zabbix=6.0&os_distribution=rocky_linux&os_version=9&components=server_frontend_agent&db=mysql&ws=apache

在线下载并安装 Zabbix‑6.0 的 yum 源配置包

# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm
安装Zabbix server,Web前端,agent
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
创建初始数据库
# yum install -y mysql.server 
# yum install -y zabbix-get

登录mysql并创建数据库

# mysql -uroot -p

password(可直接回车跳过)
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

log_bin_trust_function_creators = 0(默认值)

严格校验:创建函数必须持有 SUPER 权限,防止不安全函数写入 binlog 造成主从数据不一致。

log_bin_trust_function_creators = 1

放弃权限校验:信任所有普通用户创建的函数,不会再强制要求 SUPER 权限,

MySQL 会默认开发者保证函数具备确定性(入参一致则返回结果固定),可以正常记录 binlog,不会拦截建函数语句。

导入初始架构和数据
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
#输入密码,这里为"password"

完整执行流程

  1. zcat 读取压缩包内 server.sql,解压输出全部 SQL 语句;
  2. 通过管道交给 mysql 客户端;
  3. 使用 zabbix 用户连接 MySQL,连接字符集锁定 utf8mb4;
  4. 在 zabbix 数据库中逐条执行 SQL:创建数据表、主键、索引、初始化基础数据;
  5. 执行完毕后数据库就具备 Zabbix 运行所需完整表结构。

导入数据库架构之后,关闭 log_bin_trust_function_creators 参数。

# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
配置数据库
# vim /etc/zabbix/zabbix_server.conf
...
DBPassword=password
...
启动进程
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

打开Zabbix的网址UI页面http://192.168.***/zabbix

前端

zabbix1

然后点击下一步,填写信息即可,一直到提示前端安装成功。此时会自动跳转到登录前端页面,登陆即可。管理员用户和密码:Admin/zabbix

前端页面汉化,将文件下载并拖入虚拟机中

image-20260805152436077

拷贝字体文件
cp simkai.ttf /usr/share/zabbix/assets/fonts
cd /usr/share/zabbix/assets/fonts
重做软连接
rm -f graphfont.ttf
ln -s simkai.ttf graphfont.ttf
server2配置
设置yum源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpm
安装zabbix-agent
yum install -y zabbix-agent
修改配置文件
vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.234.161				#zabbix server1的ip

ServerActive=192.168.234.161

Hostname=server2				#agent自己的主机名

image-20260805152702897

启动服务

systemctl enable --now zabbix-agent

查看监听端口

netstat -antlp|grep :10050

image-20260805151720196

server3——centos系统
安装yum源
# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpm
# yum clean all
安装前端zabbix-agent
 yum install zabbix-agent
启动服务
# systemctl restart zabbix-agent
# systemctl enable zabbix-agent

web前端操作

添加主机

登陆以后选择配置—>主机,右上角的创建主机即可进行添加

image-20260805155806781

此时可在server1查看相关信息

zabbix_get -s 192.168.234.162 -p 10050 -k 'agent.ping'
zabbix_get -s 192.168.234.162 -p 10050 -k 'system.hostname'

image-20260805171108201

image-20260805154912422

添加监控项

配置——主机

按需求配置监控项

image-20260805170404969

image-20260806093416709

添加图形

配置——主机——图形——创建图形

按需创建

image-20260806115119690

查看server2的监控数据

image-20260805174806519

添加触发项

image-20260806093518532

添加触发的警告条件和恢复的结果即可

image-20260806092924849

触发的问题解决后会显示已解决

image-20260806094150869

添加通知媒介

管理——媒介——email

image-20260806100921913

image-20260806101215418

按需输入邮箱密码,密码为所用邮箱授权码

image-20260806101100130

配置完成后进行测试,收到测试邮箱

image-20260806105227238

在用户一栏配置报警媒介,,类型选Email,这样监控的服务器发送警报会发送给邮箱

image-20260806102331089

然后在触发动作里启用服务

image-20260806104054296

image-20260806104128279

制造负载过高

[root@server2 ~]# md5sum /dev/zero &

image-20260806103826842

负载解决

[root@server2 ~]# fg %1
md5sum /dev/zero
^C

image-20260806105256066

可以看到动作里两封信息均送达

image-20260806104013045

添加用户

image-20260806105439286

填入对应信息即可

image-20260806105734343

权限可以在用户所在的用户群组进行更改配置,智能admin管理用户才可以修改

image-20260806110628377

添加模板

配置——模板——创建模板

image-20260806112512361

填入新建模板信息,创建后发现模板并无信息数据

image-20260806112841299

可进行复制

image-20260806113053155

选择要复制到的模板

屏幕截图 2026-08-06 113130

此时发现模板已有内容

image-20260806113240810

自动发现

删除server2

开启自动发现动作

image-20260806113445341

开始自动发现服务

image-20260806113631142

在监测——自动发现里观察

image-20260806113715042

此时serevr2重新加入

image-20260806113759608

自动发现注册

再次删除server2,停用自动发现服务,创建自动注册动作

image-20260806113928627

根据需求修改条件标签

image-20260806114141581

按需求增加操作

image-20260806114230565

如果要用主机元数据进行添加需要修改主机配置文件

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
... 
 HostMetadataItem=system.uname
...

[root@server2 ~]# systemctl restart zabbix-agent.service

image-20260806114735295

此时发现server2已经重新连接

image-20260806114650316

链接nginx

[root@server2 ~]# yum install -y nginx
[root@server2 ~]# vim /etc/nginx/nginx.conf
...
     location /basic_status {
                stub_status     on;
                access_log      off;
        }
...
[root@server2 ~]# systemctl enable --now nginx

image-20260806142839451

此时浏览server2的网页

image-20260806143113314

在web端更改server2的链接模板

image-20260806142630582

mysql服务监控

[root@server2 ~]# yum install -y mysql-server.x86_64
[root@server2 ~]# systemctl enable --now mysqld
[root@server2 ~]# cd /usr/share/doc/zabbix-agent/
[root@server2 zabbix-agent]# cp userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@server2 zabbix-agent]# systemctl restart zabbix-agent
[root@server2 zabbix-agent]# mysql
...
mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
mysql>  quit;
[root@server2 zabbix-agent]# mkdir /var/lib/zabbix
[root@server2 zabbix-agent]# cd /var/lib/zabbix
[root@server2 zabbix]# vim my.cnf
... 
   [client]
   protocol=tc
   user='zbx_monitor'
   password='password'
...
[root@server2 zabbix]# systemctl restart mysqld.service

web端添加mysql模板

image-20260806145033298

percona数据库模板

安装软件

rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

拷贝模板

cd /var/lib/zabbix/percona/templates

cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

重启服务

systemctl  restart zabbix-agent

修改配置

cd /var/lib/zabbix/percona/scripts

vim ss_get_mysql_stats.php

$mysql_user = 'root';					#数据库管理员用户密码

$mysql_pass = 'westos';

创建软连接

ln -s /opt/rh/rh-php72/root/usr/bin/php /usr/bin/

测试

su -s /bin/sh -c "/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg" zabbix

image-20260806153708885

导入模板

image-20260806153738505

主机关联模板

屏幕截图 2026-08-06 152939

tomcat服务

定位

Tomcat = 轻量级开源 Web 应用服务器(Servlet 容器)

  1. 归属:Apache 旗下开源软件,用 Java 语言开发;

  2. 核心身份:专门用来跑 Java Web 项目(War 包),不能直接跑 PHP、Python、Go 这类程序;

  3. 区分两个概念:

    • Web 服务器(Nginx/Apache):只处理静态资源(html、图片、css)、反向代理、负载均衡;

    • Tomcat(Servlet 容器)

      :解析 Java 动态代码(Servlet、JSP、SpringBoot Web),执行业务逻辑。

      日常架构大多:

      Nginx(前端分发) → Tomcat(后端Java业务)
      

核心核心作用

  1. 承载 Java Web 规范

    实现了 Java EE 里的 Servlet、JSP、Filter、Listener 核心规范,浏览器发来 HTTP 请求,Tomcat 接收请求,调用你的 Java 代码处理逻辑,再把结果返回浏览器。

  2. 管理 Web 应用生命周期

    部署 war 包放进

    webapps
    

    目录,Tomcat 自动解压、加载、启动项目;服务启停、热加载、上下文销毁全部由 Tomcat 托管。

  3. 内置简易 HTTP 服务

    本身自带基础 HTTP 监听(默认 8080 端口),不搭配 Nginx 也可以直接对外提供访问。

关键核心组件(层级结构)

组件 作用
Server 整个 Tomcat 服务实例,一个进程就是一个 Server,全局总控制器
Service 一套监听端口 + 处理引擎的组合,默认只有 1 个 Service(Catalina)
Connector连接器 监听网络端口(默认 8080),接收浏览器 TCP 请求,解析 HTTP 协议,把请求转发给 Engine;支持 HTTP、AJP 协议(AJP 一般用于和 Apache 对接)
Engine引擎 Service 内部的总处理引擎,接收 Connector 的请求,分发到对应的虚拟主机 Host
Host 虚拟主机 绑定域名 / IP,一台 Tomcat 可以配置多个 Host,同时部署多个不同域名的网站
Context 上下文 单个具体的 Java Web 项目,一个 war 包对应一个 Context,控制单个项目的启动、权限、资源路径
服务端

安装jmx

yum install zabbix-java-gateway

systemctl enable --now zabbix-java-gateway

查看端口

netstat -antlp|grep :10052

image-20260806163522741

配置zabbix server

vim /etc/zabbix/zabbix_server.conf
...
JavaGateway=192.168.0.88			#jmx服务所在主机地址
JavaGatewayPort=10052
StartJavaPollers=5
...

image-20260806163814174

重启服务

systemctl restart zabbix-server
agent

​ ——centos server3为例

yum install java-1.8.0-openjdk

tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/

cd /usr/local/

ln -s apache-tomcat-8.5.24/ tomcat

cd tomcat/

修改配置

修改配置
vim bin/catalina.sh
...
CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false'

image-20260806161955326

注意:

tomcat9.0配置 需要添加换行符

CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888 \

-Dcom.sun.management.jmxremote.rmi.port=8889 \

-Dcom.sun.management.jmxremote.ssl=false \

-Dcom.sun.management.jmxremote.authenticate=false'

添加主机名解析

vim /etc/hosts
...
192.168.234.163   server3		#修改为主机agent的主机ip

启动服务

/usr/local/tomcat/bin/shutdown.sh			#关闭服务

/usr/local/tomcat/bin/startup.sh			#启动服务

查看端口

netstat -antlp|grep :8888

添加jmx接口

image-20260806162857793

添加jmx模板

image-20260806163932049

监测server3主机发现jmx启动

image-20260806163356277

集成外部告警

前提:注册睿象云账号获取appkey

安装探针

[root@server1 ~]# cd /usr/lib/zabbix/alertscripts/ #路径不一定相同
[root@server1 alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.3.tar.gz

解压缩

[root@server1 alertscripts]# tar zxf ca_zabbix_release-4.0.3.tar.gz
[root@server1 alertscripts]# cd cloudalert/bin

输入zabbix访问url,以及管理员用户帐号以及密码Admin/zabbix

./install.sh 80521b7c-eb16-46d8-a0fd-6a621f4938e4		#需要替换为自己创建的appkey

image-20260806173015332

成功

image-20260806173344914

此时zabbix的url里触发器动作以及媒介等都会增加相关内容

image-20260806173749407

此时停掉server2的agent服务,网站收到告警

image-20260806175123054

绑定的微信公众号也收到给告警

0896ce6368dd89795295d428d8d88216

Zabbix api

获取token
[root@server1 ~]# vim zabbix-api.sh
...
curl -s -X POST -H 'Content-Type:application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}' http://192.168.234.161/zabbix/api_jsonrpc.php | python -m json.tool
...
[root@server1 ~]# chmod +x zabbix-api.sh
[root@server1 ~]# ./zabbix-api.sh

image-20260807113611406

获取主机列表
[root@server1 ~]# vim zabbix-api.sh
... 
 curl -s -X POST -H 'Content-Type:application/json' -d '
{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "output": [
                   "hostid",
                   "host"
               ],
               "selectInterfaces": [
                   "interfaceid",
                   "ip"
               ]
           },
           "id": 2,
           "auth": "55ae3f5421c87867cb6ceb375d075c64"			#填写上面获取的token
       }' http://192.168.234.161/zabbix/api_jsonrpc.php | python -m json.tool
...

image-20260807113957874

[root@server1 ~]# ./zabbix-api.sh

image-20260807114134929

删除主机
[root@server1 ~]# vim zabbix-api.sh
...
 curl -s -X POST -H 'Content-Type:application/json' -d '
{
           "jsonrpc": "2.0",
           "method": "host.delete",
           "params": [
               "10444"		#填写上面指令获取的主机ID
           ],
           "auth": "55ae3f5421c87867cb6ceb375d075c64",
           "id": 1
       }' http://192.168.234.161/zabbix/api_jsonrpc.php | python -m json.tool
...
添加主机
[root@server1 ~]# vim zabbix-api.sh
...
curl -s -X POST -H 'Content-Type:application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server3",			#主机名称,与agent设置一致
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "192.168.234.163",		#agent主机IP
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"		#主机组ID
            }
        ],
        "tags": [
            {
                "tag": "Host name",
                "value": "Linux server"
            }
        ],
        "templates": [
            {
                "templateid": "10001"	#模板ID
            }
        ]
    },
    "id": 1,
    "auth": "55ae3f5421c87867cb6ceb375d075c64"
}' http://192.168.234.161/zabbix/api_jsonrpc.php | python -m json.tool
...
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐