【zabbix】zabbix四大监控方式

zabbix四大监控方式

1、 Agent

顾名思义,也就是需要在被监控的操作系统安装agent,通过agent和server端通讯传输数据。

优点:

1、占用系统资源少,每个系统以200个监控项计算,平均占用资源不到0.5%,网络带宽不到10k/s;

2、支持被动、主动的方式传输数据;

3、支持接收远程执行命令,可配置关联触发器执行某些进程、服务重启操作;

4、支持自定义监控键值,根据监控需求自定义键值、脚本获取某些监控数据;

5、保留监控日志,如监控报错可通日志排查。

缺点:

需要逐台安装配置,解决办法,可在已下载免编译版本或者rpm安装包,编写安装脚本,一般安装方法是使用命令安装后,修改对应的参数,通常只需要修改Server、ServerActive、Hostname,如需要自动注册则另外配置Hostmetadata=system.name;后续可在zabbix server安装nginx,使用nginx做文件服务器,直接在linux上使用命令安装即可

2、 SNMP

SNMP也就是简单网络管理协议(Simple Network Management Protocol,是专门设计用于在IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议);通常需要结合设备的MIB(Management Information Base)文件使用。在网络设备,如交换机、路由器、防火墙、行为管理器、AP、AC、加密设备、防毒墙等,以及物理服务器、存储等支持snmp功能的都可以通过开启snmp相关的服务和配置(不同设备的snmp开启方法,建议参考帮助文档或者官方文档操作),用zabbix进行简单的数据监控。

当然,操作系统也可以使用snmp方式监控,但只能是监控到系统层面的运行情况,如cpu、内存、系统分区、网络流量,支持自定义oid,但是配置麻烦。

SNMP优点:

1、适用性广,主要应用在物理设备,snmp使用的设备性能可以忽略不计;

2、配置简单,在管理页面操作几下或者执行6条左右命令即可配置;

3、数据简洁,snmp功能的数据可读性比较简洁,通常一个oid对应一个数据。

缺点:

1、设备太多,需要根据厂家的帮助手册来配置;

2、每个厂家的mib文件大多私有,部分厂家不向外开放;

3、需要根据设备定制化snmp模板;

4、可监控性比较基础,基本上出厂内置,不易拓展性。

3、IPMI

IPMI(智能平台管理接口),Intelligent Platform Management Interface 的缩写。原本是一种Intel架构的企业系统的周边设备所采用的一种工业标准。通常是在物理服务器、存储设备最常见,用户可以通过IPMI进行设备的常规配置及管理,例如修改管理口IP、修改管理员账号信息、重启设备等操作,在zabbix还可以使用IPMI获取设备组件的运行状态,如主板、电源、风扇、传感器的运行状态、运行温度等,一般是在只支持IPMI的情况下使用,而且指标比较少,同一厂家不同型号之间的命令也不通用,用的比较少。

4、JMX

JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架 ,从Java5.0开始引入到标准Java技术平台中。也就是只适用于java语言开发的中间件,像Tomact、Jboss、Resin、Weblogic、IBM WAS、ActiveMQ等,国产的像中创、金蝶、东方通等都支持使用jmx获取运行数据,非国产的中间件多数可以在网络上找得到jmx的开启方式,国产的一般需要厂家的支持。JMX做为java类应用的一种监控方式,能通过开启jmx功能支持获取中间件的jvm运行状态、jvm的内存池、线程池、老年代青年代的垃圾回收、节点运行状态、会话数等信息。另外,JMX配置都有固定的格式,同时也支持加密方式,可以参考网上的案例或者官网文档自行配置。

设置 zabbix-snmp 监控

SNMP,简单网络管理协议

1.服务端安装 snmp 监控程序

yum install -y net-snmp net-snmp-utils

2.修改 snmp 的配置文件,并启动服务

vim /etc/snmp/snmpd.conf
view    systemview    included   .1             #57行,添加此配置

在这里插入图片描述
在这里插入图片描述

systemctl start snmpd

3.使用 snmp 命令测试

snmpwalk -v 2c -c public 127.0.0.1 sysname

在这里插入图片描述

SNMPv2-MIB::sysName.0 = STRING: zbx-server
-------------------------------------------------------
–v 1|2c|3:指定SNMP协议版本
–c:指定共同体字符串
sysname:为 snmp 的 key
-------------------------------------------------------

4.在 Web 页面配置 snmp 方式监控
点击左边菜单栏【配置】中的【主机】,点击 Zabbix server
【Interfaces】点击【添加】选择 SNMP ,端口设置成 161
点击上方菜单栏【模板】,【链接的模板】中的所有 agent 模板选择取消链接并清理
再在【Link new templates】中搜索 Linux SNMP,选择 Template OS Linux SNMP
点击 【更新】,等待一段时间后 Zabbix server 的可用性就变成了 SNMP 监控方式。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

