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

介绍与部署 Zabbix 监控系统

目录

一、Zabbix 监控系统概述

1、Zabbix 概念

2、Zabbix构成

3、Zabbix 监控对象

4、Zabbix 6.0 新特性

4.1、Zabbix server高可用防止硬件故障或计划维护期的停机

4.2、Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集指标

5、Zabbix工作原理

6、Zabbix进程详解

7、Zabbix三个监控架构

7.1、server-client(基本架构)

7.2、server-proxy-client(中型架构)

7.3、master-node-client(大型架构)

二、安装部署 Zabbix服务端

1、环境部署

2、部署 Nginx + PHP 环境并测试

2.1、安装 nginx

2.2、安装 php

2.3、修改nginx 配置

2.4、修改 php 配置

2.5、创建目录和测试文件,启动服务

2.6、测试访问

3、部署数据库,要求 MySQL 5.7 或 Mariadb 10.5 及以上版本

3.1、配置 Mariadb yum源

3.2、初始化数据库

3.3、向数据库导入 zabbix 数据

4、编译安装 zabbix Server 服务端

4.1、安装依赖包,创建 zabbix 用户

4.2、编译安装

4.3、检查版本

4.4、修改 zabbix server 配置文件,修改数据库的密码

4.5、准备 systemctl 服务管理文件

5、部署 Web 前端,进行访问

6、安装 zabbix 客户端,实现 zabbix 服务端自我监控

7、解决 zabbix-server Web页面中文乱码问题

三、添加 zabbix 客户端

1、部署环境

2、服务端和客户端都配置时间同步

3、服务端和客户端都设置 hosts 解析

4、设置 zabbix 的下载源,安装 zabbix-agent

5、修改 agent 配置文件

6、在服务端验证 zabbix-agent2 的连通性

7、在 Web 页面中添加 agent 主机


一、Zabbix 监控系统概述

官方网站:https://www.zabbix.com/

1、Zabbix 概念

  • zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

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

  • zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。

  • zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。

  • zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。

2、Zabbix构成

Zabbix是一个开源的网络监控解决方案,用于实时监控服务器、网络设备、应用程序等的性能和可用性。Zabbix主要由以下五个核心组件构成:

①、Server

  • 功能:Zabbix Server是Zabbix的核心组件,负责处理所有配置信息、统计信息和操作信息。它接收来自Agent和Proxy的数据,并进行处理和存储。

  • 作用:Server内部存储了所有的监控数据和配置信息,是整个监控系统的核心。

②、Web页面

  • 功能:Zabbix Web页面提供了用户界面,用于配置和管理Zabbix系统,以及查看监控数据和生成报告。

  • 作用:Web页面通常与Zabbix Server部署在同一台物理设备上,但也可以分开配置。它提供了直观的监控信息,方便运维人员进行监控和管理。

③、数据库

  • 功能:Zabbix数据库用于存储所有的配置信息、统计信息和其他相关数据。常用的数据库包括MySQL、PostgreSQL等。

  • 作用:数据库是Zabbix系统的数据存储中心,所有监控数据和配置信息都存储在这里。

④、Proxy

  • 功能:Zabbix Proxy是一个可选组件,用于分担Zabbix Server的负载。它可以代替Server采集数据,并将数据发送给Server。

  • 作用:Proxy通常用于大规模监控环境,如跨机房、跨网段等场景,可以有效减轻Server的负载。

⑤、Agent

  • 功能:Zabbix Agent通常部署在被监控的目标设备上,用于主动监控本地资源和应用程序,并将监控数据发送给Zabbix Server或Proxy。

  • 作用:Agent是数据采集的前端,负责收集被监控设备的性能数据,并将其发送给Server或Proxy进行处理。

3、Zabbix 监控对象

