企业级部署zabbix分布式监控系统

目录

一、Zabbix分布式监控系统介绍

1.什么是"Zabbix"

2.Zabbix分布式监控系统的特点

3.Zabbix分布式监控系统的原理

4.Zabbix分布式监控系统的运用

[5. Zabbix分布式监控系统的部署顺序](#5. Zabbix分布式监控系统的部署顺序)

二、搭建

1.设备硬件配置参考

2.zabbix分布式监控系统各节点设备名称和IP规划

3.搭建步骤与思路

[A.基本环境配置 --服务端、客户端节点](#A.基本环境配置 –服务端、客户端节点)

(1).更改两台服务器的主机名

(2).关闭两台机器防火墙以及安全规则

(3).测试两台机器的网络

(4).添加两台主机的映射

[B. LNMP环境部署(zabbix 服务端)](#B. LNMP环境部署(zabbix 服务端))

(1).上传LNMP环境部署包

(2).解压LNMP环境部署包

(3).一键部署LNMP环境部署源码包

[C. Zabbix服务端部署及配置](#C. Zabbix服务端部署及配置)

(1).安装依赖包

(2).创建zabbix用户

[(3).zabbix-4.0.3.tar.gz 传到/usr/local/src 目录下解压编译安装](#(3).zabbix-4.0.3.tar.gz 传到/usr/local/src 目录下解压编译安装)

(4).环境变量设置

(5).配置启动脚本

(6).登录数据库创建zabbix用户和导入zabbix库

[(7). 编辑zabbix_server 的配置](#(7). 编辑zabbix_server 的配置)

[D. Zabbix Web 界面部署](#D. Zabbix Web 界面部署)

(1).配置Nginx虚拟主机

[(2).修改 php.ini 的配置文件](#(2).修改 php.ini 的配置文件)

[(3).修改 php-fpm.conf 的配置文件](#(3).修改 php-fpm.conf 的配置文件)

(4).Web界面部署安装

安装报错:

[E. Zabbix 客户端部署](#E. Zabbix 客户端部署)

(1).下载Zabbix客户端安装包

(2).安装zabbix客户端

[F. Zabbix web 界面的使用管理操作](#F. Zabbix web 界面的使用管理操作)

(1).首先设置中文

(2).解决中文乱码的问题

(3).创建客户端监控主机

(4).创建模板

[G. Zabbix自定义监控项](#G. Zabbix自定义监控项)

(1).配置自定义监控脚本,修改agent配置文件:

[(6).进入Zabbix Web 配置](#(6).进入Zabbix Web 配置)

(7).验证

三、总结


******一、**Zabbix分布式监控系统介绍

1.什么是" Z abbix"

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。Zabbix支持多种采集方式和采集客户端,有专用Agent (代理),也支持SNMP,IPMI,JMX,Telnet,SSH 等多种协议,它将采集到的数据存放在数据库,然后对其进行分析整理,达到条件出发告警。Zabbix由2部分构成,Zabbix server与可选组件Zabbix agent。

2.Zabbix 分布式监控系统的特点

  1. 自动发现服务器与网络设备
  2. 分布式监视以及WEB集中管理功能
  3. 可以无agent监视
  4. 用户安全认证和柔软的授权方式
  5. 通过WEB界面设置或查看监视结果
  6. 丰富的监控功能:Zabbix可以监控各种资源,包括服务器的CPU、内存、网络、磁盘等,还可以监控网络设备、数据库、应用程序的性能指标。
  7. 灵活的数据收集:Zabbix支持多种数据收集方式,包括主动和被动监控、SNMP、JMX等,可以根据需求选择最适合的方式进行监控。
  8. 强大的报警功能:Zabbix可以基于收集的监控数据设置各种报警规则,并通过Email、SMS、Webhook等方式及时通知管理员,帮助及时响应故障和异常情况。
  9. 可视化和报表功能:Zabbix提供直观的图表和报表功能,可以对监控数据进行可视化展示,帮助管理员更好地了解系统状态和趋势。

Zabbix能见识各种网络参数,保证服务器系统的安全运营;Zabbix还可以非常方便地自定义监控项目。你可以定制化监控业务的某个指标(比如,每分钟订单数量),这个监控项目不可能在Zabbix的自带模板中找到,所以只能自定义。另外,Zabbix还为我们提供了易用的二次开发接口,方便扩展。并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

3.Zabbix 分布式监控系统的原理

  • Zabbix Server会去收集zabbix agent采集的监控数据,并将采集的监控数据会写入到SQL数据库。
  • Zabbix的Web后端采用PHP语言开发,所有配置信息、用户认证信息等会写入SQL 数据库。
  • 企业级Zabbix的搭建依赖的环境:主流采用LNMP环境(CentOS7+Nginx+MySQL+PhP)

4.Zabbix 分布式监控系统的运用

  • 服务器监控:Zabbix可以监控服务器的硬件状况和性能,及时发现问题并采取措施,提高系统的稳定性和可用性。
  • 网络设备监控:Zabbix可以监控网络设备的带宽、连通性和性能指标,帮助管理员及时排查网络问题,并进行容量规划。
  • 应用性能监控:Zabbix可以监控常见的应用程序(如Web服务器、数据库、消息队列等)的性能指标,帮助发现性能瓶颈,并进行优化。
  • 云环境监控:Zabbix支持AWS、Azure等常见的云平台,可以监控云资源的使用情况和性能指标,帮助管理云环境的资源和成本

5 . Zabbix 分布式监控系统的部署顺序

  1. LNMP的环境搭建
  2. MySQL服务器搭建
  3. Zabbix Server搭建
  4. Zabbix 网页展示

二、搭建

1 . 设备硬件配置参考

配置两台虚拟机,一个为zabbix-server,一个为zabbix-agent

2 . zabbix分布式监控系统各节点设备名称和IP规划

|---------------|---------------|-----|
| 主机名 | IP地址 | 角色 |
| zabbix-server | 192.168.20.30 | 服务端 |
| zabbix-agent | 192.168.20.40 | 客户端 |

3 . 搭建步骤与思路

A. 基本环境配置 -- 服务端、客户端节点

( 1). 更改两台服务器的主机名
复制代码
# hostnamectl set-hostname zabbix-server

# hostnamectl set-hostname zabbix-agent
(2).关闭两台机器防火墙以及安全规则
复制代码
# systemctl stop firewalld

# systemctl disable firewalld

# setenforce 0

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

解析:systemctl stop firewalld 为暂时关闭防火墙,systemctl disable firewalld 为永久关闭防火墙。setenforce 0为临时关闭selinux,sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config为永久关闭selinux。

(3 ). 测试两台机器的网络
复制代码
# ping baidu.com

PING baidu.com (39.156.69.79) 56(84) bytes of data.

64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 timc=47.2 ms

64bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=45.8 ms
( 4). 添加两台主机的映射
复制代码
# vi /etc/hosts

192.168.20.30 zabbix-server

192.168.20.40 zabbix-agent

B. LNMP 环境部署(zabbix 服务端)

( 1 ). 上传L NMP 环境部署包

将lnmp环境包上传到/root/下

( 2 ). 解压L NMP 环境部署包

解压lnmp压缩包

复制代码
# tar -zxvf lnmp1.6-full.tar.gz
(3). 一键部署L NMP 环境部署源码包
复制代码
# cd lnmp1.6-full

修改Mysql数据目录:

复制代码
# vi lnmp.conf

mysql_Data_Dir='/data/mysql'

# ./install.sh lnmp           #执行脚本

选择MySQL 版本:

设置MySQL密码:

选择PHP版本:

选择不安装内存分配器:

按Enter键开始安装:

部署成功显示:

测试访问网页:

C. Z abbix服务端部署及配置

(1). 安装依赖包
复制代码
# yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel

解析:

  1. yum是一个用于下载东西的命令,可以更方便的解决所安装的工具的依赖关系。
  2. gcc (GNU CompilerCollection)是Linux下最主要的编译工具,GCC不仅功能非常强大,结构也非常灵活。它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada。
  3. 不带 devel 后缀的package,通常只包含能让程序运行的动态库和配置文件。而带devel 后缀的package ,则包含使用这个package 开发程序的所有的必需文件。
  4. libevent-devel:libevent 开发库,用于事件处理。
  5. wget:用于从 Web 下载文件的工具。
  6. net-snmp-devel:Net-SNMP 开发库,用于网络管理协议。
  7. libxml2-devel:libxml2 开发库,用于处理 XML 文档。
  8. libcurl-devel:libcurl 开发库,用于通过网络进行文件传输。
(2) .创建zabbix用户
复制代码
# useradd -s /sbin/nologin zabbix
(3).zabbix-4.0.3.tar.gz 传到/ usr/local/src 目录下解压编译安装
复制代码
# tar -zxvf zabbix-4.0.3.tar.gz     #解压源码包
# mkdir /usr/local/zabbix
# mv /usr/local/src/zabbix-4.0.3/* /usr/local/zabbix      #迁移到安装目录
# cd /usr/local/zabbix/
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2

选项说明:

  1. --prefix 指定安装目录
  2. --enable-server安装Zabbix server,启用Zabbix服务器组件
  3. --enable-agent安装Zabbix agent,启用Zabbix代理组件
  4. --with-mysql 用MySQL来存储
  5. mysql_config:指定 MySQL 客户端配置脚本的位置。这将允许 Zabbix 与 MySQL 数据库交互。
  6. --with-net-snmp:启用对 Net-SNMP 库的支持。
  7. --with-libcurl:启用对 libcurl 库的支持。
  8. --with-libxml2:启用对 libxml2 库的支持。

编译完成结果:

复制代码
 # make && make install           #编译安装
(4). 环境变量设置
复制代码
# vi /etc/profile
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
# source /etc/profile
# echo $PATH
查看版本: zabbix_server --version
(5). 配置启动脚本
复制代码
# cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_server /etc/init.d/
#cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# vi /etc/init.d/zabbix server
BASEDIR=/usr/local/zabbix     #zabbix安装目录
# vi /etc/init.d/zabbix agentd
BASEDIR=/usr/local/zabbix     #zabbix安装目录

添加权限:

复制代码
# chmod 755 /etc/init.d/zabbix_*

启动zabbix服务及启动状态:

复制代码
# systemctl start zabbix_server
# systemctl restart zabbix_agentd
# systemctl status zabbix_server
# systemctl status zabbix_agentd
(6). 登录数据库创建zabbix用户和导入zabbix库
复制代码
# mysql -h 127.0.0.1-uroot -p000000
mysql> create database zabbix character set utf8 collate utf8_bin;     ##创建zabbix 库和设置格式
mysql> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by
'zabbix';	     ##创建 Zabbix用户并分配权限
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
mysql> flush privileges;	   ##刷新权限	
mysql> set names utf8;	    ##设置字符集	
mysql> use zabbix	     ##切换到 Zabbix库中

把源码/usr/local/zabbix/database/mysql/安装路径下的3个sql文件导入数据库:

复制代码
mysql> source /usr/local/zabbix/database/mysql/schema.sql 
mysql> source /usr/local/zabbix/database/mysql/data.sql 
mysql> source /usr/local/zabbix/database/mysql/images.sql
mysql> show tables;	    ##查看导入的表格
(7) . 编辑zabbix _server 的配置
复制代码
# cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak}

# vi /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1	##指定数据库信息(需配合参数DBSocket使用)	
DBName=zabbix	##服务端连接数据库的库名	
DBUser=zabbix	  ##连接数据库的用户	
DBPassword=Zabbix   	##连接数据库的密码	
DBPort=3306	  ##指定连接数据库的端口	
Timeout=30	 #与 AGNET和其它外部设备通信超时设置,单位为秒	
LogSlowQueries=3000	  ##用于服务端数据库慢查询功能,单位是亳秒	
DBSocket=/tmp/mysql.sock	  ##指定 MYSQL的SOCK 连接路径	

解析:

{,.bak}:用大括号括起来的参数表示扩展。在这种情况下,它将扩展为两个参数:.bak 和 zabbix_server.conf.bak。

修改 Zabbix目录的权限:

复制代码
# chown zabbix:zabbix -R /usr/local/zabbix/

解析:

  1. -R:递归更改指定目录及其所有子目录和文件的权限。
  2. zabbix:zabbix:新所有者和组。
  3. /usr/local/zabbix/:要更改所有权的目录。

重启服务生效:

复制代码
# systemctl restart zabbix_server

D. Zabbix Web 界面部署

(1). 配置Nginx虚拟主机
复制代码
# vi /usr/local/nginx/conf/vhost/zabbix.com.conf
server
{
    listen 800;
    server_name zabbix.com www.zabbix.com;
    index index.html index.htm index.php;
    root /data/nginx/zabbix;
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/nginx/zabbix$fastcgi_script_name;
        include fastcgi_params;
    }
}

源码安装包路径下的文件cp到Zabbix Web文件目录当中:

复制代码
# mkdir -p /data/nginx/zabbix
# /etc/init.d/nginx reload	   #生效服务	

# cp -rf /usr/local/zabbix/frontends/php/* /data/nginx/zabbix

解析:

reload:重新加载 Nginx 的配置。

(2). 修改 p hp.ini 的配置文件
复制代码
# vi /usr/local/php/etc/php.ini 
post_max_size = 32M
max_execution_time = 350 
max_input_time = 350
date.timezone = Asia/Shanghai
(3). 修改 php-fpm.conf 的配置文件
复制代码
# vi /usr/local/php/etc/php-fpm.conf
[www]
listen = 127.0.0.1:9000

重启php-fpm服务:

复制代码
#  /etc/init.d/php-fpm restart

检查端口是否启动:

复制代码
# netstat -lntp | grep php
tcp		0		0 127.0.0.1:9000		0.0.0.0:*	
LISTEN		2141/php-fpm: maste
(4).Web 界面部署安装

初始页面:

检查安装条件:(根据提示解决不满足条件的问题!

配置数据库连接信息:

配置zabbix服务端详细信息:

安装前确认信息:

安装报错:

根据提示下载,并把它放到指定路径/data/nginx/zabbix/conf/Zabbix.conf.php

重新刷新页面:

登录界面:(账号:Admin 密码:zabbix)

登录后界面:

E. Zabbix 客户端部署

(1).下载Zabbix客户端安装包
复制代码
# yum -y install wget
# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.3-1.el7.x86_64.rpm

通过wget命令下载安装包。

(2).安装zabbix客户端
复制代码
# rpm -ivh zabbix-agent-4.0.3-1.el7.x86_64.rpm

安装完后我们后面经常使用的文件如路径如下:

复制代码
/etc/zabbix/zabbix agentd.conf##zabbix agentd    ##配置文件
/etc/zabbix/zabbix agentd.d##zabbix_agentd    ##进程文件
/var/run/zabbix/zabbix agentd.pid##zabbix agentdpid    ##文件路径
/var/log/zabbix/zabbix agentd.log##zabbix_agentd     ##日志文件路径

备份配置文件

复制代码
# cp /etc/zabbix/zabbix_agentd.conf{,.bak}
# egrep -v '^$|#' /etc/zabbix/zabbix_agentd.conf.bak > /etc/zabbix/zabbix_agentd.conf

修改配置文件:

复制代码
# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix agentd.pid
LogFile=/var/log/zabbix/zabbix agentd.log
LogFileSize=0    ##指定日志文件的大小,单位 MB.0表示禁用日志轮转
ListenPort=10050    ##指定监听端口StartAgents-3
##Zabbix 启动之后开启被动监控的进程数量,如果设置为0,那么Zabbix被动监控被禁用
ListenIP=0.0.0.0     ##监听IP地址,默认为所有接口
Server=192.168.20.30       ##允许哪个Zabbixserver的P地址监控本机
#ServerActive=192.168.20.30    ##Zabbix主动监控server的ip 地址
Hostname=zabbix agent
Include=/etc/zabbix/zabbix agentd.d/*.conf   ##自定义配置文件

解析:

主动模式和被动模式的区别:

  1. 主动模式: Zabbix的agent端,也就是客户端,主动把自己监测到的数据,上报给 Zabbix 服务器,Zabbix 服务器不需要向 agent 发起请求。

注意: ServerActive是主动模式开关,注掉主动模式关闭;与Server不能同时配置

  1. 被动模式: Zabbix 服务器向agent发送请求,告诉agnet我需要哪些数据然后 agnet 执行相关操作,把执行结果返回给服务端

注意:SlarAgenls=0表示被动模式关闭。

重启生效配置:

复制代码
# systemctl start zabbix-agent

查看日志:

复制代码
# tail -f /var/log/zabbix/zabbix_agentd.log

查看端口:

复制代码
# netstat -lntp | grep zabbix

F. Zabbix web 界面的使用管理操作

(1).首先设置中文

可以看到这里的中文是乱码的形式

(2).解决中文乱码的问题

从Windows控制面板找到字体,选择字体文件,拷贝到zabbix服务器的/data/nginx/zabbix/fonts 目录下。

将DejaVuSans.ttf字体备份起来,然后用simhei.ttf重命名成DejaVuSans.ttf:

复制代码
# mv DejaVuSans.ttf DejaVuSans.ttf.bak
# mv simhei.ttf DejaVuSans.ttf

重新刷新后中文乱码消失。

(3).创建客户端监控主机

创建主机

找到配置--->主机--->创建主机:

接着配置主机链接模板,选择Template OS Linux,单击"添加"按钮。

之后在最新数据中查看结果:

(4).创建模板

选择配置--->模板--->创建模板--->添加监控项

选择自带监控项:

G. Zabbix 自定义监控项

(1).配置自定义监控脚本,修改agent配置文件:
复制代码
# vi /etc/zabbix/zabbix_agentd.d/users.conf
UnsafeUserParameters=1
UserParameter=user,/bin/bash /scripts/user.sh

(2).配置监控脚本:

复制代码
# mkdir /scripts
# vi user.sh
#!/bin/bash
user=$(who|wc -l)
if [ $user -gt 3 ]; then
     echo "1"
else
     echo "2"

fi

(3).添加权限

复制代码
# chmod 755 user.sh

(4).测试脚本

复制代码
# ./user.sh

如果返回值为1,说明在线用户超过3个,如果返回值为2,说明在线用户不超过三个。

生效配置:

复制代码
# systemctl restart zabbix-agent.service
# netstat -lntp   #查看端口是否启动

(5).服务端测试

复制代码
# zabbix_get -s 192.168.20.40 -k users

解析:

Zabbix_get命令是在 server 端用来检査 agent端的一个命令,在添加完主机或者触发器后,不能正常获得数据,可以用zabbix_get来检查能否采集到数据以便判断问题症结所在。

zabbix_get 参数说明:

  • -s--host:指定客户端主机名或者IP
  • -p --port:客户端端口,默认 10050。
  • -I --source-address:指定源,写上Zabbixserver的IP地址即可,一般留空,服务器如果有多的时候,指定一个。
  • -k --key:用户想获取的 key

至于使用长参数还是短的,自己选择,我经常使用-s而不是-host,

如果不知道 key参数可以使用 zabbix agentd-p 命令寻找自己想要找的参数,如下:

复制代码
# zabbix_agentd -p | grep users
(6).进入Zabbix Web 配置

流程: 配置一> 主机 一> 监控项 一> 创建监控项 : 配置 一> 主机 一> 触发器 一> 创建触发器。

具体配置参数如图所示:

(7).验证

客户端主机开多于三个用户,看是否会出发报警!

红色显示的为严重灾难,已报警,至此,zabbix分布式监控系统部署完毕。

三、总结

搭建服务的时候,除了要知道每条命令的作用是什么,还需要注意命令与命令之间的连带关系,注意每个服务所连接的端口不能相同。

Zabbix分布式监控系统是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。服务端负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行。客户端部署在被监控端主机上,负责收集本地数据并发往Server端或 Proxy 端。要明白zabbix分布式监控系统的原理以及搭建顺序。

项目中涉及LNMP环境的搭建,数据库的创建,服务端的配置等。

相关推荐
无级程序员3 小时前
银行分布式新核心的部署架构(两地三中心)
分布式·架构
天草二十六_简村人3 小时前
Rabbitmq消息被消费时抛异常,进入Unacked 状态,进而导致消费者不断尝试消费(下)
java·spring boot·分布式·后端·rabbitmq
RainbowJie13 小时前
RabbitMQ 快速入门
分布式·rabbitmq
&星辰入梦来&5 小时前
分布式理论:CAP&BASE理论
分布式
m0_748250035 小时前
【AIDevops】Deepseek驱动无界面自动化运维与分布式脚本系统,初探运维革命之路
运维·分布式·自动化
天草二十六_简村人5 小时前
Rabbitmq消息被消费时抛异常,进入Unacked 状态,进而导致消费者不断尝试消费(上)
java·spring boot·分布式·后端·rabbitmq
多多*5 小时前
使用事件监听器来处理并发环境中RabbitMQ的同步响应问题
java·开发语言·spring boot·分布式·docker·mybatis
桂月二二6 小时前
边缘计算场景下的分布式推理系统架构设计
分布式·系统架构·边缘计算
野生技术架构师7 小时前
Kafka 4.0 发布,彻底移除 ZooKeeper!
分布式·zookeeper·kafka
碧海饮冰8 小时前
zookeeper和redis的应用场景,redis是否能替代zookeeper
redis·分布式·zookeeper