day60-可观测性建设-全链路监控各种客户端
🌟zabbix各种客户端
客户端 | 监控方式 |
---|---|
linux | zabbix agent/zabbix agent2 |
windows server | zabbix agent/zabbix agent2 |
网络设备 | snmp接口与协议 |
硬件设备 | ipmi(物理服务器,监控风扇转速,cpu温度) |
java应用或业务 | 自定义监控(zabbix-agent+自定义)jmap-heap jvm信息导出(推荐) jmx javagateway监控 |
🌟监控windows设备
🌏window安装zabbix Agent2
🍀zabbix页面添加windows主机
🔍查看仪表盘
🌟监控网络设备
snmp: 简单网络管理协议,管理网络设备,查看网络设备信息
服务端:网络设备snmp服务端161端口
🛠️在 H3C 路由器上配置 SNMP
通过web页面或者命令行登录路由器(Console/SSH/Telnet),执行以下配置:
system-view# 设置 SNMP 版本为 v2c
snmp-agent sys-info version v2c# 配置只读团体名(例如:zabbix_ro)
snmp-agent community read zabbix_ro# (可选)限制访问源(推荐!)
snmp-agent acl 2000 # ACL 2000 允许 Zabbix Server IP# 保存配置
save force
🔐 安全建议:不要使用
public
,改用自定义名称;并通过 ACL 控制访问来源。
🖥️ 在 Zabbix 中添加 H3C 路由器
- Zabbix 官方没有内置 H3C 模板,但你可以使用社区提供的模板或手动创建。
- ✅ 推荐方案:导入社区 H3C 模板
GitHub 上有许多开源模板,例如:
👉 https://github.com/OneOof/zabbix-h3c
下载适用于 H3C 的 XML 模板文件(如 template_h3c_msr_snmpv2.xml
),然后:
- 进入 Zabbix:模板 → 导入
- 选择 XML 文件上传
- 确保勾选 “Templates”、“Items”、“Triggers”、“Graphs” 等选项
常见功能包括:
- 自动发现所有网络接口(LLD)
- 监控每个接口的进出流量、状态
- CPU 使用率
- 内存使用率
- 设备温度(如有传感器)
💡常用 OID 参考(H3C 私有 MIB)
H3C 使用私有 MIB(如 HH3C-OID
),以下是部分关键 OID:
指标 | OID | 说明 |
---|---|---|
CPU 利用率(5秒平均) | .1.3.6.1.4.1.25506.2.6.1.1.1.1.6.0 | HH3C-DENTITY-EXT-MIB::hh3cCPUUsage |
内存使用率 | .1.3.6.1.4.1.25506.2.6.1.1.1.1.8.0 | hh3cMemUsage |
接口数量 | .1.3.6.1.2.1.2.1.0 | ifNumber |
接口描述表 | .1.3.6.1.2.1.2.2 | ifTable(标准 MIB-2) |
温度传感器 | .1.3.6.1.4.1.25506.2.6.1.1.1.1.11.* | 视设备型号而定 |
💡 提示:可以使用
snmpwalk
测试是否能获取数据:
yum install -y net-snmpsnmpwalk -v 2c -c zabbix_ro 192.168.1.1 .1.3.6.1.4.1.25506.2.6.1.1.1.1.6.0
-v指定版本
-c指定密码 团体名字
🔔设置告警触发器
建议添加以下触发器:
触发器名称 | 表达式示例 | 说明 |
---|---|---|
CPU 使用率过高 | {H3C-Router-Main:hh3c.cpu.usage.last()}>80 | 超过 80% 告警 |
内存使用率过高 | {H3C-Router-Main:hh3c.memory.usage.last()}>90 | 超过 90% 告警 |
接口 down | {H3C-Router-Main:ifOperStatus["GigabitEthernet0/0"].last()}=2 | 2 表示 down |
高丢包率 | {H3C-Router-Main:icmppingloss.avg(5m)}>20 | 最近5分钟平均丢包 >20% |
✅ 完整步骤
步骤 | 内容 |
---|---|
1 | 在 H3C 路由器上启用 SNMP(v2c/v3)并设置访问权限 |
2 | 在 Zabbix Web 中添加主机,填写 SNMP 接口和认证信息 |
3 | 导入 H3C 社区模板(XML 格式) |
4 | 关联模板到主机 |
5 | 查看“最新数据”确认数据采集正常 |
6 | 设置触发器和告警通知(邮件/微信/钉钉等) |
7 | (可选)配置自动发现、图形、Dashboard 展示 |
🌟监控java应用
🔍查看java进程堆内存状态
jhsdb jmap --heap --pid pid
🌈客户端自定义监控项
- 编写监控脚本
vim /server/scripts/check_java.sh#!/bin/bash
##############################################################
# File Name:/server/scripts/check_java.sh
# Version:V1.0
# Author:zbl
# Organization:zhubaolin.blog.csdn.net
# Desc:
##############################################################
#1.vars
choice=$1
name=3.9.0#2.获取pid
pid=`docker exec exam_v1 jps -lvm |& grep ${name} | awk '{print $1}'`#3.case语句指定各种指标名字
case "$choice" in maxsize) maxsize=`docker exec exam_v1 jhsdb jmap --heap --pid $pid|grep MaxHeapSize |awk '{print $3}'`echo $maxsize;;edenfree) free=`docker exec exam_v1 jhsdb jmap --heap --pid $pid |grep -A4 'Eden Space'|awk 'NR==4{print $3}'`echo $free;;*) echo 666
esac
- 修改客户端配置文件
vim /etc/zabbix/zabbix_agent2.d/web-java.conf
UserParameter=web.java[*],sudo /bin/bash /server/scripts/check_java.sh "$1"
- 修改sudoers文件
vim /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
- 重启zabbix_agent2服务
systemctl restart zabbix-agent2.service
- 客户端测试
zabbix_agent2 -t web.java[maxsize]
zabbix_agent2 -t web.java[edenfree]
- 服务端测试
zabbix_get -s 172.16.1.9 -k web.java[maxsize]
zabbix_get -s 172.16.1.9 -k web.java[edenfree]
🍀web页面添加监控项
- MaxHeapSize监控项
- Heap Usage:free监控项
🔍查看最新数据
🛠️故障案例
- 故障现象
- 故障原因
- jmap同一时间只能运行一次
- 解决方法
- 修改监控时间间隔
- 判断文件是否存在,存在则读取文件内容进行过滤,不存在则运行jmap命令,重新生成文件。
- zabbix特殊监控–>相关项监控
🌟相关项监控java应用
- 从主要项结果使用正则表达式进行过滤,取出某个指标
perl正则表达式
\d:[0-9]
\s:空白字符(空格、制表符、换行等)
\w:单词字符 [a-zA-Z0-9_]#过滤maxsize
MaxHeapSize\s+= (\d+).*#过滤Eden space
Eden Space:\s+capacity\s+= (\d+).*\s+used\s+= (\d+).*\s+free\s+= (\d+).*
🎯客户端自定义主要项
- 编写监控脚本
vim /server/scripts/check_java.sh#!/bin/bash
##############################################################
# File Name:/server/scripts/check_java.sh
# Version:V1.0
# Author:zbl
# Organization:zhubaolin.blog.csdn.net
# Desc:
##############################################################
#1.vars
choice=$1
name=3.9.0#2.获取pid
pid=`docker exec exam_v1 jps -lvm |& grep ${name} | awk '{print $1}'`#3.获取指标名字
docker exec exam_v1 jhsdb jmap --heap --pid $pid
- 修改客户端配置文件
UserParameter=web.java.all,sudo /bin/bash /server/scripts/check_java.sh
- 添加zabbix用户到sudoers文件中
zabbix ALL=(ALL) NOPASSWD: ALL
- 重启zabbix客户端服务
systemctl restart zabbix-agent2.service
- 客户端测试
zabbix_agent2 -t web.java.all
- 服务端测试
zabbix_get -s 172.16.1.9 -k web.java.all
🍀web页面添加监控项
- 添加主要项
- 添加相关项(maxsize)
- 添加相关项(edenfree)
💾创建模板
- 创建jar模板
- 添加监控项
- 查看模板
总结
- 监控windows设备、网络设备
- 自定义监控java应用
- 相关项监控java应用