系统监控之SNMP协议理解
使用Mycat分布式数据库中间件时需要对各个性能指标进行监控,官方已经提供了一个监控软件,于是讨论起来监控是怎么具体可能有哪些实现,虽然知道已经有很多的监控软件可以使用,比如zabbix,但是今天听同事说有一个叫做SNMP的协议,是专门用在环境监控方面的,回头一查发现这竟然是行业标准,而且zabbix也是基于这个协议实现的,本着不折腾不舒服的精神,调查了一番总结如下,主要分成两个部分:
- snmp协议的内容总结;
- 通过编程获取snmp协议中传递的信息;
本文主要着重在snmp协议的内容以及具体的结构,下一篇会通过Java 来获取snmp中传递的信息。
snmp已经发展出了三个版本,由于本文只是做一个总结,所以不涉及版本信息。
1. snmp协议的应用场景
snmp的中文名是简单网络管理协议,是Simple Network Management Protocol的简称,而且是一个应用层协议,等于和http是平级,但是差别咋就这么大呢?什么用处呢?用来在网络实体和节点之间交换管理或者监控信息,这是官方说法。简单点来说就是打小报告的,只不过这里打小报告的是程序而不是人,被报告的是机器或者操作系统而不是人。
为什么用这个东西?简单来说,就是为了方便偷懒,当开始时一个公司中的计算机不是很多,运维人员还可以一个一个去查看是什么问题,但是如果一家公司的计算机有成百上千台,还能去一个一个看吗?当然不能了,说能的人出门右转是精神病院,这也不是跑马拉松,没有必要这么锻炼,所以这个协议应运而生,想一想自己坐在办公室,一边看着各个计算机和服务器给你发来的监控信息,一边撩着妹子,感觉是不是很爽(发明这个协议的人当初是不是也当过单身狗),而且只要预先部署好,服务器出什么问题还会报警,这简直是运维人员的福利呀!!
2. snmp的具体内容
2.1 snmp的组成
在snmp中一般来说由三种组件组成:
- 网络设备:指在网络中需要管理和监控的设备,例如提供服务的服务器、路由器等,这些设备必须支持snmp协议;
- 管理组件:一般来说指的是运行网络管理系统的计算机(也可以指在这个计算机上运行的监控软件),这个计算机可能与被管理的网络设备在地理上隔绝的,但是可以远程监控和管理网络设备,例如网吧的网管的电脑就可以看做一个管理组件,可以用来监控每个电脑的运行,以及管理你上网的时间并提出预警;
- 代理Agent:这是指运行在被管理设备上的一个软件模块,用来维护被管理设备的管理信息数据并可在需要时把管理数据发送给管理组件;
- 代理保有MIB(Management Information Base)对象变量,可以从管理信息库MIB收集信息并回传给管理组件;
- MIB库是一个保存网络管理信息的虚拟数据存储空间,由多组被管理对象组成。在网络设备的MIB库中有由多个MIB模块定义的多组各自相关联的对象,其实说白了里面存储的是网络设备的属性,比如什么CPU信息、IO读写率等等;
2.2 snmp中组件之间的通信
2.2.1 snmp的通信协议和数据格式
首先要明确的是snmp协议是应用层协议,所以它的通信底层实现还是要靠TCP协议或者UDP协议,至于使用的是哪一种协议?就要思考一下snmp的应用场景,它是用来进行监控的,要不影响其他任务的执行,所以最好要简单一些并且效率高一些,那么这就是UDP协议了,而且还省去了握手的麻烦!
由于UDP协议是把数据打包成一个一个的数据报发送出来,那么具体的监控信息是怎样打包到其中的呢?这就涉及到组件之间通信的消息格式。管理组件与Agent代理之间以协议数据单元PDU(Protocol Data Unit,PDU)进行通讯,数据在进行网络传输前必须进行分块和封装,在SNMP信息传输的过程中,数据首先会被封装成PDU,PDU再被UDP协议封装进行传输。具体的数据格式是什么样的,参考相关文章中的第一篇。
2.2.2 snmp的通信过程
snmp是一个请求/响应式的协议,它的通信过程有三种:
- 请求(读get)数据:管理组件发起请求读取变量,Agent代理返回从MIB中读取的变量数据;
- get请求:用以从agent上获取指定OID(可以理解为设备属性的Id)对应的一条或多条值;
- get-next请求:与get类似,最明显的区别是GETNEXT获取指定OID在系统树中所处位置的下一个OID,在snmp协议中被管理对象用一个树来组织,被管理对象用OID表示;
- 修改(写set)数据:管理组件发起请求通过Agent代理来修改网络设备上的一些配置值;
- 报警获取数据(trap):Agent代理使用trap向管理组件发出请求,用来报告网络设备上的一个异常情况以便管理组件能够知晓,类似于事件的回调函数;
相关文章:
- SNMP概述–运维必知的协议基础
- 用SNMP协议实现系统监控
- 使用 SNMP 和 Cacti 监控 Linux 服务器
- SNMP(协议)技术系列专题汇总
- SNMP 原理与实战详解
- 网络协议:SNMP协议深入分析和学习笔记
- java利用snmp4j包来读取snmp协议数据(Manager端)
- SNMP 协议 OID的设计思路
系统监控之SNMP协议理解相关推荐
- 用SNMP协议实现系统监控
系统监测的基本概念及分类: a.系统监测的概述: 如何对现有IT架构的整体以及细节运行情况进行科学.系统和高效地监测是目前各企业运维和管理部门一项非常重要的工作内容.随着当前企业IT环境中服务器.应用 ...
- zabbix 利用snmp协议监控路由器和交换机设备端口流量
很早就用过zabbix 监控路由器和交换机的端口流量,但一直没写,最近又监控了,发现自己博客文章里面没写,补一下 一般企业级的路由器和三层交换机都是支持snmp 协议的 一,路由器和交换机开启snmp ...
- zabbix snmp 协议监控 dell iRDAC
转摘:http://blog.csdn.net/wanglei_storage/article/details/52789921 http://blog.csdn.net/wanglei_storag ...
- 基于snmp协议监控华为s5720交换机
类别 节点信息 对应节点的OID 备注 设备状态监控 CPU利用率 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5 盒式设备获取CPU利用率和内存利用率的大小还可以使用另一个节点 ...
- 18. snmp 协议监控
文章目录 18. snmp 协议监控 18.1 服务端安装 SNMP 18.1.1 修改配置文件 18.1.2 启动服务 18.2 客户端安装 SNMP 18.3 命令测试 18.4 新建 SNMP ...
- SNMP 和 NetBios协议理解
原文链接地址https://www.cnblogs.com/hilow/p/3737695.html 一.简单网络管理协议(SNMP,Simple Network Management Protoco ...
- zabbix基于SNMP 协议监控路由器
zabbix基于SNMP 协议监控路由器 步骤 步骤超级方便. 1. 路由器上开启snmp 2. 确保外网能访问到 3. 用snmpwalk测试 4. 添加zabbix主机,SNMP interfac ...
- Centos6.5编译安装zabbix2.2通过snmp协议监控路由器
实验环境:服务器:centos6.5 监控软件:zabbix-2.2 数据库:mysql5.1 关闭selinux 和防火墙 Server端: 1, 安装开发软件包 yum -y groupi ...
- windows系统下SNMP协议获取系统内存、CPU实例代码
系统环境:win10 注:win10及以下windows平台,在控制面板,程序中,添加snmp服务功能. 可参照:https://jingyan.baidu.com/article/3d69c5515 ...
最新文章
- CABasicAnimation 动画组合
- 初探面向对象编程之oop与设计模式
- 任意给4条边求形成四边形面积最大值
- ubuntuKylin17.04重装KDE
- JS:封装函数判断数据类型
- redisson 大量ping操作,导致 tps过高
- 2.18比赛(T2,T3留坑)
- android 碎片问题,Android碎片问题
- Android 应用开发---App 移动应用中九种导航设计总结及其优缺点分
- 互联网公司还要亏多久?
- Java中IDEA,Springboot实现手机获取验证码和倒计时
- Vmware虚拟机宕机问题处理
- appiumpython框架实例_GitHub - feiyangzhu/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...
- mysql 建表语句
- u8系统怎么连接服务器,u8客户端如何连接服务器
- linux后加网卡,Linux添加网卡教程
- SelectObject和DeleteObject函数
- Spring定时任务-@Scheduled
- 使用Office Tool Plus Beta版安装Office2021
- 可调式减压阀行业现状调研及趋势分析报告
热门文章
- creo数控编程怎么样_邹军:通过数控宏程序实现刀具寿命管理
- Centos 安装 Chrome
- 直接在低版本IE6/7/8浏览器中使用HTML5的audio和video标签播放视频音频的办法
- 泛海精灵软件预发布统计报告 反馈
- api 原生hbase_数据查询的玄铁剑:云HBase原生二级索引发布
- spark基础之shuffle机制和原理分析
- Linux之wget命令详解
- android mapping.txt,Android根据mapping.txt还原混淆的代码
- ipc java_java – Thrift有IPC传输实现吗?或低延迟SOA解决方案
- (71)FPGA面试题-使用不同的代码实现2-4译码器?使用case语句