zabbix四大监控方式
- zabbix四大监控方式
- 1、 Agent
- 2、 SNMP
- 3、IPMI
- 4、JMX
- 设置 zabbix-snmp 监控
- zabbix监控tomcat的jvm内存
- 1.介绍
- Zabbix Java Gateway 主要功能
- 使用场景
- 2.Zabbix Java Gateway 配置步骤
- **3.在被控端的tomcat上开启jvm监控**
- 4.在zabbix-server上添加监控
- 4.1.添加主机
- 4.2.链接JMX模板
- 监控成功
- 监控项简介
- 1. 内存使用情况
- 堆内存 (Heap Memory)
- 非堆内存 (Non-Heap Memory)
- 2. 垃圾收集 (Garbage Collection)
- 3. 线程 (Threads)
- 4. 类加载 (Class Loading)
- 5. JVM 运行时信息 (Runtime Information)
- 6. 操作系统信息 (Operating System Information)
- zabbix监控mysql
- 客户端
- 准备数据库
- 创建mysql监控脚本
- 创建agent监测key
- 服务端
- 验证
- Zabbix WEB控制台增加监控模版
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 主要功能
- JMX 监控:
- 允许 Zabbix Server 从 Java 应用程序中收集监控数据。
- 支持通过 JMX 获取各种性能指标,如内存使用、线程数、垃圾收集统计信息等。
- 代理角色:
- Zabbix Java Gateway 充当 Zabbix Server 和 Java 应用程序之间的代理。
- Zabbix Server 将 JMX 请求发送到 Zabbix Java Gateway,后者再与 Java 应用程序的 JMX 接口通信。
使用场景
- 监控 Java 应用程序性能:
- 监控 JVM 内存使用情况(堆内存和非堆内存)。
- 监控线程数和线程状态。
- 监控垃圾收集器活动。
- 监控应用服务器:
- 监控 Tomcat、Jetty、GlassFish 等应用服务器的性能。
- 获取应用服务器的连接数、请求处理时间等指标。
- 定制 JMX 监控项:
- 可以根据需要自定义监控项,监控特定应用程序的自定义 MBeans。
2.Zabbix Java Gateway 配置步骤
- 安装 Zabbix Java Gateway: 在 Zabbix Server 所在的机器上安装 Zabbix Java Gateway。可以通过包管理器(例如
yum
或apt
)安装,或从源码编译安装。
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
- 在 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控制台增加监控模版
- 先计划好需要加上 mysql 监测的主机,建立一个主机群组(模版必须对应一个主机群组)
- 创建模板
- 创建应用集
-
创建监控项
mysql.check[Bytes_received]
-
克隆并创建其他监控项
- 创建图形
这里我只创建了一个图形,就是表示流量的 2 个监控项
创建主机……
- 查看mysql流量数据