zabbix 基于 Web 界面的提供分布式系统监视

发布时间 2023-08-08 18:42:32作者: 纸签

zabbix 基于 Web 界面的提供分布式系统监视,能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

目录

一、zabbix概述

二、监控原理

三、zabbix组件

四、zabbix架构

五、zabbix工作原理

六、部署 zabbix

七、总结

 

 

 

 

 

一、zabbix概述

  1.zabbix简介   

   Zabbix是一种开源的企业级网络监控解决方案,旨在监控和跟踪各种IT组件的性能和可用性。它提供了广泛的监控功能,包括网络设备、服务器、虚拟机、数据库、应用程序和服务等。Zabbix具有可扩展性、灵活性和可定制性,适用于中小型到大型复杂环境的监控需求。

  ●通过一个友好的界面进行浏览整个网站所有的服务器状态
  ●可以在 Web 前端方便的查看监控数据
  ●可以回溯寻找事故发生时系统的问题和报警情况

  2.zabbix特点

    • 实时监控:Zabbix能够实时监控各种指标,提供实时的性能数据和状态信息。
    • 告警通知:Zabbix支持多种告警方式,如电子邮件、短信、Slack等,能够及时通知管理员或运维人员。
    • 数据可视化:Zabbix提供了丰富的图形和报表功能,可以将监控数据可视化展示,便于分析和趋势观察。
    • 自动化和集成:Zabbix支持自动发现和自动配置,能够自动添加和删除监控对象。同时,它还提供了API接口,方便与其他系统进行集成和自动化操作。
    • 分布式监控:Zabbix支持分布式部署,可以在多个地点设置监控节点,实现分布式监控和负载均衡。
    • zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。
    • zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。
    • zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。

通过使用Zabbix,组织可以实现对IT基础设施的全面监控和管理,提高系统的稳定性和性能,并及时发现和解决潜在问题,从而提高业务的可靠性和效率。

  3.zabbix监控对象 

  1. 服务器和主机:

    • 物理服务器:可以监控服务器的CPU使用率、内存利用率、磁盘空间、网络流量等指标。
    • 虚拟机:支持监控虚拟机的性能和资源使用情况,如虚拟CPU、内存、磁盘和网络。
    • 容器:可以监控容器化应用程序的性能和资源利用率,如Docker、Kubernetes等。
  2. 网络设备:

    • 路由器和交换机:可以监控网络设备的接口状态、流量、错误率等信息。
    • 防火墙和负载均衡器:支持监控防火墙规则、连接数、负载均衡状态等。
  3. 数据库和应用程序:

    • 数据库服务器:可以监控数据库的查询性能、连接数、缓存利用率等指标。
    • Web服务器和应用服务器:支持监控HTTP请求、响应时间、连接数等。
  4. 操作系统和服务:

    • Windows、Linux和Unix系统:可以监控操作系统的性能参数、进程状态、日志等。
    • DNS、DHCP、SMTP等网络服务:支持监控服务的可用性、响应时间、错误率等。
  5. 硬件设备:

    • UPS、温度传感器、传真机等辅助设备:可以监控设备的状态、报警和事件。

除了上述常见的监控对象,Zabbix还支持自定义监控对象和指标,通过自定义脚本或Zabbix代理实现对特定应用程序、设备或指标的监控。

需要根据具体的监控需求和环境来配置和定义监控对象,在Zabbix中可以灵活地添加、配置和管理监控对象,以实现全面的监控覆盖。

  4.zabbix运行机制

    (1)C/S 模式采集数据

    (2)通过 B/S 模式在 Web 端展示和配置

  

 

二、监控原理

  1.监控原理

    zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server 端,zabbix server 收到数据后,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像。当 zabbix 监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)。

 

三、zabbix组件

  1.zabbix组件

    zabbix 监控部署在系统中,包含常见的五个程序: zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender 等。
    ●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架构

  1.服务器与客户端

   2.server-proxy-client

   3.master-node-client

 

 

五、zabbix工作原理

    (1)主动模式:agent 向server 发起连接

      • 在主动模式下,Zabbix代理主动连接Zabbix服务器,并定期发送收集到的数据。代理负责建立连接和发送数据,服务器负责接收和处理数据。
      • 主动模式适用于代理在防火墙后面或代理的IP地址是动态分配的情况。代理可以通过配置文件指定连接的服务器地址和端口,并定期发送数据到服务器。

    (2)被动模式:server向 agent 发起连接  

      • 在被动模式下,Zabbix服务器主动连接Zabbix代理,并请求获取数据。代理负责监听指定的端口,等待服务器的连接请求,并将数据返回给服务器。
      • 被动模式适用于代理在公共网络中可直接访问的情况,或者代理有固定的IP地址和端口。代理需要在配置文件中指定监听的端口,并等待服务器的连接请求。

 

