58、Zabbix通过SNMP监控网络

Zabbix通过SNMP监控网络说明

1. SNMP(简单网络管理协议)概述

  • 定义:SNMP 是一种用于网络管理的协议,用于监控和管理网络设备。
  • 版本:SNMP 有三个常用版本:SNMPv1、SNMPv2 和 SNMPv3。其中,SNMP三种版本
    SNMP v1 最早的SNMP协议 不支持加密算法
    SNMP V2 兼容v1版本支持更多数据类型和错误代码 常用版本
    SNMP V3 增加了认证和加密功能,避免非法访问验证效率低
  • 应用:SNMP 被广泛应用于各种网络管理系统(NMS),如 BMC 的 Patrol、CA 的 Unicenter、Sun Management 控制台、IBM 的 Tivoli Netview 以及全球著名的 HP Openview。NMS 的目标是提供一个监控和管理所有启用 SNMP 功能的设备的单一入口。

2. SNMP 的工作原理

  • 通讯端口
  • 161 端口:用于 SNMP 消息(SNMP Message)。
  • 162 端口:用于 SNMP Trap 消息(SNMP Trap Message)。
  • 基本组成部分
  • 管理站(Manager):负责发送请求和接收响应。
  • 被管理代理(Agent):运行在网络设备上的软件或硬件,用于收集和报告设备状态。
  • 管理信息库(MIB):存储设备的管理信息,每个代理都有自己的 MIB。

3. SNMP 的数据表示方式(监控方式)

  • OID(对象标识符)
  • 数字表示法:例如 1.3.6.1.2.1.25.2.2.0,用于获取内存大小。
  • MIB 表示法
  • 字符串表示法:例如 hrMemorySize,用于获取内存大小。

4. 参考资源

  • OID 和 MIB 大全:可以参考 OID 和 MIB 大全 获取更多关于 OID 和 MIB 的信息。

总结

  • SNMP 是一种用于网络管理的协议,通过 UDP 端口 161 和 162 进行通讯。
  • Zabbix 可以通过 SNMP 监控网络设备,利用 OIDMIB 获取设备的状态信息。
  • SNMP 的三个基本组成部分(管理站、被管理代理、管理信息库)协同工作,实现对网络设备的监控和管理。

配置snmp

#1.客户端安装snmp,snmp端口161
[root@web02 /etc/zabbix_agentd.conf.d]# yum -y install net-snmp

#2.配置
[root@web02 ~]# vim /etc/snmp/snmpd.conf
[root@web02 ~]# awk 'NR==41;NR==55;NR==117' /etc/snmp/snmpd.conf 
com2sec notConfigUser  default       public
view    systemview    included   .1.
group   notConfigGroup  v2c             notConfigUser
意思分别是,41行取个组名public,55行从.1.开始表示,117开启使用v2版本
[root@web02 ~]# systemctl enable --now snmpd
[root@web02 ~]# netstat -tupln | grep 161

#3.监控端安装取值工具,net-snmp-utils
[root@zabbix ~]# yum -y install net-snmp-utils

#4.监控端取值测试。。
[root@zabbix ~]# snmpwalk -v2c -c public 172.16.1.8 SysName
SNMPv2-MIB::sysName.0 = STRING: web02
[root@zabbix ~]# snmpwalk -v2c -c public 172.16.1.8 .1.3.6.1.2.1.25.2.2.0
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 454812 KBytes
#【OID 和 MIB 大全】https://www.cnblogs.com/cqx6388/p/17235747.html
  • zabbix图像化配置snmp监控

zabbix自动发现服务器

  • Zabbix 自动发现功能通过扫描地址段自动识别存活服务器,并自动添加主机、关联模板和报警等。但存在扫描速度慢、服务器压力大,以及所有客户端只能使用统一模板(需手动调整)的缺点。
  • 可以批量发现服务器并自动添加
  • 缺点:扫描速度慢,Server压力大:扫描大量IP地址时,耗时长且占用较多服务器资源,可能影响性能。模板统一化问题:所有发现的客户端使用相同模板,无法根据服务器类型(如Web、数据库)自动匹配不同模板,需手动调整。

配置:

1.配置–>自动发现–>启用–点进去

image-20250201194842258

2.配置客户端,更改zabbix名称

