**
it运维机器人小胖(一)
自动化运维是一个老的话题,可是随着it技术的不断发展,业务系统的开发环境和运行环境也发生着极大的变化,devops概念的提出似乎是为完全自主的自动化运维提供了思路,可是网络的复杂性,应用环境的快速变化以及虚拟化,云技术等等都给运维带来了挑战,运维人员再也不是简单的面对机房网络环境、主机、操作系统、应用软件这些单一的环境了,实际中往往是面对着虚拟化的网络以及主机环境,甚至是随需应变的软件定义网络,软件定义主机环境以及复杂的微服务系统,在这样复杂的环境下,怎么实现自动化的运维工作成为了一个复杂命题。
1.3.6.1.2.1.31.1.1.1.1 网络接口名字 ifName WALK
1.3.6.1.2.1.2.2.1.1 网络接口编号 ifIndex WALK
1.3.6.1.2.1.2.2.1.2 网络接口信息描述 IfDescr WALK
1.3.6.1.2.1.2.2.1.3 网络接口类型 IfType WALK
1.3.6.1.2.1.31.1.1.1.18 网络接口别名 ifAlias WALK
1.3.6.1.2.1.2.2.1.6 接口的物理地址 IfPhysAddress WALK
1.3.6.1.2.1.2.2.1.7 配置状态 ifAdminStatus WALK
1.3.6.1.2.1.2.2.1.8 接口当前操作状态[up|down] IfOperStatus WALK
抽丝剥茧,再复杂的环境也要从简单的环境感知开始,本文就介绍一种基于snmp的基础环境感知方法,可以做到自动扫描网络环境,自动发现主机,自动发现网络拓扑,以及感知接入交换机的客户端动态变化。为全自动化的机器人运维打下坚实的基础,也是it运维机器人“小胖”的众多感知能力的最重要的一种。
此表中的这些OID就是获得网络接口的基本数据的重要oid,可以使用他们获得网络接口的基本配置。
1.3.6.1.2.1.4.22.1.2 ARP表,逻辑端口设备上IP地址和MAC地址对应表 ipNetToMediaPhysAddress WALK
1.3.6.1.2.1.4.22.1.3 该物理转换条目对应的IP地址 ipNetToMediaNetAddress WALK
1.3.6.1.2.1.4.22.1.4 ip类型 ipNetToMediaType WALK
此表中是如果该设备是网关,可以使用这几个oid获得所有再网关上交换的设备的ip地址和mac地址以及ip类型。
1.3.6.1.2.1.17.4.3.1.1 FDB表中的Mac地址 dot1dTpFdbAddress WALK
1.3.6.1.2.1.17.4.3.1.2 FDB表中的到端口的Mac地址索引 dot1dTpFdbPort WALK
1.3.6.1.2.1.17.4.3.1.3 本行数据的状态 dot1dTpFdbStatu WALK
此表获得交换机上的mac地址交换表,这是一个获得拓扑图的核心内容表。
通过ipRouteTable表可以获得路由器上的外网ip,可以得到泵网域与外部的联系的所有ip地址。
获取拓扑图的基本步骤:
首先根据监控服务器自身的ip地址获得网关地址;
使用snmp协议获得网关的网口基本信息以及ARP表和MAC地址交换表;
使用snmp扫描ARP表中的所有ip地址,根据服务内容判断是网络设备(网关、交换机、路由器等)还是终端设备;
根据网络设备本身网口的ip地址和mac地址,找出网络设备之间的拓扑图;
根据终端设备的ip地址和mac地址,从网关开始逐步向下找到接入交换设备,确定接入端口,标记拓扑;
将拓扑图输出到json结构以便和其他系统交换;
至此拓扑图获取完毕,使用相应的oid可以获得接入交换机的端口状态,实现网络态势感知。提供centos下的c语言实现代码,可以联系以下微信号码(wujqdd)获得。