zabbix监控tomcat的jvm内存

1.介绍

Zabbix Java Gateway 主要功能
  1. JMX 监控
    • 允许 Zabbix Server 从 Java 应用程序中收集监控数据。
    • 支持通过 JMX 获取各种性能指标,如内存使用、线程数、垃圾收集统计信息等。
  2. 代理角色
    • Zabbix Java Gateway 充当 Zabbix Server 和 Java 应用程序之间的代理。
    • Zabbix Server 将 JMX 请求发送到 Zabbix Java Gateway,后者再与 Java 应用程序的 JMX 接口通信。
使用场景
  1. 监控 Java 应用程序性能
    • 监控 JVM 内存使用情况(堆内存和非堆内存)。
    • 监控线程数和线程状态。
    • 监控垃圾收集器活动。
  2. 监控应用服务器
    • 监控 Tomcat、Jetty、GlassFish 等应用服务器的性能。
    • 获取应用服务器的连接数、请求处理时间等指标。
  3. 定制 JMX 监控项
    • 可以根据需要自定义监控项,监控特定应用程序的自定义 MBeans。

2.Zabbix Java Gateway 配置步骤

  1. 安装 Zabbix Java Gateway: 在 Zabbix Server 所在的机器上安装 Zabbix Java Gateway。可以通过包管理器(例如 yumapt)安装,或从源码编译安装。
yum install zabbix-java-gateway

2.配置 Zabbix Java Gateway: 编辑 zabbix_java_gateway.conf 文件,设置监听端口等配置参数。

 vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=5

在这里插入图片描述
3.启动 Zabbix Java Gateway

systemctl start zabbix-java-gateway
systemctl enable zabbix-java-gateway

在这里插入图片描述
4.配置 Zabbix Server: 在 Zabbix Server 配置文件中,指定 Zabbix Java Gateway 的 IP 地址和端口。

vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5

在这里插入图片描述

systemctl restart zabbix-server
  1. 在 Zabbix 前端添加 JMX 监控项
    • 在 Zabbix Web 界面上,配置主机并添加 JMX 接口。
    • 创建或导入包含 JMX 监控项的模板,并将其关联到主机。

通过以上配置,Zabbix 就可以使用 Java Gateway 来监控 Java 应用程序的 JMX 指标,从而提供全面的性能监控和告警功能。

3.在被控端的tomcat上开启jvm监控

 vim /usr/local/tomcat/bin/catalina.sh 

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345"

#-Dcom.sun.management.jmxremote:启用 Java 管理扩展(JMX)远程管理功能。JMX 是一种技术,允许监控和管理 Java 应用程序。通过启用远程 JMX可以使用 JMX 客户端从远程位置连接到运行 Tomcat 的 JVM。

#-Dcom.sun.management.jmxremote.authenticate=false:禁用 JMX 远程连接的认证功能。任何可以访问指定 JMX 端口的人都可以在不需要用户名和密码的情况下连接到它。

#-Dcom.sun.management.jmxremote.ssl=false:禁用 JMX 远程连接的 SSL(安全套接层)功能。SSL 用于加密网络上传输的数据,保护数据免受窃听和篡改。

#-Dcom.sun.management.jmxremote.port=12345:指定 JMX 远程管理代理监听传入连接的端口号未12345

#启动tomcat
/usr/local/tomcat/bin/startup.sh 

在这里插入图片描述
看到12345端口即可

[root@zbx-agent02 bin]# netstat -anp|grep 12345
tcp6       0      0 :::12345                :::*                    LISTEN      82292/java   

4.在zabbix-server上添加监控

4.1.添加主机

配置—主机—创建主机

主机名称:tomcat

群组:tomcat_group

这里不再使用agent代理程序而是使用jmx接口

JMX接口:192.168.99.182 12345
在这里插入图片描述

4.2.链接JMX模板

点击模板—选择Template App Generic Java JMX

Template App Generic Java JMX这个模板是通用的JMX模板

监控成功

JMX已经点量
在这里插入图片描述
在这里插入图片描述

监控项简介

1. 内存使用情况
堆内存 (Heap Memory)
  • Heap Memory Used: 已使用的堆内存量。监控堆内存的使用情况可以帮助你了解应用程序的内存消耗。
  • Heap Memory Committed: 已提交的堆内存量,即 JVM 从操作系统请求并分配的内存。
  • Heap Memory Max: 堆内存的最大值。这个值表示 JVM 能够使用的最大堆内存量。
