• 二十四、监控工具Zabbix
  • 1、监控体系
  • 监控的生命周期是:从服务器上架到机柜
  • 查看服务器的命令:
      基础设施的监控:就是硬件的监控,比如服务器温度、风扇转速、检查线路、服务器接口状态等。用ipmitool命令对服务器进行远程管理,但是这个命令只能用在物理机。现在我们是VM的虚拟机是用不了这个命令的。
      内存存储的监控:df -h 查看挂载的文件系统的使用情况、fdisk查看磁盘信息、iotop查看磁盘的吞吐量,就是磁盘的IO情况、free查看内存情况。ps 查看进程信息。
      cpu的监控:
        lscpu列出cpu的信息
        uptime查看运行的时长
        top也是查看cpu信息
        htop或者glances查看多核的cpu的动态使用情况。glances基于python开发的资源检测工具,作用和top差不多,但比top强大太多
      网络的监控:iftop命令
      应用监控:也就是上面的服务监控,就是我们的应用层在服务器上搭建项目运转所需要的工具,比如mysql、redis等数据库,监控其连接数、服务状况等,比如监控nginx、php-fpm、python后台的监控。
      性能监控:就是细颗粒的监控,比如网站解析的响应速度、服务器磁盘解析的响应速度、数据库的吞吐量等。
    我们是用上述命令将服务器的数据采集下来。在早期人工时代,我们是把这些采集到的信息复制到excel等文档里,然后绘图,去展示服务器的一个某些性能状况。比如你服务器在跑着一个应用程序,这个应用程序的开发同学写的时候有bug,把你服务器的内存不断的消耗,比如内存眼看着60%70%甚至90%,这时当用户访问我们服务器的时候,已经没有内存可用,去解析用户的请求了,服务器就崩溃了。所以当你的cpu资源、内存资源使用率达到60%时就需要报警,赶紧排查问题。如果是正常使用,就考虑硬件扩容;如果是程序出现问题,比如代码频繁发布、频繁上线导致网站崩溃、后台500事件等就赶紧定位问题解决问题。所以就需要自动化监控工具。而自动化工具比如Zabbix,也是采集这些数据并把数据在zabbix平台上进行展示即可。
    下图是自动化工具的一个简单介绍,本部分我们学zabbix

2、zabbix介绍
zabbix是由Alexei Vladishev公司开发的;目标是通过网络监视,监控操作系统;它是基于server-client架构,就是我们可以部署一个服务端,再部署一个或多个客户端节点的一种架构。通过这种架构我们可监视各种网络服务、linux服务器或者windows服务器、路由交换机等网络设备等的状态。
zabbix可以和各种数据库结合做数据存储。就是使用各种Database-end 如mysql,PostgreSQL,SQLite,Oracle或IBM DB2存储资料。server端是基于C语言开发的,非常高效;WEB前端frontend则是基于PHP语言开发的,如果你对PHP了解,你就可以对zabbix的前端进行二次开发。
zabbix可以使用多种方式监视。可以只使用simple check不需要安装client端。它可以基于SMTP或HTTP...等各种协议定制监视内容。
在客户端如UNIX,windows中安装zabbix agent之后,可监视cpu load、网络流量状况、硬盘容量等各种状态。而就算没有在客户端安装agent,zabbix也可以经由SNMP、TCP、ICMP、利用IPMI、SSH、telnet对目标进行监视。
zabbix自带的item(就是监控的内容)足够满足普通小公司的监控需求,对于大公司可以自定义item,自动生成报表,也有API可以和其他系统集成。

  • 支持自定义监控脚本,提供需要输出的值即可
  • zabbix存储的数据库表结构捎有复杂但逻辑还是非常清晰
  • zabbix存在模板的概念,可以方便将一组监控项进行部署。假如我们有多台zabbix服务端,我们可以在一台服务端部署监控内容,然后把模板导出,发给其他的服务端节点即可用了。
  • zabbix每一个item也就是监控项,都可以看到历史记录,且web界面友好
  • zabbix有强大的Trigger(触发器)定义规则,可以定义复杂的报警逻辑
  • zabbix提供了ack报警确认机制。就是报警后有人确认后就不再继续报警了。
  • zabbix支持邮件、短信、微信等警告方式
  • zabbix在触发警告后,可以自动远程执行一些系统命令,就是达到提前预处理的效果。
  • zabbix有原生的PHP绘图模块

zabbix专用词汇:

  • zabbix server 服务端,收集数据,写入数据。后面我们在basenode上安装zabbix server
  • zabbix agent 部署在被监控的机器上,是一个进程,和zabbix server进行交互,以及负责执行命令。后面我们要在allnode和clearn-node上安装zabbix agent
  • host 单台服务器的概念,指zabbix监控的实体服务器、交换机等
  • hosts 主机组
  • Applications 应用
  • Events 事件
  • Media 发送通知的通道,比如通过邮件、短信、微信等方式
  • Remote command 远程命令
  • Template 模板。我们可以定义一个监控模板,这个模板里面有很多监控项item。我们在服务器A上定义的模板,发到服务器B上,服务器B就也能监控一样的内容了。
  • Item 对某一个指标的监控称为items,如某台服务器的内存使用状况就是一个item监控项
  • Trigger 触发器,定义报警的逻辑,有正常、异常、未知三个状态
  • Action 当trigger符合设定的阈值后,zabbix指定的动作,比如发个邮件给某人告诉他服务器出问题了

