目录
[四、Zabbix 系统概述](#四、Zabbix 系统概述)
[3、部署 Zabbix Server:](#3、部署 Zabbix Server:)
[4、Zabbix 页面配置:](#4、Zabbix 页面配置:)
[5、部署 Proxy:](#5、部署 Proxy:)
[6、部署 Agent:](#6、部署 Agent:)
一、监控系统的功能概述
监控,从中文的字义来看,有两个内容,一是检测,二是控制。重点在第一个字眼,即检测、预防的意思。
监控,对应的英文单词是 Monitoring。在计算机领域,可以将其分为 5 种监控类型:应用性能监控、业务交易监控、网络性能监控、操作系统监控(文档中提及 5 种类型,但仅列出 4 种)。
按照逻辑层次划分,监控行为可分为 5 个层次:
- 基础设施监控:由运维人员负责,涉及网络、交换机、路由器等低层设备,需监控网络流量、丢包情况、错包情况、连接数等核心指标。
- 系统层监控:涵盖物理机、虚拟机、操作系统等,主要监控 CPU 使用率、内存占用率、磁盘 IO 和网络带宽等指标。
- 应用层监控:与服务紧密相关,包括 URL 访问性能、调用数、延迟、服务错误率、慢 SQL、缓存命中率、服务响应时间等。
- 业务监控:针对业务交易相关情况,如交易网站的用户登录、注册、下单、支付等,可为运营和高管提供数据支持,辅助战略决策。
- 端用户体验监控:监控用户端使用性能、返回码、地区分布、运营商连接情况、客户端操作系统及浏览器版本等,及时发现影响用户体验的问题。
二、监控系统的实现原理
- 模块组成:主要分为数据采集部分和数据存储、分析告警、展示部分。
- 采集协议:分为专用客户端采集(私有协议)和公用协议采集(如 SNMP、IPMI、SSH、Telnet)。
- 监控模式 :
- 被动模式:服务器端到客户端采集数据,对监控端服务器开销较大,适合小规模监控环境。
- 主动模式:客户端主动上报数据到服务器,对监控端服务器开销较小,适合大规模监控环境。
- 代理架构:对于大规模监控环境,除主动模式外,可采用代理架构(如 C/S/P 架构)分摊服务器性能开销,支持跨地域、跨网络分布式监控。
三、监控系统的开源产品
产品名称 | 特点及适用场景 |
---|---|
Zabbix | 企业级运维监控平台,可监控服务器、网络设备、Web 应用等,适配多种操作系统,开源免费 |
Prometheus+Grafana | 开源监控和警报工具包,主要用于基础设施监控,可监控服务器、数据库、Web 服务等 |
Cacti | 网络流量监测图形分析工具,连接 RRDToo1 生成网络数据图表,具有强大的数据和用户管理功能 |
Nagios | 监控系统运行状态和网络信息,可监控本地或远程主机及服务,提供异常通知,支持多种组件监控 |
Checkmk | 高可扩展监控工具,可整合监控服务器、网络等,有基础版(开源免费)和企业版,部署快、自动化程度高 |
OpenNMS | 基于 Java/XML 的分布式网络和系统监控平台,支持多种系统,可通过多种协议收集系统指标 |
Netdata | Linux 性能实时监测工具,监控指标多且广、收集速度快,支持多种运行环境,可即时诊断异常 |
LibreNMS | 开源网络监控系统,易于安装配置,功能丰富,支持多种供应商、设备和协议,可自动发现网络 |
四、Zabbix 系统概述
- 初识 Zabbix :
- 企业级分布式开源监控系统,基于 Web 界面,可监控服务器、网络设备等的性能和可用性。
- 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发,基于 GPL 通用公共许可证第 2 版,开源免费。
- 支持轮询和 trapping,提供 Web 前端访问,适配不同规模组织的 IT 基础设施监控需求。
- Zabbix 的功能特性:包括数据收集(支持多种检测方式、自定义检测等)、灵活的阈值定义(触发器)、高级告警配置(自定义升级、宏变量等)、实时绘图、扩展图形化显示、历史数据存储、配置简单、模板使用、网络自动发现、快速 Web 接口、Zabbix API、权限系统、Agent 易扩展、二进制守护进程(高性能)、应对复杂环境(远程监控)等至。
- Zabbix 角色及架构 :
- Zabbix Server:服务端守护进程,接收 Agent、Proxy 提交的数据或主动获取数据。
- Zabbix Agent:客户端守护进程,收集客户端数据(如 CPU 负载、内存使用等)。
- Zabbix Proxy:代理守护进程,作为中转站,将收集的数据提交到 Server。
- Zabbix Web:Web 界面,用于管理配置和查看监控信息,可与 Server 同机或单独部署。
五、部署流程
1、资源清单:
操作系统 | 配置 | 主机名 | IP 地址 | 用途 |
---|---|---|---|---|
openEuler 24.03 | 2C4G | zabbix | 192.168.207.137 | Zabbix 服务端 |
openEuler 24.03 | 2C4G | proxy | 192.168.207.138 | Zabbix proxy |
openEuler 24.03 | 2C4G | server01 | 192.168.207.139 | 被监控节点 |
openEuler 24.03 | 2C4G | server02 | 192.168.207.140 | 被监控节点 |
2、基础环境配置:
cpp
#关闭防火墙:执行systemctl stop firewalld和systemctl disable firewalld。
[root@localhost~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld
```{insert\_element\_0\_}
#关闭 Selinux:执行setenforce 0。
[root@localhost ~]#setenforce0
```{insert\_element\_1\_}
#时间同步:设置时区为 Asia/Shanghai,执行chronyc sources -v同步时间。
[rootelocalhost ~]#timedatectl set-timezone Asia/Shanghai
[root@localhost~]#chronyc sources -v
```{insert\_element\_2\_}
#修改主机名:分别设置为 zabbix、proxy、server01、server02。
[root@localhost ~]#hostnamectl set-hostname zabbix
[root@localhost~]#hostnamectl set-hostname proxy
[root@localhost ~]#hostnamectl set-hostname server01
[root@localhost~]#hostnamectl set-hostname server02
```{insert\_element\_3\_}
3、部署 Zabbix Server:
- 添加 Zabbix 源并清理缓存。
cpp
[root@zabbix~]#rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@zabbix ~]#dnf clean all
```{insert\_element\_4\_}
- 安装相关软件包(如 zabbix-server-mysql、mysql-server 等)。
cpp
[root@zabbix ~]#dnf-y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
[root@zabbix ~]#dnf-y install mysql-server-8.0.41 mysql
[root@zabbix ~]#dnf-y install https://w.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
```{insert\_element\_5\_}
- 配置数据库:初始化数据库,创建用户并授权,设置相关参数。
cpp
[root@zabbix ~]#systemctl enable mysqld--now
[root@zabbix ~]# mysql -uroot
(进入 MySQL 后执行的 SQL 语句):
ALTER USER 'root'@'localhost' IDENTIFED BY '123456';
FLUSH PRIVILEGES;
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.*to zabbix@localhost;
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
create user zabbix@'%'identified by 'zabbix';
grant all privileges on zabbix_proxy.*to zabbix@localhost;
grant all privileges on zabbix_proxy.*to zabbix@'%';
set global log_bin_trust_function_creators=1;
quit;
```{insert\_element\_6\_}
- 导入数据:通过 zcat 命令导入 SQL 数据。
cpp
[root@zabbix ~]#zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz|mysql--default-character-set=utf8mb4 -uzabbix -p zabbix
```{insert\_element\_7\_}
- 配置 Zabbix Server 和页面相关文件,启动服务并设置开机自启。
cpp
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php- fpm
```{insert\_element\_8\_}
4、Zabbix 页面配置:
通过指定 URL 登录,设置语言、检查环境、配置数据库连接等,默认账号 Admin,密码 zabbix。
5、部署 Proxy:
添加源、安装软件包、导入数据、配置 Proxy 文件、启动服务,在 Web 页面添加 Proxy至。
cpp
#添加 Zabbix 源
[root@proxy~]#rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@zabbix ~]#dnf clean all
#安装软件包
[root@proxy ~]#dnf-y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
[root@proxy~]#dnf-y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
#启动服务
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
6、部署 Agent:
添加源、安装软件包、配置 Agent 文件(指定 Server 等信息)、启动服务,在 Web 页面添加主机(可直接添加或通过 Proxy 上报)至。
cpp
#添加 Zabbix 源
[root@server01~]#rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@server01~]#dnf clean all
#安装软件包
[root@server01 ~]#dnf-y install zabbix-agent
#启动服务
systemctl start zabbix-agent
systemctl enable zabbix-agent
扩展:解决图像字体显示问题
- 查找 zabbix 定义字体的 php 文件(defines.inc.php)。
- 查看字体文件相关配置(如字体路径和字体名称)。
- 查找 zabbix 字体文件位置(graphfont.ttf)。
- 上传替换字体文件,创建软链接。
- 刷新页面观察效果。
cpp
#查找 zabbix 定义字体的 php 文件
[root@zabbix ~]#find /-name defines.inc.php
#查看 zabbix 字体文件中用的字体
[root@zabbix~]#grep"ZBX_-FONTPATH"/usr/share/zabbix/include/defines.inc.php
[root@zabbix~]#grep "ZBX_GRAPH_FONTAME"/usr/share/zabbix/include/defines.inc.php
#查找 zabbix 的字体文件位置
[root@zabbix ~]#find /-name graphfont.ttf
#替换字体相关操作
[root@zabbix ~]#cd /usr/share/zabbix/assets/fonts
[root@zabbix fonts]#ln -snf msyh1.ttc graphfont.ttf