zabbix支持监控各种系统平台,包括Linux和Windows等主流操作系统,也可以借助SNMP或者是SSH协议监控路由交换设备。 zabbix如果部署在服务器上,可以监控其CPU、内存、网络性能等硬件参数,也可以监控具体的服务或者应用程序、服务运行情况及性能。

  • 硬件监控:如 CPU 使用率、内存利用率、磁盘空间、温度传感器等
  • 系统监控:可以监控操作系统的各项参数,包括进程状态、负载情况、文件系统状态等
  • 网络监控:监控网络设备的状态、流量、带宽利用率等,并对网络连通性进行检测
  • java 监控:对于基于 Java 的应用程序,Zabbix 可以监控 JVM 的运行状态、内存使用情况、垃圾回收等
  • 应用服务器监控:监控各种应用服务器,如 Tomcat、Nginx、Apache等
  • 数据库监控:监控数据库服务器的各种指标,如查询响应时间、连接数、缓冲池利用率等
  • url 监控:监控 Web 页面的可用性和响应时间
  • vmware 监控:监控 VMware 虚拟化环境中的虚拟机和宿主机的各种性能指标,包括 CPU 利用率、内存使用情况、虚拟磁盘性能等

4、Zabbix 6.0 新特性

4.1、Zabbix server高可用防止硬件故障或计划维护期的停机

  • 原生选择加入HA群集配置

  • 定义一个或多个备用节点

  • 实时监控Zabbix server群集节点的状态

  • 不需要外部工具即可将Zabbix server配置为HA群集模

4.2、Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集指标

  • Kubernetes节点和pods的自动发现和监控

  • 无代理方式采集Kubernetes pods和节点的信息

  • 获取Kubernetes节点主机高水平信息

5、Zabbix工作原理

工作流程:

zabbix在进行监控时,zabbix客户端要安装在被监控设备上,负责定期收集数据,并将其发送给zabbix服务端;zabbix服务端要安装在监控设备上,其将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。

zabbix的数据收集分为两种模式:

  • 主动模式

zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。

  • 被动模式

zabbix server向agent请求获取监控项的数据,zabbix agent返回数据。

可以看出,zabbix的主动和被动模式是以zabbix客户端为基准的。

6、Zabbix进程详解

在默认情况下,zabbix有6个工作进程,分别是zabbix_agentd,zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server和zabbix_gateway。其中,zabbix_java_gateway是可选进程。这6个进程作用如下:

  • zabbix_agentd

zabbix_agentd为zabbix客户端守护进程,主要负责收集客户端监控项数据。

  • zabbix_server

zabbix_server为zabbix服务端守护进程,主要负责收集zabbix客户端数据。

  • zabbix_proxy

zabbix_proxy是zabbix代理进程,其功能类似于server,作用上类似与一个中转站,最终会把收集到的数据再次提交给zabbix_server。

  • zabbix_get

zabbix_get为一个zabbix工具,通常运行在zabbix server或者是zabbix proxy上,用于远程获取客户端信息,通常用于排错。

  • zabbix_sender

zabbix_sender也是一个zabbix工具,通常运行在zabbix客户端,通常用于耗时比较长的检查,其作用是主动发送数据。

用户发送数据给 server 或 proxy 端

  • zabbix_java_gateway

zabbix_java_gateway是zabbix2.0之后引入的新功能,可以用户JAVA方面的设备,但是其只能主动获取数据,而不能被动获取数据。

7、Zabbix三个监控架构

在实际生产环境中,根据网络环境和监控规模的不同,zabbix一共有三种监控架构,分别是server-client架构、master-node-client架构和server-proxy-client架构。

7.1、server-client(基本架构)

zabbix最简单的架构,监控设备和被监控设备之间直接相连,zabbix server和zabbix client之间直接进行数据交互。

7.2、server-proxy-client(中型架构)

proxy是连接server和client之间的桥梁,其本身并不存放数据,只是将zabbix agent端发送来的数据暂存,然后再提交给server。这种架构一般用于跨机房、跨网络的中型网络架构。在server-proxy-client架构架构中,server设备的宕机会导致整个系统无法正常工作。

