一 监控软件作用
1,生产环境常见框架
2,监控软件的必要性
作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。
利用一个优秀的监控软件,我们可以:
●通过一个友好的界面进行浏览整个网站所有的服务器状态
●可以在 Web 前端方便的查看监控数据
●可以回溯寻找事故发生时系统的问题和报警情况
3,常见监控软件
传统环境 用zabbix
网络和绘图· cacti
网络监控 nagios
ganglia 分布式监控系统
二 zabbix 简介
1,zabbix 是什么
zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案
2,zabbix 干什么
zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
3,zabbix 组件
zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。
(B/S 网页端和服务端 网页端显示服务端所有的监控数据 就是客户端采集数据 交给服务端 网页端再显示服务端的信息)
3.1 zabbix server
zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。
3.2 zabbix agent
zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。
4, zabbix 端口
agent 10050
server 10051
5, zabbix 特点
学习成本比较低 安装配置简单
支持多语言 包括中文
免费开源
自动发现服务器与网络设备
分布式监控以及web集群中的管理功能e
mail 功能通知 短信语音、微信 钉钉
6, zabbix监控主要功能
CPU 负载
业务监控
网络状态
内存使用 磁盘使用率
端口监视
插件开发自定义
日志监视
7, zabbix 运行机制
zabbix-agent 数据采集---》zabbix-server(数据分析/报警)---》数据库(数据存储)---》zabbix-web
(数据展示)
8, zabbix工作场景 (监控对象)
硬件监控(服务器、路由、交换机等)
系统监控(操作系统)
网络监控(网络设备的协议 TCP/IP ICMP HTTP等都监控)
Java监控(监控JDK JVM)
应用服务监控(Tomcat、Nginx、Mysql等)
数据库监控
URL监控(http://)
VMware监控平台(监控虚拟机运行状况)
9,监控原理
zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server 端,zabbix server 收到数据后,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像。当 zabbix 监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)。
10 监控模式
被动监控: server 向agent 发起连接
主动监控:agent 向 server 发起连接 (一般用这个 减少服务端压力)
(理解为 下属主动向领导交任务)
11 zabbix 具体组件
●zabbix server:zabbix 服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的数据最终都提交给 zabbix server;
●zabbix agent:客户端守护进程,负责收集客户端数据,例如:收集 CPU 负载、内存、硬盘使用情况等;
●zabbix proxy:zabbix 分布式代理守护进程,通常大于 500 台主机,需要进行分布式监控架构部署;
●zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令;
●zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查。
●zabbix_java_gateway: java 网关
12, zabbix 架构
12.1 server-client
也就是zabbix最简单的架构,监控机器和被监控机器之间不经过任何处理,直接由zabbix-server和zabbix-client之间进行数据交换。适用于网络比较简单,尽量在局域网内,设别比较少的监控环境实用。
12.2 server-proxy-client 架构
server-proxy-client 其中 proxy 和server,client之间沟通一个桥梁,proxy本身有前端,而且本身并不存放数据,只是将agent发来的数据暂时存放,而后在提交给server,这种架构经常是master-node-client,一般适用于跨机房,跨网络的中型网络监控架构
12.3 Master-Node-Client 架构
Master-Node-Client该架构是Zabbix最复杂的监控架构,适用于跨网络跨机房设备多的大型环境。每个Node同时接一个Sever端,Node下面可以接Proxy端,也可以直接连接Client,Node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向Master进行数据同步,Master故障损坏对Node其下架构的完整性无任何影响
三 实验模拟zabbix
1, 实验环境
99机器 为服务端 装
77机器 为客户端 装zabbix client zabbix agent
2, 部署 zabbix 服务端
2.1 获取 zabbix 的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
2.2 更换 zabbix.repo 为阿里源
2.3 重新生成元数据
2.4 装 zabbix-server-mysql zabbix-agent
zabbix-server-mysql
是一个软件包,它是监控解决方案 Zabbix 的核心组件之一,专为与 MySQL 数据库管理系统配合使用而设计。这个包包含了运行 Zabbix Server 所需的程序和配置文件,当与 MySQL 数据库一起部署时,Zabbix Server 将使用 MySQL 作为其后端数据存储来保存监控数据、配置信息和其他元数据。
2.5 安装SCL(Software Collections)
便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下
2.6 修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
vim zabbix.repo
#开启安装源
2.7 安装zabbix-web-mysql-scl zabbix-apache-conf-scl
zabbix-web-mysql-scl: 这是待安装的软件包名之一。它代表 Zabbix Web 前端组件,专为与 MySQL 数据库集成而设计。
-scl
后缀可能表示该软件包使用了 Software Collections(SCL),这是一个允许在同一系统上并行安装不同版本的语言运行时环境和应用程序的技术。这意味着zabbix-web-mysql-scl
可能包含一个独立的、与系统默认环境隔离的 Zabbix Web 服务,它可能使用了特定版本的 PHP 或其他依赖,以确保与 Zabbix 的兼容性和稳定性。zabbix-apache-conf-scl: 这是另一个待安装的软件包名。它包含了为 Apache HTTP 服务器配置 Zabbix Web 界面所需的配置文件。同样带有
-scl
后缀,表明这些配置文件与使用 SCL 的 Zabbix Web 组件配套,以便正确设置 Apache 以服务 Zabbix Web 应用程序。
2.8 安装 zabbix 所需的数据库
mariadb-server: 这是待安装的软件包之一,代表 MariaDB 数据库服务器。安装此包会提供运行 MariaDB 服务器所需的所有核心组件和服务程序,包括数据库引擎、后台进程(如守护进程 mysqld)、系统启动脚本以及必要的配置文件。安装后,系统将具备启动、停止、重启 MariaDB 服务器的能力,并能够为其他应用程序提供数据库服务。
mariadb: 这是另一个待安装的软件包,包含了 MariaDB 的客户端工具和库文件。安装此包后,系统将拥有与 MariaDB 服务器交互的各种命令行工具,如
mysql
(用于连接数据库并执行 SQL 查询)、mysqldump
(用于备份数据库)、mysqladmin
(用于执行管理任务)等。此外,还会安装开发库和头文件,供编译依赖 MariaDB 的第三方应用程序使用。
设置 mariadb 开机自启 并启动
2.9 初始化数据库 并设置密码
2.10 添加数据库用户,以及 zabbix 所需的数据库信息
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
这条 SQL 语句用于创建一个新的数据库,名为
zabbix
。同时指定了该数据库的字符集为utf8
,排序规则(collation)为utf8_bin
。
GRANT all ON zabbix. TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';*
这条 SQL 语句用于向特定用户授予对
zabbix
数据库的全部权限,并指定了该用户的登录凭据。注意此处登录的密码为 rabbix! 这个很重要 服务端配置文件DBPassword=
就要写这个密码 rabbix
查看刚刚创建的库
2.11 导入数据库信息
查询 sql 文件的位置
导入数据库信息
命令解析如下:
zcat
:这是一个用于解压缩并查看gzip格式压缩文件内容的命令行工具。在这里,它被用来解压缩位于/usr/share/doc/zabbix-server-mysql-5.0.24/
目录下的create.sql.gz
文件。这个文件通常包含了用于创建Zabbix所需数据库表、视图、存储过程等对象的SQL脚本。|
(管道符号):将前一个命令(zcat
解压缩产生的输出)作为输入传递给后续命令。mysql
:这是MySQL数据库的命令行客户端程序,用于执行SQL语句或者与MySQL服务器进行交互。
-u root
:指定以MySQL用户root
身份登录。-p abc123
:在命令行提示时输入密码,这里直接在命令行中提供了密码abc123
(在实际操作中,出于安全考虑,通常不建议明文在命令行中输入密码,而是等待交互式提示输入)。zabbix
:指定了要连接的目标数据库名称为zabbix
。如果该数据库尚不存在,命令执行过程中会尝试创建它(前提是root
用户具有相应的权限)。综上所述,该命令行操作的整体含义是:使用
zcat
解压缩Zabbix Server的MySQL数据库创建脚本,然后将解压得到的SQL语句通过管道传递给mysql
客户端,由后者执行这些语句来创建名为zabbix
的数据库,并在其内部构建完整的Zabbix数据结构,包括表、索引、视图、函数、触发器等,以准备承载Zabbix监控系统的数据。
2.12 修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
2.13 修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
2.14 启动 zabbix 相关服务
2.15 浏览器访问:http://192.168.217.99/zabbix
next
next
next
安装完成后,默认的登录账号和密码为:Admin/zabbix
3, 完善zabbix 服务端
3.1 改中文
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。
3.2 解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
4, 部署 zabbix 客户端(77机器)
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。
4.1 为保证数据一致性,两边做时间同步
服务端和客户端都配置时间同步
- 修改了客户端的系统时区设置,使其与假设的服务器端时区(亚洲/上海)保持一致,确保两地系统不仅在绝对时间上同步,还在显示和处理时间时采用相同的时区规则。
4.2 设置 zabbix 的下载源,安装 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
下载zabbix 的下载源
将网络元指向阿里元
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
安装agent2 客户端
4.3 修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
Server=192.168.217.99 #80行,指定 zabbix 服务端的 IP 地址 ServerActive=192.168.217.99 #120行,指定 zabbix 服务端的 IP 地址 Hostname=zbx-agent01 #131行,指定当前 zabbix 客户端的主机名
4.4 启动 zabbix-agent2
查看端口:客户端端口10050
5,在服务端(99机器)验证 zabbix-agent2 的连通性
安装 zabbix 主动获取数据的命令
此处两条命令 检测服务端和客户端的联通性。 -k 指定内容
(服务端去拿客户端的数据,因为客户端搜集数据)
6,在 Web 页面中添加 agent 主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01-192.168.217.77
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.217.77
再点击上方菜单栏【模板】
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
点击 【添加】
创建主机
定义模版:
7, 查看客户端机器状态
7.1,点击监测 主机 找到 zabbix-agent
7.2 查看客户端的 键值对
点击 配置 主机 监控项
四 常见故障分析
1,故障现象
笔者在搭建zabbix 时遇到了一个故障。故障现象:
1,zabbix 服务端没有 可用性显示 (正常应该 zbx 显示为绿色)
2, 服务端 systemctl status zabbix-server 显示正在运行,但是 ss -natp | grep 10051 没有端口
2,排错思路
笔者先去 验证客户端与服务端是否连接成功,去到服务端get 客户端数据
说明客户端与 服务端连接没有问题,应该就是服务端与网页端连接的问题,
查看 服务端的报错日志:/var/log/zabbix/zabbix_server.log
68782:20240416:193320.572 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: YES) 68782:20240416:193320.572 database is down: reconnecting in 10 seconds
查看报错日志,可以发现是 这段错误信息表明Zabbix服务器在尝试连接到名为zabbix
的数据库时遇到了问题
再去查看服务端的配置文件,发现 /etc/zabbix/zabbix_server.conf 配置文件的 DBPassword=
配置错误。
- DBPassword:这一配置项对应的是Zabbix Server用来连接数据库的用户账号的密码。在Zabbix系统中,通常会创建一个专用的数据库用户(如
zabbix
),用于Zabbix Server与数据库之间的通信。DBPassword
字段就是要填入为这个数据库用户分配的密码。
改正即可
五 总结
zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。
(B/S 网页端和服务端 网页端显示服务端所有的监控数据 就是客户端采集数据 交给服务端 网页端再显示服务端的信息)
zabbix server
zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。
zabbix agent
zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。