<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OID on 断念梦的站点</title><link>https://desistdaydream.github.io/tags/OID/</link><description>Recent content in OID on 断念梦的站点</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://desistdaydream.github.io/tags/OID/index.xml" rel="self" type="application/rss+xml"/><item><title>SNMP(传统监控标准)</title><link>https://desistdaydream.github.io/docs/6.%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7/Metrics/%E7%9B%91%E6%8E%A7%E7%B3%BB%E7%BB%9F%E6%A6%82%E8%BF%B0/SNMP%E4%BC%A0%E7%BB%9F%E7%9B%91%E6%8E%A7%E6%A0%87%E5%87%86/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://desistdaydream.github.io/docs/6.%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7/Metrics/%E7%9B%91%E6%8E%A7%E7%B3%BB%E7%BB%9F%E6%A6%82%E8%BF%B0/SNMP%E4%BC%A0%E7%BB%9F%E7%9B%91%E6%8E%A7%E6%A0%87%E5%87%86/</guid><description>&lt;h1 id="概述"&gt;概述&lt;a class="td-heading-self-link" href="#%e6%a6%82%e8%bf%b0" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://datatracker.ietf.org/doc/html/rfc1157"&gt;RFC 1157，A Simple Network Management Protocol (SNMP)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://datatracker.ietf.org/doc/html/rfc1156"&gt;RFC 1156，Management Information Base for Network Management of TCP/IP-based internets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol"&gt;Wiki, SNMP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Simple Network Management Protocol(简单网络管理协议，简称 SNMP)&lt;/strong&gt;。想实现该协议，通常需要由两部分完成(监控端和被监控端)，是在两端的两个进程之间进行通信，该进程都需要占用一个 socket&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;监控端：通常称为 NMS 端，管理端&lt;/li&gt;
&lt;li&gt;被监控端：通常称为 Agent 端，NMS 要去收集被监控端的数据的时候，可能收集到的是一些很敏感的数据(CPU 使用率，带宽占用率等，这些一般是不公开的)，所以需要在被监控节点上部署一个专门的程序，这个程序能在本地取得一定的管理权限，然后接受监控端发送的数据收集指令，代为在被监控节点本地完成数据收集，所以被称为 Agent 端，代理端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SNMP 的工作模式，使用 udp 协议发送报文&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;监控端主动发送请求到被监控端的 agent 去收集数据&lt;/li&gt;
&lt;li&gt;被监控节点主动向监控端报告自己所采集的数据&lt;/li&gt;
&lt;li&gt;当监控端发现被监控端发生异常时，可以发送一些控制指令，将被监控端修改一些参数&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="实现-snmp-的组件"&gt;实现 SNMP 的组件&lt;a class="td-heading-self-link" href="#%e5%ae%9e%e7%8e%b0-snmp-%e7%9a%84%e7%bb%84%e4%bb%b6" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Management Information Base(管理信息库，简称 MIB)&lt;/strong&gt; # 用来定义所有监控端的 objects，其中包括 objects 的名称、OID、数据类型、描述(干什么用的)。MIB 也可以看作是 SNMP 的服务端与代理端的沟通桥梁，只有具有统一的格式，才能确定数据。
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Object(对象)&lt;/strong&gt; # 这个对象可以是一个具体需要采集到的数据，比如 内存、CPU、磁盘、网络接口等等，也可以是一种抽象的集合，比如地区、硬件、系统、硬件、网络等等。上面说的所有事物，每一个都是一个 Object。所以，Object 可以包含另一个 Object，这也是人称常常将 MIB 称为&lt;strong&gt;树状&lt;/strong&gt;的原因
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Object Identifier(对象标识符，简称 OID)&lt;/strong&gt; # 每一个 Object 都有一个 OID&lt;/li&gt;
&lt;li&gt;数据存取格式：即每个 object 除了 OID 用作标示以外，还有数据内容需要遵循一定个格式规范&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structure of Managerment Intormation(管理信息结构,简称 SMI)&lt;/strong&gt; # 是 &lt;a href="https://desistdaydream.github.io/docs/2.%E7%BC%96%E7%A8%8B/%E6%97%A0%E6%B3%95%E5%88%86%E7%B1%BB%E7%9A%84%E8%AF%AD%E8%A8%80/ASN.1/"&gt;ASN.1&lt;/a&gt; 的子集&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SNMP 本身&lt;/strong&gt; # 一般通过 Net-SNMP 中的工具实现。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所谓的 &lt;strong&gt;MIB&lt;/strong&gt;，其实主要是通过文件记录的内容。与其说是用文件记录，不如说 MIB 就是使用 ASN.1(标准的接口描述语言) 编写的代码。ASN.1 语言同样有类似 import、 function 这类的东西。只不过，记录 MIB 文件的语言，又与 ASN.1 有一些细微的区别，我们暂且称为 &lt;strong&gt;MIB 语言&lt;/strong&gt; 吧~&lt;/p&gt;</description></item></channel></rss>