#需要更改配置文件,名字修改一下,要不然所有主机都叫zabbixserver
#如果要是多台100台,使用ansible的j2模版ansible_hostanme变量
[root@web02 ~]# awk 'NR==172' /etc/zabbix_agentd.conf
Hostname=web02
[root@web02 ~]# systemctl restart zabbix-agent.service 

3.添加动作,扫描到后干什么

动作–>左上角发现动作–>启用–点进去

image-20250201195824349
  • 注:如果自动添加没反应,重启客户端和服务端zabbix试试

zabbix自动注册

说明:

服务端主动问客户端要数据:服务端为主动模式、客户端主动提交数据给服务端:服务端为被动模式

客户端主动将自身信息上传给服务器用来减少服务器端的压力。

根据需求调整自动还是被动模式。

  • Zabbix 服务端:默认主动模式,我主动去抓取客户端的数据(10s)。
  • 被动模式:等着客户端主动将数据提交给服务器端。

适用场景

  • 当网络较复杂的情况。
  • 当服务器配置一般的情况。
  • 裂图了,服务器负载高了,再改。没问题就别碰

操作建议

  • 修改模板监控项为主动上报模式。

1.客户端配置为主动模式

#更改agent配置文件,指向服务端ip,更改主机名
ServerActive=172.16.1.81
Hostname=web01

2.设置自动注册

  • 因为客户端上报给我数据,所以不需要自动发现,关闭自动发现
  • 直接设置动作即可
  • 动作–>自动注册动作–>创建动作–>主机名称包含web的(也可以在创建其他动作比如包含db的)
image-20250201211235798
image-20250201211405004

3.设置数据为,主动上报模式

配置–>模版–>点击要更改的模版–>全选–>批量更新–>类型改为主动式

image-20250201212317010
image-20250201213246322

zabbix分布式代理

image-20250201215447983

Zabbix Proxy 的核心功能

  1. 数据中转
    Proxy 代替 Server 从被监控设备的 Agent 收集数据,并批量转发给 Server,减少 Server 的直接连接数。
  2. 离线缓存
    在网络中断时,Proxy 可暂存监控数据(需本地数据库支持),待恢复后同步至 Server,避免数据丢失。
  3. 分布式架构
    支持跨地域、跨网络分区的监控,降低带宽消耗和延迟。
  4. 配置同步
    Proxy 从 Server 获取监控配置(如监控项、触发器),确保策略一致性。

场景 1:多数据中心监控

  • 背景
    某公司在北京(总部)和上海(分部)各有一个数据中心,需监控两地共 500 台服务器。
  • 问题
    若所有 Agent 直连北京 Zabbix Server,会导致:
  • 高延迟(上海到北京的网络延迟)。
  • Server 处理压力过大(500 个并发连接)。
  • 单点故障风险。
  • 解决方案
  1. 在北京和上海分别部署 Zabbix Proxy
  2. 北京数据中心 300 台服务器由北京 Proxy 监控。
  3. 上海数据中心 200 台服务器由上海 Proxy 监控。
  4. 两个 Proxy 异步将数据汇总至北京 Zabbix Server。
  • 优势
  • Server 仅处理 2 个 Proxy 的连接,负载大幅降低。
  • 上海服务器数据通过本地 Proxy 收集,减少跨地域带宽占用。

场景 2:隔离网络环境

  • 背景
    某企业内网分为生产网办公网,两者通过防火墙隔离,仅允许特定端口通信。
  • 问题
    生产网服务器不能直接访问办公网的 Zabbix Server。
  • 解决方案
  1. 在生产网内部署 Zabbix Proxy
  2. Proxy 配置为主动模式,通过防火墙放行的端口(如 10051)主动连接办公网的 Server。
  3. 生产网 Agent 将数据发送至本地 Proxy,Proxy 再转发至 Server。
  • 优势
  • 遵守网络安全策略,无需开放过多端口。
  • 生产网监控数据通过代理集中传输,便于管理。

Zabbix Proxy支持功能概述表

功能proxy支持(yes/no)
项目 (Items)
Zabbix agent checksYes
Zabbix agent checks (active)Yes 1
Simple checksYes
Trapper itemsYes
SNMP checksYes
SNMP trapsYes
IPMI checksYes
JMX checksYes
日志文件监控 (Log file monitoring)Yes
内部检查 (Internal checks)Yes
SSH checksYes
Telnet checksYes
外部检查 (External checks)Yes
内置web监控 (Built-in web monitoring)Yes
网络发现(Network discovery)Yes
自动发现 (Low-level discovery)Yes
触发器计算 (Calculating triggers)No
处理事件 (Processing events)No
发送报警 (Sending alerts)No
远程命令 (Remote commands)No