7.3、master-node-client(大型架构)

master-node-client架构是zabbix最复杂的架构,一般用于跨机房、跨网络、监控设备较多的大型网络架构。与server-proxy-client相比,master-node-client架构的主要区别在于node与proxy上。在master-node-client架构中,每个node可以理解为一个小的server端,有自己的配置文件和数据库,node下游可以直接连接client,也可以再次经过proxy代理后连接client。在master-node-client架构中,master设备宕机不会影响node结点的正常工作。

二、安装部署 Zabbix服务端

1、环境部署

节点IP地址安装软件操作系统
zabbix 服务端172.16.88.44zabbix-server-mysql, zabbix-agentcentos 7.4
zabbix 客户端172.16.88.55zabbix-agent2centos 7.4

(1)关闭所有设备的防火墙和核心防护

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

(2)修改两台设备的主机名

[root@localhost ~]#hostnamectl set-hostname zbx_server
[root@localhost ~]#bash
 
[root@localhost ~]#hostnamectl set-hostname zbx_agent01
[root@localhost ~]#bash

2、部署 Nginx + PHP 环境并测试

2.1、安装 nginx

2.2、安装 php

[root@zbx_server ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@zbx_server ~]# yum install -y epel-release
[root@zbx_server ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@zbx_server ~]# yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring
php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath

2.3、修改nginx 配置

[root@zbx_server ~]# vim /etc/nginx/conf.d/zbx.conf

server {
  listen 80;
  #server_name zbx.abc.com;
  server_name 172.16.88.44;
  root /var/www/zbx;
  
  location / {
    index index.php;
  }
  
  location ~ \.php$ {
    root /var/www/zbx
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/zbx$fastcgi_script_name;
    include fastcgi_params;
  }
}

2.4、修改 php 配置

vim /etc/php-fpm.d/www.conf
.....
user = nginx
.....
group = nginx

vim /etc/php.ini

max_execution_time = 300		# 368行
max_input_time = 600			# 378行
post_max_size = 80M				# 656行
date.timezone = Asia/Shanghai	# 877行

2.5、创建目录和测试文件,启动服务

[root@zbx-server ~]# mkdir -p /var/www/zbx
 
[root@zbx-server ~]# vim /var/www/zbx/index.php
<?php
phpinfo();
?>
 
[root@zbx-server ~]# systemctl enable --now nginx php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

2.6、测试访问

直接浏览器访问:http://172.16.88.44/index.php

3、部署数据库,要求 MySQL 5.7 或 Mariadb 10.5 及以上版本

3.1、配置 Mariadb yum源

cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF
 
[root@zbx-server ~]# yum install -y mariadb-server mariadb
 
[root@zbx-server ~]# systemctl enable --now mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

3.2、初始化数据库

mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如123456) -> 后面一路 Y
 
mysql -u root -p123456

 

[root@zbx_server ~]# mysql -u root -p123456

create database zabbix character set utf8 collate utf8_bin;
grant  all on zabbix.* to 'zabbix'@'localhost' identified  by 'zabbix';
grant all on zabbix.* to 'zabbix'@'%' identified  by 'zabbix';
flush privileges;

3.3、向数据库导入 zabbix 数据

上传源码包 zabbix-6.0.13.tar.gz 到 /opt 目录
cd /opt
[root@zbx-server opt]# tar xf zabbix-6.0.13.tar.gz
 
[root@zbx-server opt]#ls /opt/zabbix-6.0.13/database/mysql
data.sql  double.sql  history_pk_prepare.sql  images.sql  Makefile.am  Makefile.in  schema.sql
 
#按照顺利导入数据库
[root@zbx-server opt]#cd /opt/zabbix-6.0.13/database/mysql
mysql -uroot -p123456 zabbix < schema.sql
mysql -uroot -p123456 zabbix < images.sql
mysql -uroot -p123456 zabbix < data.sql
mysql -uroot -p123456 zabbix < double.sql
mysql -uroot -p123456 zabbix < history_pk_prepare.sql

