当前位置: 首页 > news >正文

监控系统理论与实践:从认知到Zabbix入门

监控系统理论与实践:从认知到Zabbix入门

一、 全面认识监控系统

1. 监控的核心目的

  • 实时观测与可视化:将抽象的数值数据转化为直观的图表,便于人类快速理解系统状态。
  • 主动告警与故障定位:在故障发生前或发生时立即通知运维人员,并通过监控数据快速定位问题根源,缩短平均修复时间(MTTR)。
  • 性能分析与容量规划:通过分析历史趋势数据,为系统优化、架构升级和未来资源采购(如是否需要增加服务器、带宽)提供科学依据。
  • 数据驱动决策:用数据代替感觉,为技术决策提供支持。

2. 监控的核心目标
在Linux系统中,监控系统地体现在以下四个层面:

  • 资源层监控:关注底层硬件和操作系统的健康度。

    • CPU:负载、使用率、用户/系统/IO等待时间、上下文切换次数。
    • 内存:使用量、剩余量、Swap使用率、页交换活动。
    • 磁盘:空间使用率、读写IOPS、吞吐量、读写延迟。
    • 网络:带宽使用率、数据包数量、错包/丢包率、TCP连接状态。
  • 应用与服务层监控:关注跑在系统上的业务程序是否正常。

    • 服务状态:进程是否存在、监听端口是否活跃。
    • 应用性能:响应时间、并发连接数、请求成功率、错误日志。
    • 关键业务指标:如电商网站的订单创建速率、支付成功率等。
  • 客户端监控:从终端用户的角度评估体验。

    • Web前端性能:页面加载时间、白屏时间、AJAX请求成功率。
    • 移动端APP性能:崩溃率、卡顿率、网络请求耗时。
  • 日志监控:作为所有监控的补充,用于深度排查和审计。

    • 集中收集:将分散的日志统一汇总。
    • 关键信息提取:实时扫描日志中的 ERRORException 等关键字。
    • 链路追踪:在微服务架构中,追踪一个请求经过的所有服务。

3. 主流的开源监控平台介绍

监控平台特点与定位备注
MRTG, Cacti流量与性能绘图工具。基于SNMP和RRDtool,专注于网络设备流量和服务器性能指标的可视化监控领域的元老,配置相对复杂,告警功能较弱。
Nagios, Centreon服务状态监控器。其核心是检查服务是否"活着",告警功能极其强大和灵活。Nagios是告警时代的标杆,Centreon是其企业级分布式封装。
Zabbix全能型企业级监控方案。集数据采集、自动发现、绘图、告警、权限管理于一身,开箱即用用户基数巨大,社区活跃,文档完善,是许多公司的首选。
Ganglia分布式集群监控工具。采用分层设计,专门为监控大型集群(如Hadoop集群)而设计,资源消耗极低。适合海量节点的基础指标收集,但告警和灵活性不如Zabbix。
Prometheus云原生时代的监控系统。基于拉取模式和多维度数据模型,与Kubernetes等容器编排平台无缝集成。当前增长最快的监控系统,是云原生生态的事实标准。常与Grafana搭配绘图。
Open-Falcon企业级分布式监控。由小米开源,在设计上解决了大规模监控的痛点,性能和高可用性很好。在国内有一定用户群体,但国际社区影响力相对较小。

二、Zabbix 监控系统详解

2.1 Zabbix 简介

Zabbix是一个企业级的开源监控解决方案,能够实时监控各种网络设备、服务器和应用程序的状态。它是一个24小时不休息的IT管家,时刻关注系统健康状况,一旦发现问题就会立即通知管理员。

2.2 Zabbix 核心特性

数据采集

  • 主动采集:Zabbix Agent定期收集设备的各项指标数据
  • 监控指标涵盖硬件资源、网络状态、应用性能和业务数据

智能告警

  • 支持多条件触发告警
  • 提供多通道通知:邮件、短信、微信、钉钉等
  • 支持告警升级机制

数据存储

  • 使用时序数据库高效存储海量监控数据
  • 支持灵活的数据保留策略
  • 提供快速的数据查询和分析能力

数据可视化

  • 实时仪表盘和自定义监控视图
  • 历史数据趋势分析图表
  • 网络拓扑可视化展示
  • 定期性能报告生成