六、部署 zabbix  

  1.部署 zabbix 服务端 

---------- 部署 zabbix 服务端 ----------
zabbix-server 内存至少 2G,推荐 4G;

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server

//获取 zabbix 的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

 

//更换 zabbix.repo 为阿里源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo

yum clean all && yum makecache

yum install -y zabbix-server-mysql zabbix-agent

 

//安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。

yum install -y centos-release-scl

 

//修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
vim zabbix.repo
......
[zabbix-frontend]
......
enabled=1          #开启安装源
......

yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl

 

//安装 zabbix 所需的数据库
yum install -y mariadb-server mariadb

 

systemctl enable --now mariadb

mysql_secure_installation         #初始化数据库,并设置密码,如 abc123

 密码为abc123

//添加数据库用户,以及 zabbix 所需的数据库信息
mysql -u root -pabc123

CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;

 

//导入数据库信息
rpm -ql zabbix-server-mysql 		#查询 sql 文件的位置

zcat /usr/share/doc/zabbix-server-mysql-5.0.24/create.sql.gz | mysql -uroot -pabc123 zabbix

 

//修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf 
......
DBPassword=zabbix					#124行,指定 zabbix 数据库的密码

 

//修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai		#24行,取消注释,修改时区

 

//启动 zabbix 相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

浏览器访问:http://192.168.140.111/zabbix

 

点击下一步,设置数据库的密码 zabbix
安装完成后,默认的登录账号和密码为:Admin/zabbix
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。

 

//解决 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

 

 2.部署 zabbix 客户端 

---------- 部署 zabbix 客户端 ----------
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。


systemctl disable --now firewalld
setenforce 0
 

//服务端和客户端都配置时间同步
yum install -y ntpdate
ntpdate -u ntp.aliyun.com
在没有网络环境下使用ntp

 

//客户端配置时区,与服务器保持一致
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

date

 

//设置 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

 

cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

yum install -y zabbix-agent2

 

//修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
.......
Server=192.168.140.111			#80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.140.111		#120行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01			#131行,指定当前 zabbix 客户端的主机名

 

//启动 zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2

netstat -natp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN      43654/zabbix_agent2

 

//在服务端验证 zabbix-agent2 的连通性
yum install -y zabbix-get				#安装 zabbix 主动获取数据的命令

 

zabbix_get -s '192.168.140.222' -p 10050 -k 'agent.ping'
1

 

zabbix_get -s '192.168.140.222' -p 10050 -k 'system.hostname'
zbx-agent01

 

//在 Web 页面中添加 agent 主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01-192.168.140.222
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.140.222

再点击上方菜单栏【模板】
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
点击 【添加】

 

自定义脚本监控 https://kaikai136.blog.csdn.net/article/details/111309497?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111309497-blog-123223449.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111309497-blog-123223449.pc_relevant_paycolumn_v3&utm_relevant_index=1

  3.自定义监控内容

---------- 自定义监控内容 ----------
案列:自定义监控客户端服务器登录的人数
需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息

//在客户端创建自定义 key
1.明确需要执行的 linux 命令
who | wc -l

 

2.创建 zabbix 的监控项配置文件,用于自定义 key
vim /etc/zabbix/zabbix_agent2.conf
#可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中
268 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#自定义监控项的格式如下
291 #	Format: UserParameter=<key>,<shell command>
cd /etc/zabbix/zabbix_agent2.d/

vim UserParameter_login.conf
UserParameter=login.user,who|wc -l

 

systemctl restart zabbix-agent2

3.在服务端验证新建的监控项
zabbix_get -s '192.168.140.222' -p 10050 -k 'login.user'

 

  

 

七、总结

  Zabbix是一款开源的网络监控和告警系统,具有强大的功能和灵活的配置。它能够实时监测网络设备、服务器、应用程序等,并提供详细的统计数据和图形展示。Zabbix支持多种监控方式,包括SNMP、IPMI、JMX等,同时还提供了灵活的告警机制,能够及时通知管理员并采取相应的措施。通过Zabbix,用户可以实时了解系统的运行状态,及时发现并解决问题,提高系统的稳定性和可靠性。总之,Zabbix是一款功能强大、可定制性高的网络监控解决方案。