非堆内存 (Non-Heap Memory)
  • Non-Heap Memory Used: 已使用的非堆内存量。非堆内存用于存储类的元数据和 JIT 编译代码等。
  • Non-Heap Memory Committed: 已提交的非堆内存量。
  • Non-Heap Memory Max: 非堆内存的最大值。
2. 垃圾收集 (Garbage Collection)
  • GC Count: 垃圾收集器执行的次数。不同的垃圾收集器(如 Young GC 和 Old GC)可能有不同的计数器。
  • GC Time: 垃圾收集器运行的总时间。监控垃圾收集时间可以帮助识别潜在的性能瓶颈。
3. 线程 (Threads)
  • Thread Count: 当前活跃线程的数量。这个值包括所有线程的总数。
  • Peak Thread Count: JVM 中曾经记录的最大活跃线程数。
  • Daemon Thread Count: 当前活跃的守护线程数。
  • Deadlocked Threads: 当前处于死锁状态的线程数。
4. 类加载 (Class Loading)
  • Loaded Class Count: 当前加载的类的数量。
  • Total Loaded Class Count: JVM 启动以来加载的类的总数。
  • Unloaded Class Count: JVM 启动以来卸载的类的总数。
5. JVM 运行时信息 (Runtime Information)
  • Uptime: JVM 的运行时间。可以帮助你了解 JVM 的稳定性和重启频率。
6. 操作系统信息 (Operating System Information)
  • Process CPU Load: JVM 进程的 CPU 使用率。
  • System CPU Load: 整个系统的 CPU 使用率。
  • Free Physical Memory: 系统中未使用的物理内存量。
  • Total Physical Memory: 系统中的总物理内存量。

zabbix监控mysql

客户端

准备数据库
mysql -u root -p
update mysql.user set authentication_string=password('Admin@123') where user='root';  

#创建数据库zabbix,用于存储收集的数据

CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;

#用户名zabbix,假设密码 Zabbix@123
grant all on *.* to 'zabbix'@'localhost' identified by 'Zabbix@123';
FLUSH PRIVILEGES;
创建mysql监控脚本
whereis zabbix

cd /etc/zabbix

sudo vim mysql_check.sh
#!/bin/bash
# 用户名
MYSQL_USER='zabbix'
# 密码声明在环境变量中,mysql可以自动读取该环境变量,也可以在mysql配置文件中添加用户、密码、ip、端口等信息
export MYSQL_PWD='Zabbix@123'
# 如果非本机mysql,需要IP和端口号,本机可以忽略
# 主机地址/IP     
#MYSQL_HOST='191.168.99.130'
# 端口
#MYSQL_PORT='3306'

mysql="mysql -u${MYSQL_USER}"
mysqladmin="mysqladmin -u${MYSQL_USER}"
case $1 in
 # mysql主从状态
 slave_status)
  $mysql -e "show slave status\G" |grep "Yes" |wc -l
 ;; 
 # mysql流量 接受
 Bytes_received)
  $mysqladmin extended-status |grep "Bytes_received" |awk '{print $4}'
 ;;
 # mysql流量 发送
 Bytes_sent)
  $mysqladmin extended-status |grep "Bytes_sent" |awk '{print $4}'
 ;;
 # mysql常规操作 增
 Com_insert)
  $mysqladmin extended-status |grep -w "Com_insert" |awk '{print $4}'
 ;;
 # mysql常规操作 删
 Com_delete)
  $mysqladmin extended-status |grep -w "Com_delete" |awk '{print $4}'
 ;;
 # mysql常规操作 改
 Com_update)
  $mysqladmin extended-status |grep -w "Com_update" |awk '{print $4}'
        ;;
 # mysql常规操作 查
 Com_select)
  $mysqladmin extended-status |grep -w "Com_select" |awk '{print $4}'
 ;;
 # mysql tps
 # TPS 指的是每秒钟系统能够处理的事务数量。事务的定义可能会根据具体的应用有所不同,但通常它指的是一组不可分割的操作。例如,在数据库中,一个事务可能包括多个 SQL 操作(如插入、更新、删除)。在电子商务系统中,一个事务可能指的是一次完整的用户购买操作,包括选择商品、支付、生成订单等步骤。
 tps)
  $mysqladmin status |awk '{print $6/$2}'
 ;;
 # mysql qps=(rollback+commit)/uptime
 # QPS 指的是每秒钟系统能够处理的查询数量。查询通常指的是单一的请求或操作,例如在搜索引擎中的一次搜索请求,或者在数据库中的一次 SELECT 查询。
 qps)
  rollback=$($mysqladmin extended-status |grep -w "Com_rollback" |awk '{print $4}')
  commit=$($mysqladmin extended-status |grep -w "Com_commit" |awk '{print $4}')
  uptime=$($mysqladmin status |awk '{print $2}')
  count=$((rollback+commit))
  echo "$count $uptime" > /tmp/a.txt
  cat /tmp/a.txt |awk '{print $1/$2}'
 ;;
 # 库大小 我们这里拿mysql库举例
 db)
  $mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql'" |sed -n '2p'
 ;;
 # 表大小 我们这里拿mysql下面的user表举例
 tb)
  $mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql' and table_name='user'" |sed -n '2p'
 ;;
 # 连接状态
 status)
  $mysqladmin ping  | grep -c alive
 ;;