zabbix程序组件
就是后面我们会安装下面这些程序组件。

  • zabbix_server:服务端守护进程。就是服务端要安装的组件。
  • zabbix_agentd:agent守护进程。就是客户端要安装的组件。
  • zabbix_proxy:代理服务器。这是分布式监控系统搭建时要用到的组件。
  • zabbix_database:存储系统,mysql, pgsql。后面我们都安装mysql,因为mysql还是比较主流。
  • zabbix_web:web GUI图形化界面。安装它就会在浏览器中看到一个图形化的界面。
  • zabbix_get:命令行工具,测试向agent发起数据采集请求。这些组件就是让我们在服务器上敲的一些命令可以执行。我们向agent发起数据请求,肯定是先敲一些命令去请求数据了。
  • zabbix_sender:命令行工具,测试从客户端agent向服务端server发送数据
  • zabbix_java_gateway:java网关。就是做分布式zabbix要使用到的组件,是检测java项目所使用的工具。

3、安装部署zabbix5.0
zabbix5.0版本对linux基础环境的要求较其他版本有很大的变化,尤其是对php版本的要求,最低要求7.2.0版本的,对php扩展组件版本也有要求,详见官网文档:
2 Requirements
这个官方文档会告诉你zabbix依赖哪些工具、需要安装哪些组件、以及安装教程。但都是英文。
下面的步骤抓狂的多!这些步骤如果你要自学就得去zabbix官方一个个文档的研究看怎么安装。

(1)在监控机basenode上,采集basenode的IP地址

 (2)在监控机basenode上,关闭basenode的防火墙

 (3)查看服务端basenode的内存配置:

 (4)获取zabbix的下载源并安装
参考文章:Zabbix安装部署(一)-阿里云开发者社区
用命令:rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 获取zabbix下载源

更改zabbix.repo源地址为阿里的
用命令:sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo 

 然后再清空一下旧的yum缓存、在监控机上同时安装zabbix服务端和客户端

(5)安装Software Collections,便于后续安装高版本的php
因为yum安装得php版本是5.4过低。software collections,SCL,可以让你在同一个os上安装和使用多个版本的软件,而不会影响整个系统的依赖环境。意思就是:比如我们现在的linux系统是自带有php解释器和python解释器,假如现在的python解释器是python2,我们要安装一个python3,那你在yum install python3时,就会把和整个操作系统有关的依赖环境进行一个升级或者更新,那这就可能会影响到其他程序了呀。所以我们要安装SCL这个工具!安装了SCL工具后就会默认把下载的软件自动放到/opt/rh这个目录下、并且自动把生成的各种配置文件、脚本等都放到/opt/rh/package-name/这个目录下。
这部分还是参考Zabbix安装部署(一)-阿里云开发者社区 这个链接,写得非常清楚。 

 (6)修改zabbix-front前端源,修改里面的enabled参数

就是开启enabled参数。这些步骤都是官方文档给的步骤,安装官方文档逐步操作即可,没有为什么。因为装软件就是根据说明书进行操作即可,没有原因。

(7)安装zabbix前端环境,并且是安装到scl环境下

所以我们前面要先安装scl工具。

(8)安装zabbix所需的数据库
这里我们直接用自带的mariadb即可

然后配置数据库开机启动: 

开机启动就用systemctl命令,因为我们的mariadb是yum安装的,yum安装就会自动生成一个mariadb-server的单元文件,这个文件就可以用systemctl去管理。enable --now mariadb 表示开机自启、并且立即启动。返回的结果表示系统创建了一个开机自启的链接,就是数据库服务就跑起来了!
那我们检查一下数据库服务: 

 然后初始化数据库、设置密码等一系列操作:

 然后添加数据库用户,以及zabbix所需的数据库信息

(9)使用zabbix-mysql命令,导入数据库信息
用命令:zcat /user/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
就是使用zcat命令读取压缩文件create.sql.gz的内容,然后将内容导入到mysql中的zabbix库中
-uzabbix是zabbix用户;-p zabbix是zabbix数据库。就是-u后面是用户名,-p空格后面是数据库名字。 

那我们看看都导入了什么: 

(10)修改zabbix server配置文件,修改数据库密码
这个操作可以通过vim也可以通过其他方式修改,这里我们用vim
先打开配置文件: 

(11)修改zabbix的php配置文件 

(12)启动zabbix相关服务
用命令:systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
重启zabbix服务端、客户端、apache服务、以及启动php进程,因为zabbix前端请求是交给php去解析的
然后开机自启:systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm 

(13)通过浏览器访问来看你配置的zabbix服务:


 

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