当前位置: 首页 > ops >正文

day60-可观测性建设-全链路监控各种客户端

🌟zabbix各种客户端

客户端监控方式
linuxzabbix agent/zabbix agent2
windows serverzabbix 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),然后:

  1. 进入 Zabbix:模板 → 导入

  1. 选择 XML 文件上传
  2. 确保勾选 “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.0HH3C-DENTITY-EXT-MIB::hh3cCPUUsage
内存使用率.1.3.6.1.4.1.25506.2.6.1.1.1.1.8.0hh3cMemUsage
接口数量.1.3.6.1.2.1.2.1.0ifNumber
接口描述表.1.3.6.1.2.1.2.2ifTable(标准 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()}=22 表示 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应用

http://www.xdnf.cn/news/15969.html

相关文章:

  • 基于 Vue,SPringBoot开发的新能源充电桩的系统
  • MSTP技术
  • 4.组合式API知识点(2)
  • 微算法科技(NASDAQ: MLGO)探索优化量子纠错算法,提升量子算法准确性
  • Unity之C# 脚本与Unity Visual Scripting 交互
  • linux初识网络及UDP简单程序
  • 如何给手机充电才不伤电池?
  • css3地球转动模型(动态数据)
  • 快手视觉算法面试30问全景精解
  • spring事务?
  • uniapp 报错 Not found ... at view.umd.min.js:1的问题
  • Vue3 学习教程,从入门到精通,Vue3 循环语句(`v-for`)语法知识点与案例详解(13)
  • 渗透第2次作业
  • 学习游戏制作记录(战斗系统简述以及击中效果)7.22
  • Mixed Content错误:“mixed block“ 问题
  • Kotlin 中的单例模式(Singleton)与对象声明
  • SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:权限管理(三)
  • Android开发:Java与Kotlin深度对比
  • 用ffmpeg 进行视频的拼接
  • ni-app 对鸿蒙的支持现状
  • Redis的五大基本数据类型
  • 有关Spring的总结
  • 【每日算法】专题十七_多源 BFS
  • React基础(1)
  • 【HarmonyOS】ArkUI - 声明式开发范式
  • 空间曲线正交投影及其距离计算的理论与实践
  • Anaconda 路径精简后暴露 python 及工具到环境变量的配置记录 [二]
  • 苍穹外卖Day5
  • JAVA+AI教程-第三天
  • 使用Python绘制专业柱状图:Matplotlib完全指南