4、编译安装 zabbix Server 服务端

4.1、安装依赖包,创建 zabbix 用户

[root@zbx-server mysql]# yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
 
[root@zbx-server mysql]# useradd -s /sbin/nologin -M zabbix

4.2、编译安装

cd /opt/zabbix-6.0.13/
 export CFLAGS="-std=gnu99"   #" 用于在当前的终端环境中设置编译器的标志 CFLAGS,使得编译器在编译 C 代码时使用 GNU C99 标准。
  
./configure \
--sysconfdir=/etc/zabbix/ \
--enable-server \
--with-mysql \
--with-net-snmp \
--with-libxml2 \
--with-ssh2 \
--with-openipmi \
--with-zlib \
--with-libpthread \
--with-libevent \
--with-openssl \
--with-ldap \
--with-libcurl \
--with-libpcre
 
make install

4.3、检查版本

[root@zbx-server zabbix-6.0.13]# zabbix_server --version
zabbix_server (Zabbix) 6.0.13
Revision fdfa8cef9ce 1 February 2023, compilation time: Sep 23 2024 23:25:01

Copyright (C) 2023 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.0.2k-fips  26 Jan 2017
Running with OpenSSL 1.0.2k-fips  26 Jan 2017

4.4、修改 zabbix server 配置文件,修改数据库的密码

[root@zbx-server zabbix-6.0.13]# vim /etc/zabbix/zabbix_server.conf 
......
LogFile=/var/log/zabbix_server.log		# 38行,指定 zabbix 日志路径
DBPassword=zabbix					    # 123行,指定 zabbix 数据库的密码
 
#创建日志文件,并修改属组和属主权限
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log 

4.5、准备 systemctl 服务管理文件

[root@zbx-server zabbix-6.0.13]# vim /usr/lib/systemd/system/zabbix-server.service 
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service
 
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
 
[Install]
WantedBy=multi-user.target

systemctl daemon-reload 
systemctl enable --now zabbix-server
 
[root@zbx-server zabbix-6.0.13]# netstat -lntp | grep 10051     #zabbix_server 默认监听 10051 端口
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      32069/zabbix_server          

5、部署 Web 前端,进行访问

[root@zbx-server zabbix-6.0.13]# cp -r /opt/zabbix-6.0.13/ui/* /var/www/zbx    #设置的user和group为nginx
cp:是否覆盖"/var/www/zbx/index.php"? yes
[root@zbx-server zabbix-6.0.13]# chown -R nginx.nginx /var/www/zbx

浏览器访问:http://zbx.abc.com/     或  http://192.168.10.19
【Default language】选择 Chinese(zh_CN),点击下一步
【密码】输入 zabbix,点击下一步
【Zabbix主机名称】输入 Zabbix-监控;【默认时区】选择 Asia/Shanghai,点击下一步
 
安装完成后,默认的登录账号和密码为:Admin/zabbix

 

配置成功 

输入密码进入

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

6、安装 zabbix 客户端,实现 zabbix 服务端自我监控

rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
 
#zabbix 5.0 版本开始采用 golang 语言开发的新版本客户端 agent2
[root@zbx-server zabbix-6.0.13]# yum install -y zabbix-agent2

 
systemctl enable --now zabbix-agent2
 
netstat -lntp | grep 10050			#客户端 zabbix_agent2 默认监听 10050 端口

 

 

7、解决 zabbix-server Web页面中文乱码问题

yum install -y wqy-microhei-fonts
 
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /var/www/zbx/assets/fonts/DejaVuSans.ttf
 
刷新浏览器页面

三、添加 zabbix 客户端

1、部署环境

关闭防火墙和增强功能

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

2、服务端和客户端都配置时间同步

yum install -y ntpdate
ntpdate -u ntp.aliyun.com

