Zabbix实战-简易教程--网络类(交换机)

 一、背景需求

近期准备对网络设备(交换机、防火墙、路由器)进行监控,根据网络工程师需求,需要达到以下目标:

1、硬件信息(型号、厂商等)

2、设备接口信息(接口状态、接口流量)

3、监控报警(监控down掉、流量超标、网络延时、网络丢包、CPU超标、内存超标)

4、流量聚合(针对不同业务进行流量聚合并展示)

 

二、SNMP介绍

虽然交换机有OS和GUI,但是他不像linux或windows一样,可以安装工具或者灵活的和外界通过命令行进行交流。但是,交换机、路由器或防火墙都支持SNMP协议,所以我们可以通过SNMP协议进行所有数据的抓取。

重点介绍一下SNMP:

1、概述

SNMP是TCP/IP协议簇的一个应用层协议。在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本。

一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。

(1)管理信息库MIB

任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图1所示。

MIB文件中的变量使用的名字取自ISO和ITU管理的对象标识符(object identifier)名字空间。它是一种分级树的结构。如图2所示,第一级有三个节点:ccitt、iso、iso-ccitt。低级的对象ID分别由相关组织分配。一个特定对象的标识符可通过由根到该对象的路径获得。一般网络设备取iso节点下的对象内容。如名字空间ip结点下一个名字为ipInReceives的MIB变量被指派数字值3,因而该变量的名字为:

      iso.org.dod.internet.mgmt.mib.ip.ipInReceives

相应的数字表示(对象标识符OID,唯一标识一个MIB对象)为:

1.3.6.1.2.1.4.3

当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例。如ipInReceives的实例数字表示为:1.3.6.1.2.1.4.3.0.

需要注意的是,MIB中的管理对象的OID有些需要动态确定,如IP路由表,为了指明地址202.120.86.71的下一站路由(next hop),我们可以引用这样的实例:

iso.org.dod.internet.mgmt.mib.ip. ipRouteTable.ipRouteEntry.ipRouteNextHop.202.120.86.71, 相应的数字表示为:1.3.6.1.2.1.4.21.1.7.202.120.86.71

对于这种动态对象标识的实例,由于无法转换为预先指定的Readkey名称,与飞邻的产品架构冲突(需要动态生成可变Readkey),暂不考虑支持。

 

(2)管理信息结构(SMI)

SMI定义了SNMP框架所用信息的组织、组成和标识,它还为描述MIB对象和描述协议怎样交换信息奠定了基础。

SMI定义的数据类型:

◆ 简单类型(simple)

Integer:整型是-2,147,483,648~2,147,483,647的有符号整数

octet string: 字符串是0~65535个字节的有序序列

OBJECT IDENTIFIER: 来自按照ASN.1规则分配的对象标识符集

◆    简单结构类型(simple-constructed)

SEQUENCE 用于列表。这一数据类型与大多数程序设计语言中的“structure”类似。一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型

 SEQUENCE OF type 用于表格。这一数据类型与大多数程序设计语言中的“array”类似。一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。

◆    应用类型(application-wide)

IpAddress: 以网络序表示的IP地址。因为它是一个32位的值,所以定义为4个字节;

counter:计数器是一个非负的整数,它递增至最大值,而后回零。在SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;

Gauge :也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为232-1;

time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;

(3)SNMP报文

SNMP报文结构如下:(编码之前)

SNMP协议具体参考:http://www.cnblogs.com/zhangsf/archive/2013/08/26/3283124.html

 

三、解决方案

1、item和triggers确定(模板)

SNMP协议我们已经了解了,我们现在就可以根据SNMP提供的IOD进行数据采集。根据用户需求,我们主要需要采集两方面:硬件信息和端口相关信息。

幸运的是,zabbix官方已经提供了SNMP模板,更幸运的是,他已经帮你考虑到了你的需求:采集硬件信息和端口相关信息。

如上图所示,Generic里面包含了硬件基础信息,interfaces里面包含了接口相关信息。但是,没有包含系统信息(CPU、内存),因为不同厂商,OID不同,所以不能放在一个模板里面,需要自己去定制,后续将防火墙监控的时候会专门讲解。

交换机基本上使用以上模板的监控已经足够了,但是里面的item和triggers需要根据自己的需求进行修改。

比如:

有些item你和网络工程师协商后,觉得不是重要或者干脆没必要添加,就可以去掉。记住:监控项不是越多越好,而是越关注越好,监控项非常多,虽然可以展示你可以采集数据的实力,但是也会给你压力(server端),利弊请自行定夺。

triggers肯定需要修改,自带的比较简单,也不符合自身需求,我根据自带的进行修改后,基本如下:

  • 流量超标:我这里是80%的概念
  • 端口变更:端口从千兆变百兆(用于监控交换机和服务器协商不一致问题,协助排查问题所用)
  • 端口宕掉:端口直接down掉

截图所示:

 

2、可能遇到的问题

  • 交换机权限开通(161端口对server/proxy开放)
  • community值确定(交换机设定community值后,在模板上配置好)
  • server/proxy上snmp软件安装

 

 

四、主机上套

以上问题都确定没问题后,我们就可以针对交换机进行模板上套:

 

五、效果图

1、交换机接口流量

 

2、交换机丢包和延时

 

3、交换机硬件信息

 

4、报警信息

 

六、参考文献和脚本

模板地址:https://github.com/loveqx/zabbix-doc/tree/master/zabbix-scripts/zabbix-template-SNMP

SNMP参考文献:http://www.cnblogs.com/zhangsf/archive/2013/08/26/3283124.html

posted @ 2017-10-14 09:45  skyflask  阅读(1309)  评论(0编辑  收藏  举报