esac
sudo chmod +x mysql_check.sh

如果想要省略mysql密码的配置
可直接在mysql配置文件my.cnf添加登录信息

[mysql]
host=localhost
user=zabbix
password=Zabbix@123

[mysqladmin]
host=localhost
user=zabbix
password=Zabbix@123
创建agent监测key
cd /etc/zabbix/zabbix_agent2.d

vim mysql_check.conf
# mysql.check[*] 表示一个可以接受一个或多个参数的用户参数
# 多个参数mysql.check[param1,param2,param3],同样脚本也需要传对应数量参数
# UserParameter=mysql.check[*,*,*],/etc/zabbix/scripts/mysql_check.sh $1 $2 $3

UserParameter=mysql.check[*],/etc/zabbix/mysql_check.sh $1

#监测key : mysql.check,并带上一个参数
#对应的shell 脚本 /etc/zabbix/scripts/mysql_check.sh
#需要一个参数 $1

#重启 zabbix-agent 服务

systemctl restart zabbix-agent2

服务端

验证

假设以上被控端内网 ip : 192.168.99.130

zabbix_get -s 192.168.99.130 -k mysql.check[db]

在这里插入图片描述

Zabbix WEB控制台增加监控模版
  1. 先计划好需要加上 mysql 监测的主机,建立一个主机群组(模版必须对应一个主机群组)

在这里插入图片描述

  1. 创建模板

在这里插入图片描述

  1. 创建应用集

在这里插入图片描述

  1. 创建监控项

    mysql.check[Bytes_received]
    
  2. 克隆并创建其他监控项

在这里插入图片描述

  1. 创建图形

这里我只创建了一个图形,就是表示流量的 2 个监控项
在这里插入图片描述
创建主机……

  1. 查看mysql流量数据
    在这里插入图片描述
### 如何使用 Zabbix 实现网络流量监控 #### 使用 Zabbix Server 进行配置 为了实现对网络流量的有效监控Zabbix 提供了多种途径来获取所需数据。一种常见的方式是利用 Simple Network Management Protocol (SNMP),这是一种广泛应用于 TCP/IP 网络上的标准协议,用于管理和监测连接到 IP 网络的各种设备的工作状况。 对于支持 SNMP 的路由器、交换机和其他网络设备而言,可以直接通过 SNMP 接口从这些设备中提取接口流量统计信息。具体来说,在 Zabbix 中创建一个新的主机条目时可以选择启用 SNMP 支持,并指定目标设备的相关参数如社区字符串等[^1]。 #### 设置 SNMP 监视项目 一旦完成了上述基本设置之后,则可以在所添加的主机下定义具体的监视项(Item)以跟踪特定类型的性能指标或状态变化。针对网络流量监控的需求,应该关注如下几个方面: - **Inbound Traffic**: 输入方向的数据包速率; - **Outbound Traffic**: 输出方向的数据包速率; - **Total Traffic**: 总体吞吐量(即输入加输出)。 每种类型都可以对应于相应 OID 下的一个计数器值,这取决于制造商提供的 MIB 文件结构。因此,当构建新的 Item 时需指明确切的对象标识符(OID)[^4]。 ```bash snmpwalk -v 2c -c public your_device_ip IF-MIB::ifHCInOctets snmpwalk -v 2c -c public your_device_ip IF-MIB::ifHCOutOctets ``` 以上命令展示了如何查询入站和出站字节数。请注意替换 `your_device_ip` 为实际设备IP地址,并确保使用的版本号(`-v`)与访问权限(`-c`)匹配目标设备的要求。 #### 创建触发器(Trigger) 除了单纯记录数值外,还可以设定阈值条件作为预警机制的一部分。例如,如果发现某段时间内的平均带宽利用率超过了预设的安全范围,则自动发出警报给相关人员知晓。这类逻辑判断可通过编写 Trigger 来达成目的。 #### 启动并验证 Agent 或 SNMP 服务 最后一步就是确认所有必要的后台进程都已经正常运作起来。如果是采用本地部署模式的话,那么就需要开启 zabbix-agent 并将其加入开机自启列表内;而对于依赖外部网元的情况则只需保证对方能够响应来自 Zabbix server 发起的轮询请求即可[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值