3、服务端和客户端都设置 hosts 解析

cat > /etc/hosts << EOF
172.16.88.44 zbx-server
172.16.88.55 zbx-agent
EOF

4、设置 zabbix 的下载源,安装 zabbix-agent

rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
 
yum install -y zabbix-agent2

5、修改 agent 配置文件

[root@zbx-agent ~]# vim /etc/zabbix/zabbix_agent.conf
......
Server=172.16.88.44			#80行,指定 zabbix 服务端的 IP 地址
ServerActive=172.16.88.44		#133行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent			#144行,指定当前 zabbix 客户端的主机名

//启动 zabbix-agent2
systemctl start zabbix-agent
systemctl enable zabbix-agent
 
[root@zbx-agent ~]# netstat -natp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN      43820/zabbix_agent

 

 

6、在服务端验证 zabbix-agent2 的连通性

[root@zbx-server zabbix-6.0.13]# yum install -y zabbix-get				#安装 zabbix 主动获取数据的命令
 
[root@zbx-server zabbix-6.0.13]# zabbix_get -s '172.16.88.55' -p 10050 -k 'agent.ping'
1  

[root@zbx-server zabbix-6.0.13]# zabbix_get -s '172.16.88.55' -p 10050 -k 'system.hostname'
zbx-agent01

#常用的键值
agent.ping										   #服务端与客户端是否连通,返回1表示可达,返回非表示不可达
system.hostname										#系统主机名
agent.hostname									    #客户端主机名
net.if.in[if,<mode>]								#网络接口进入的流量统计,if表示网卡名称,带<>的参数表示可以省略
net.if.out[if,<mode>]								 #网络接口流出的流量统计
proc.num[<name>,<user>,<state>,<cmdline>,<zone>]		#进程数
net.tcp.port[<ip>,port]	                        #检查是否能建立tcp连接到指定端口,返回0表示不能连接,返回1表示可以连接

 

7、在 Web 页面中添加 agent 主机

点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】输入 zbx-agent01
【可见的名称】输入 zbx-agent01-172.16.88.55
【模板】搜索 Linux ,选择 Linux by Zabbix agent
【群组】选择 Linux servers
【Interfaces】点击添加 客户端,【IP地址】输入 172.16.88.55
 
#监控模板下载地址
https://share.zabbix.com/
https://monitoringartist.github.io/zabbix-searcher/
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates


http://www.kler.cn/a/321637.html

相关文章:

  • GitHub新手入门 - 从创建仓库到协作管理
  • 全面解读 USB Key:定义、使用场景、加密技术及 Java 实现
  • 03-axios常用的请求方法、axios错误处理
  • JVM双亲委派与自定义类加载器
  • 计算机网络 (4)计算机网络体系结构
  • ElasticSearch-全文检索(一)基本介绍
  • C#知识|基础知识点巩固拾遗
  • MySQL基础知识(二)
  • FBX福币连续2天破万亿,沪指重回3000点,后续怎么走?
  • 学习Java(三)
  • js发送邮件至指定邮箱功能实现方式和技巧?
  • 【系统架构设计师】专题:软件工程基础
  • 2024年9月27日历史上的今天大事件早读
  • 面向对象的三大特性:封装、继承、多态
  • AI/LLM 大模型入门指南
  • 探索EasyCVR视频融合平台:在视频编解码与转码领域的灵活性优势
  • 2024!再见前端!
  • TypeScript 设计模式之【备忘录模式】
  • 搜索插入位置
  • R包compareGroups详细用法
  • MySQL_插入、更新和删除数据
  • Android中大量使用建造者模式(Builder Pattern)的原因可以归结为以下几点:
  • VMware虚拟机Centos操作系统——配置docker,运行本地打包的镜像,进入conda环境(vmware,docker新手小白)
  • MySQL数据查询(基础)
  • 新React v19特性
  • 面试速通宝典——4