2.3 Zabbix 系统架构

核心组件

Zabbix Server

  • 数据处理中心:收集、分析、存储监控数据
  • 告警引擎:判断是否触发告警条件
  • 任务调度:管理监控任务的执行时序
  • 通知分发:向指定人员发送告警信息

Zabbix Database

  • 存储配置信息:监控项、触发器、用户权限等
  • 存储监控数据:性能指标数据
  • 维护历史记录:告警事件、用户操作日志

Zabbix Web Interface

  • 提供跨平台Web访问界面
  • 图形化配置管理
  • 响应式设计,支持多设备访问
  • 基于角色的权限控制系统

Zabbix Proxy(可选组件)

  • 分布式监控代理
  • 负载分担和性能扩展
  • 数据缓存和网络隔离

Zabbix Agent

  • 部署在被监控设备上的数据采集器
  • 支持被动模式和主动模式
  • 支持自定义监控脚本

2.4 Zabbix 核心概念

主机与主机群组

  • 主机:被监控的实体,通常用IP或主机名标识
  • 主机群组:逻辑分组,便于权限管理和批量操作

监控项

  • Zabbix中最基本的概念,代表一个具体的监控指标
  • 关键属性:键值(Key)、数据类型、更新间隔、历史数据保留时间
  • 示例:system.cpu.load[avg1]、vfs.fs.size[/,pused]

触发器

  • 基于监控项数据定义异常规则
  • 逻辑表达式结果为"真"时状态变为PROBLEM,为"假"时变为OK
  • 示例:{Web-Server:system.cpu.load[avg1].last()}>5

图形与模板

  • 图形:将监控项数据可视化展示
  • 模板:监控项、触发器、图形等的预定义集合,提高部署效率

自动发现

  • 网络发现:自动发现网络中的设备
  • 自动注册:新Agent主动向Server注册
  • 低级别发现:自动发现主机上的实体并创建监控项

三、 Zabbix 安装与配置实践

系统环境:RHEL 9

1. 系统基础配置
# 安装必要工具包:文件传输、压缩、网络工具、时间同步服务
[root@server ~]# yum -y install lrzsz tar net-tools chrony# 启动时间同步服务并设置开机自启(确保监控数据时间准确)
[root@server ~]# systemctl restart chronyd
[root@server ~]# systemctl enable chronyd
2. 安装Zabbix软件源
#提前准备好官方的yum源
[root@server ~]# ls
zabbix-release-7.0-2.el9.noarch.rpm# 安装Zabbix官方提供的yum源
[root@server ~]# rpm -Uvh zabbix-release-7.0-2.el9.noarch.rpm # 验证源是否安装成功
[root@server ~]# ls /etc/yum.repos.d/
redhat.repo  server.repo  zabbix.repo

配置国内镜像源加速下载:

# 将Zabbix官方源替换为阿里云镜像,提高下载速度
[root@zabbix-server ~]# cat /etc/yum.repos.d/zabbix.repo 
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/7.0/rocky/9/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-B5333005[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/9/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-08EFA7DD
gpgcheck=1[zabbix-sources]
name=Zabbix Official Repository source code - $basearch
baseurl=https://repo.zabbix.com/zabbix/7.0/rocky/9/SRPMS
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-B5333005
gpgcheck=1
3. 安装Zabbix核心组件
# 安装Zabbix服务器、Web界面、Nginx配置、数据库脚本等全套组件
[root@server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent -y
4. 数据库安装与配置
# 安装MariaDB数据库
[root@server ~]# yum install -y mariadb mariadb-server# 启动数据库服务
[root@server ~]# systemctl restart mariadb
[root@server ~]# systemctl enable mariadb

数据库安全初始化:

# 运行安全配置脚本,设置root密码、移除匿名用户、测试数据库等
[root@server ~]# mysql_secure_installation# 1. 密码策略说明
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!# 2. 输入当前root密码(新安装直接回车)
Enter current password for root (enter for none): 
# 直接回车,因为新安装还没有设置密码# 3. 启用Unix socket认证(增强安全性)
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..... Success!# 4. 设置root用户新密码
Change the root password? [Y/n] y
New password:   [输入密码:3edc4rfv]
Re-enter new password:    [确认密码:3edc4rfv]
Password updated successfully!
Reloading privilege tables..... Success!# 5. 移除匿名用户(重要安全步骤)
Remove anonymous users? [Y/n] y... Success!
# 移除默认安装时创建的匿名用户账户,防止未授权访问# 6. 禁止root用户远程登录
Disallow root login remotely? [Y/n] n... skipping.
# 此处选择n,允许root远程登录(根据实际需求选择)
# 生产环境建议选择y,禁止root远程登录,通过普通用户+sudo提权# 7. 移除测试数据库
Remove test database and access to it? [Y/n] y- Dropping test database...... Success!- Removing privileges on test database...... Success!
# 移除默认的test数据库,减少潜在的安全风险# 8. 重新加载权限表使所有更改生效
Reload privilege tables now? [Y/n] y... Success!# 9. 完成提示
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

创建Zabbix数据库和用户:

-- 连接到MySQL数据库
[root@server ~]# mysql -uroot -p3edc4rfv-- 创建专门用于Zabbix的数据库,使用utf8mb4字符集
MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;-- 创建zabbix用户并设置密码
MariaDB [(none)]> create user zabbix@localhost identified by '3edc4rfv';-- 授予zabbix用户对zabbix数据库的所有权限
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;-- 临时允许创建函数(导入数据库架构需要)
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;-- 刷新权限使设置生效
MariaDB [(none)]> flush privileges;

导入Zabbix数据库架构:

# 导入Zabbix预定义的数据库表结构、数据等
[root@server ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p3edc4rfv zabbix 

恢复数据库安全设置:

-- 导入完成后,恢复安全设置
MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
MariaDB [(none)]> flush privileges;
5. Zabbix服务器配置
# 编辑Zabbix服务器主配置文件
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf# 需要修改的关键配置项:
ListenPort=10051           # 监听端口
DBHost=localhost           # 数据库主机
DBName=zabbix             # 数据库名
DBUser=zabbix             # 数据库用户
DBPassword=3edc4rfv       # 数据库密码
DBSocket=/var/lib/mysql/mysql.sock  # MySQL socket文件路径
ListenIP=0.0.0.0          # 监听所有IP
6. Web服务配置
# 配置Nginx监听端口
[root@server ~]# vim /etc/nginx/conf.d/zabbix.conf
# 修改监听端口为8080(避免与系统其他服务冲突)
listen 8080;
server_name     example.com;
7. 启动所有服务
# 启动Zabbix相关服务
[root@server ~]# systemctl restart zabbix-server zabbix-agent.service nginx.service php-fpm.service # 设置服务开机自启
[root@server ~]# systemctl enable zabbix-server zabbix-agent.service nginx.service php-fpm.service  
8. 访问Zabbix Web界面

在浏览器中访问:http://服务器IP:8080

在这里插入图片描述

9. 系统语言配置(如果没有中文)
# 安装中文语言包
[root@server ~]# yum -y install langpacks-zh_CN.noarch# 安装基础语言支持
[root@server ~]# yum -y install glibc-common# 检查系统中可用的中文locale
[root@server ~]# locale -a | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
10. 完成Web安装向导

预检测检查页面:
在这里插入图片描述

数据库连接配置:
在这里插入图片描述

时区设置:
选择亚洲/上海时区
在这里插入图片描述

安装完成:
在这里插入图片描述

登录系统:
默认账号:Admin,默认密码:zabbix
在这里插入图片描述

Zabbix主仪表盘:
在这里插入图片描述


四、 监控远程Linux服务器

1. 在被监控服务器上安装Zabbix Agent
# 添加Zabbix软件源(这里以RHEL 7为例,根据实际系统版本调整)
[root@agent ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/7/x86_64/zabbix-release-latest-7.0.el7.noarch.rpm# 安装Zabbix Agent
[root@agent ~]# yum install zabbix-agent# 配置Agent
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf   # 关键配置项修改:
Server=192.168.100.40        # Zabbix服务器的IP,用于被动监控模式
ServerActive=192.168.100.40  # Zabbix服务器的IP,用于主动监控模式  
Hostname=zabbix-agent        # 本机在Zabbix中显示的主机名# 启动Agent服务
[root@agent ~]# systemctl restart zabbix-agent.service 
[root@agent ~]# systemctl enable zabbix-agent.service   
2. 在Zabbix Web界面添加主机

导航到主机页面:
在这里插入图片描述

创建新主机:
在这里插入图片描述

配置主机信息:

  • 主机名称zabbix-agent
  • 可见的主机名zabbix-agent
  • 群组:选择或创建主机群组(如"Linux Servers")
  • Agent接口:添加Agent的IP地址和端口(10050)

添加监控模板:
选择 Templates/Operating systemsLinux by Zabbix agent
在这里插入图片描述

完整主机配置:
在这里插入图片描述
监控状态验证:
等待几分钟后,可用性指示灯变为绿色表示监控成功
在这里插入图片描述


五、 解决中文乱码问题

字体替换步骤
# 1. 从Windows系统获取中文字体文件
# 路径:C:\Windows\Fonts\simkai.ttf (简体楷体常规)# 2. 上传字体文件到Zabbix服务器
# 使用rz命令或其他文件传输工具将simkai.ttf上传到服务器# 3. 替换Zabbix默认字体
[root@server ~]# cd /usr/share/zabbix/assets/fonts
[root@server fonts]# mv simkai.ttf graphfont.ttf # 4. 重启Web服务使更改生效
[root@server fonts]# systemctl restart nginx php-fpm

说明:此操作将Zabbix图表中的默认字体替换为中文字体,解决图表中中文显示为乱码或方框的问题。


六、Zabbix工作流程

6.1 完整监控流程
  1. 配置监控项:定义要监控的指标
  2. 数据采集:Agent按间隔收集数据
  3. 数据传输:发送到Server处理
  4. 阈值判断:触发器评估数据状态
  5. 告警触发:满足条件时生成告警
  6. 通知发送:通过配置的渠道通知用户
  7. 问题处理:用户响应并解决问题
  8. 状态恢复:问题解决后系统自动更新状态
6.2 数据流向
被监控设备 → Zabbix Agent → Zabbix Proxy(可选) → Zabbix Server → Database↓Web Interface → 用户

通过以上完整的安装和配置流程,我们已经成功搭建了一个功能完善的Zabbix监控系统,并实现了对远程Linux服务器的基本监控。这个系统为后续的监控项配置、告警设置和性能分析奠定了坚实的基础。

http://www.dtcms.com/a/486033.html

相关文章:

  • ROS 传感器模块的通用架构设计与跨中间件扩展实践
  • 措美网站建设游戏网站开发名字
  • openwrt 环境安装
  • iis 发布网站内部服务器错误东莞沙田门户网站建设
  • 订单 API 接口调试常见问题排查:3 类高频问题 + 落地解决方案
  • JavaWeb--使用JDBC操作数据库(一)
  • 【Web开发】待办事项列表
  • Linux IIO研究(二)
  • 浙江建设厅网站那三类人员爱给网官网免费素材
  • Spring Boot整合Apache Shiro权限认证框架(实战篇)
  • Rust 错误处理
  • 【在 Windows 上运行 Apache Hadoop 或 Spark/GeoTrellis 涉及 HDFS 】
  • Linux操作系统-命令行参数及环境变量
  • 系统架构设计师备考第40天——软件可靠性基础
  • RAG 问题处理系统架构解析:企业级智能问答QuestionsProcessor.py的工程实现
  • LlamaIndex多模态RAG开发实现详解
  • springboot实现微信小程序支付(服务商和普通商户模式)
  • 石景山网站建设好的公司有特色的企业网站
  • 个人建网站怎么赚钱网站一般用什么数据库
  • 【机器学习03】学习率与特征工程、多项式回归、逻辑回归
  • PyTorch解析使用张量与动态计算图实现深度学习模型的高效训练
  • 大二java学习笔记:二维数组
  • 缓存行Cache Line
  • 10-机器学习与大模型开发数学教程-第1章 1-2 O(n) 表示法与时间复杂度
  • toLua[六] Examples 05_LuaCoroutine分析
  • keil5使用STlink下载程序到stm32后不自动运行的解决办法
  • stm32大项目阶段20251015
  • 机器学习四范式(有监督、无监督、强化学习、半监督学习)
  • 源码分析 golang bigcache 高性能无 GC 开销的缓存设计实现
  • 网站开发的工资开发者应用