实战配置:

image-20250201220901696

代理服务器配置:

  • 只是数据转发,不需要配置页面,nginx和php
  1. 下载 MySQL 8.0 版本
   [root@web01:~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-1.e18.x86_64.rpm-bundle.tar
  1. 解压数据库
   [root@web01:~]# tar xf mysql-8.0.36-1.e18.x86_64.rpm-bundle.tar
  1. 安装 MySQL 依赖包
   [root@web01 ~]# rpm -ivh mysql-community-common-8.0.36*
   [root@web01 ~]# rpm -ivh mysql-community-client-plugins-8.0.36*
   [root@web01 ~]# rpm -ivh mysql-community-libs-8.0.36*
   [root@web01 ~]# rpm -ivh mysql-community-client-8.0.36*
   [root@web01 ~]# rpm -ivh mysql-community-icu-data-files*
   [root@web01 ~]# rpm -ivh mysql-community-devel-8.0.36*
   [root@web01 ~]# rpm -ivh mysql-community-server-8.0.36*
  1. 启动 MySQL 服务
   [root@web01 ~]# systemctl start mysqld
  1. 进入数据库修改密码
  • 查看随机生成的密码: [root@webo1:~]# cat /var/log/mysqld.log | grep root@local 2024-09-23T02:33:31.213883Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: kfbi5ajupw<k
  • 修改密码: [root@webo01:~]# mysql -uroot -p'kfbi5aJupw<k' mysql> alter user root@localhost identified by 'haoshuaicong123.com';
  1. 创建 Zabbix 数据库和用户
   mysql> create database zabbix character set utf8 collate utf8_bin;
   mysql> create user 'zabbix'@'localhost' identified by 'haoshuaicong123.com';
   mysql> ALTER USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'haoshuaicong123.com';
   mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
  1. 下载 Zabbix 源码并导入 Proxy 数据库
  • 代理服务器就导入这一个库就可以
  • 需要下载源码,或者去zabbix服务端拷贝一份
   [root@web01:~]# wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.45.tar.gz
   [root@web01:~]# cd zabbix-5.0.43/database/mysql/
   [root@web01:mysql]# mysql -uzabbix -p'haoshuaicong123.com' zabbix < schema.sql
  1. 安装编译依赖
   [root@web01:zabbix-5.0.43]# yum -y install libxml2 libxml2-devel net-snmp-devel curl-devel libevent-devel
  1. 配置 Zabbix Proxy
   [root@web02 ~/zabbix-5.0.45]# cd /root/zabbix-5.0.45/
   [root@web01:zabbix-5.0.43]# ./configure --prefix=/usr/ --enable-proxy --with-net-snmp --with-mysql
   看一下有没有Enable proxy yes成功
  1. 编译并安装 [root@web01:zabbix-5.0.43]# make && make install
  2. 修改 Proxy 配置文件连接数据库信息 [root@web01:~]# cd /usr/etc/ [root@web01:etc]# grep DB zabbix_proxy.conf Server=10.0.0.81 Hostname=shenzhen_proxy DBName=zabbix DBUser=zabbix DBPassword=haoshuaicong123.com
  3. 启动 Zabbix Proxy [root@web01!]# zabbix_proxy [root@web01!]# netstat -tnulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1094428/zabbix_agen tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 1272514/zabbix_prox
  4. 修改 web02客户端指定到代理服务器 [root@web02:~]# egrep '172.16.1.7|web02' /etc/zabbix_agentd.conf Server=172.16.1.8 ServerActive=172.16.1.8 Hostname=web02 [root@web02:~]# systemctl restart zabbix-agent
  5. Zabbix 界面添加 Proxy 代理
    • 管理–>proxy–>创建proxy
    • 通过代理添加主机
image-20250202133512915
  • 通过代理方式添加主机
image-20250202133838852
image-20250202133932247

zabbix-java-gateway配置

  • zabbix通过zabbix-java-gateway实现对java进行监控,java的网关
  • 监控java使用mx协议
  • 服务端10.0.0.81,zabbix-java-gateway:10.0.0.7,taomcat:10.0.0.8
image-20250202181610158

服务端配置

#1.安装 JDK
[root@web02:~]# rpm -ivh jdk1.8-1.8.0_181-fcs.x86_64.rpm

#2.下载并解压 Tomcat
[root@web02:~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
[root@web02:~]# tar -xf apache-tomcat-9.0.95.tar.gz
[root@web02:~]# mv apache-tomcat-9.0.95 /usr/local/tomcat

#3.配置 Tomcat 开启 JMX 协议
[root@web02:~]# head -10 /usr/local/tomcat/bin/catalina.sh
#!/bin/sh \
CATALINA_OPTS="$CATALINA_OPTS  \
-Dcom.sun.management.jmxremote \
-Djava.rmi.server.hostname=10.0.0.8 \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"

#4.启动 Tomcat
[root@web02:~]# /usr/local/tomcat/bin/startup.sh
[root@web02:~]# netstat -tnulp
tcp6       0      0 :::8080     :::*                LISTEN      116117/java
tcp6       0      0 :::12345    :::*                LISTEN      116117/java

#5.在 Zabbix Server(服务端81) 上配置 Java Gateway网关为51
#5.修改 Zabbix Server 配置文件
[root@zabbix ~]# egrep "JavaGateway" /usr/local/etc/zabbix_server.conf
JavaGateway=10.0.0.7  #谁是java的网关,就配置哪个服务器的ip
JavaGatewayPort=10052 #端口
StartJavaPollers=2    #启动进程数量

中间服务器java网关配置

  • 虽然可以将 Java Gateway 安装在监控端或服务端,但为了性能、安全性和维护的便利性,建议将其部署在独立的中间服务器上。

在 dbo01 编译安装 Java Gateway

[root@db01:~]# yum -y install zabbix-java-gateway
[root@db01:~]# systemctl start zabbix-java-gateway.service

(如果yum安装不上,以下为编译安装教程)

#1.找到zabbix源码包,解压并cd进去,看官方Java Gateway编译安装教程
[root@web01 ~/zabbix-5.0.45]# wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.45.tar.gz

#2.安装所需依赖,java环境(jdk)和一些其他依赖
[root@web01 ~/zabbix-5.0.45]# yum -y install libxml2 libxml2-devel net-snmp-devel curl-devel libevent-devel
[root@web01 ~/zabbix-5.0.45]# rpm -ivh /root/jdk-8u181-linux-x64.rpm


#3.编译安装
[root@web01 ~/zabbix-5.0.45]# ./configure --enable-java
[root@web01 ~/zabbix-5.0.45]# make && make install

#4.启动和关闭脚本位置
[root@web01 /usr/local/sbin/zabbix_java]# ll /usr/local/sbin/zabbix_java
drwxr-xr-x 2 root root   44 Feb  2 17:49 bin
drwxr-xr-x 2 root root  176 Feb  2 17:49 lib
-rw-r--r-- 1 root root 1382 Feb  2 17:49 settings.sh
-rwxr-xr-x 1 root root  545 Feb  2 17:49 shutdown.sh
-rwxr-xr-x 1 root root 1913 Feb  2 17:49 startup.sh
[root@web01 /usr/local/sbin/zabbix_java]# /usr/local/sbin/zabbix_java/startup.sh

zabbix页面添加主机JMX协议

配置–主机–创建主机

image-20250202180645425
image-20250202180904494
image-20250202181045170
image-20250202181752993

zabbix优化

zabbix优化:

  1. 高并发需要对MySQL进行拆分(独立的db服务器或者db集群)
  2. zabbix-agent被动上传修改为主动上报模式
  3. 地区较多情况尽量或者网络复杂情况使用proxy代理模式
  4. 系统自带监控项优化
  5. 进程优化(如果zabbi-server繁忙,配置文件增大Pollers,前提是本机负载够用)
  6. 缓存优化

面试题: zabbix监控过哪些内容

  1. 监控主机硬件信息内存 CPU 负载 磁盘IO
  2. 监控系统重要的配置文件、代码文件防黑客篡改(文件自带有值)
  3. 监控服务是否正常(通过取端口号或者进程号)
  4. 监控服务,软件业务的状态信息(nginx状态信息 数据库的状态信息 增删改查 订单量 慢查询)
  5. 监控业务调用接口 curl状态返回
  6. 业务数据监控 日志监控。日志状态码 客户端IP地址
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