Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能

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

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

zabbix由2部分构成,zabbix server与可选组件zabbix agent。

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片1

一、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之间直接进行数据交互。

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片2

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

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片3

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 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片4

二、安装部署 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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片5

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;
  }
}

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片6

2.4、修改 php 配置

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片7

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片8

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.

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片9

2.6、测试访问

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片10

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.

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片11

3.2、初始化数据库

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片12

[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;

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片13

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片14

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片15

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片16

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片17

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片18

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片19

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片20

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片21

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片22

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片23

配置成功 

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片24

输入密码进入

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片25

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 端口

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片26

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片27

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片28

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片29

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片30

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表示可以连接

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片31

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

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片32

Zabbix 监控系统:基于WEB界面的提供分布式系统监视以及网络监视功能-图片33

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/A6985HG/article/details/142488253

————————————————

广告也精彩
 
老罗爱折腾
  • 本文由 老罗爱折腾 发表于2024 年 9 月 25 日 00:07:58
  • 转载请务必保留本文链接:https://www.130510.com/1306.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证