如何通过zabbix查看思科交换机开启snmp是否开启了snmp

用户名:下善若火
文章数:33
评论数:88
访问量:60322
注册日期:
阅读量:1297
阅读量:3317
阅读量:582868
阅读量:467828
51CTO推荐博文
&&&&SNMPV3是简单网络管理协议的第三版,因为其安全性更高,现在的中低端交换机已普遍支持该协议,所以在生产环境中我们应该采用SNMPV3对交换机、路由器进行管理。&&&&首先在交换机上要配置SNMPV3协议,设置好认证算法及密码,加密算法及密码,用户名,具体操作需要查看华为交换机操作手册。&&&&然后在zabbix服务器上安装net-snmp安装包。安装完成后我们就可以通过snmpwalk或snmpget命令获取交换机上面我们需要监控的信息了。&&&&snmpwalk我们只是作调试使用,如果编译安装zabbix时使用了--with-snmp的话,zabbix就自带这个功能了。snmpwalk&--help
SNMP&Version&3&specific
&&-a&PROTOCOL
指定认证协议算法&(MD5|SHA)
&&-A&PASSPHRASE
指定认证密码
&&-l&LEVEL
指定安全认证模式&(noAuthNoPriv|authNoPriv|authPriv)
&&-u&USER-NAME
指定用户名&(e.g.&bert)
&&-x&PROTOCOL
指定加密协议算法&(DES|AES)
&&-X&PASSPHRASE
指定加密协议密码获取交换机端口号及对应的端口名称(IF-MIB::ifDescr)snmpwalk&&-v&3&-u&Securityname&&-a&sha&-A&xxxxxxx&-x&AES&-X&xxxxxxx&-l&authPriv&&192.168.1.177&IF-MIB::ifDescr获取交换机所有端口的进入流量(IF-MIB::ifHCInOctets)snmpwalk&&-v&3&-u&Securityname&&-a&sha&-A&xxxxxxxx&-x&AES&-X&xxxxxxx&-l&authPriv&&192.168.1.177&IF-MIB::ifHCInOctets&获取交换机49端口的进入流量(IF-MIB::ifHCInOctets.49)snmpwalk&&-v&3&-u&Securityname&&-a&sha&-A&xxxxxxxxx&-x&AES&-X&xxxxxxxx&-l&authPriv&&192.168.1.177&IF-MIB::ifHCInOctets.49&&&&我做的监控只监控了三项,一个进入流量,一个跑出流量,一个端口当前状态。&&&&进入流量可以取两个OID:&&&&ifInOctets;&&&&ifHCInOctets;&&&&他们唯一的区别是后者是64位存储,前者是32位存储,如果一个端口的进入流量超出4G,前者就会溢出清零,所以监控项的OID我选的ifHCInOctets&&&&跑出流量OID取:ifHCOutOctets&&&&端口状态OID取:ifOperstatus&&&&&&&&关于什么是OID,建议读一读rfc1573,这是一个协议标准,里面介绍了诸如ifDescr这些项的含义,在附件里有。&&&&简单一句话就是:路径和值&&&&&&&&注意:在zabbix中,基于SNMP的发现规则(LLD)会把OID中的路径映射为宏{#SNMPINDEX}把OID中的值映射为宏{#SNMPVALUE}&&&&所以我们不必为一个交换机逐个添加端口,我们可以定义发现规则,自动发现端口。&&&&为安全考虑,在创建的SNMPV3模板中我们应该把所有的密码映射为宏变量,然后在主机宏里添加对应值。例如:&&&&Security name:{$SNMP_SECNAME}&&&&Authentication passphrase:{$SNMP_AUTH}&&&&Privacy passphrase:{$SNMP_PRIV}&&&&关注SNMP的两种取值方式:&&&&GetNext&单线程支持v1,v2;&&&&GetBulk&后者是多线程,支持v2,v3;&&&&如果我们使用SNMPV3取值,在添加交换机时应当选择Bulk&&&&下面开始制作SNMPV3模板创建模板,在模板中定义自动发现规则定义监控项添加交换机,交换机关联SNMPV3模板,配置宏的值&&&&到此就完成了对交换机的监控,但是监控中发现取值断断续续,断图很多,zabbix的日志显示连接超时Timeout。我就增加了取值间隔为5分钟一次,将zabbix_server的配置文件中的Timeout修改为30秒,效果好多了,但是没有彻底解决交换机断图的现象。我google了应该是net-snmp的数据传输机制和zabbix的会话等待机制产生了冲突,造成了不可调和的Bug,所以这个问题从zabbix1.0到现在3.0都没有很好的解决。期待以后的版本能够得到解决。本文出自 “” 博客,请务必保留此出处
了这篇文章
附件下载:    
类别:┆阅读(0)┆评论(0)
11:26:44 13:15:30 17:17:32
请输入验证码:zabbix 如何通过snmp 监控 无线AP的各IP的上下行流量? - 知乎4被浏览737分享邀请回答0添加评论分享收藏感谢收起如何在Zabbix中添加交换机端口监控
如何在Zabbix中添加交换机端口监控
航天知识探索
交换机上配置snmp,这个不多说了zabbix服务器上执行如下aptitude install snmp-mibs-downloader否则会报错,找不到mib库zabbix上添加主机,设置 主机名称 snmp接口,模板使用 Template snmp interfaces尤其在主机 “宏” 里面 添加 {$SNMP_COMMUNITY} 为你的团体名修改自动发现和更新的时间间隔为1分钟监控项目中最好只保留in和out的流量监控,其他禁用,否则项目太多了然后zabbix会自动去索引交换机上所有的端口
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
航天知识探索
百家号 最近更新:
简介: 互联网资讯,这里,或许有你想知道的
作者最新文章君,已阅读到文档的结尾了呢~~
zabbix1.8.1下配置
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
zabbix1.8.1下配置SNMP监控CISCO交换机
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口用户名:zhangke0016
评论数:20
访问量:9153
注册日期:
阅读量:1297
阅读量:3317
阅读量:582868
阅读量:467828
51CTO推荐博文
思路: & & & &python netsnmp模块采集交换机SNMP信息,通过pyzabbix 连接Zabbix API 自动生成带有端口描述信息的graph测试环境 python2.7 & &软件包: & & & & net-snmp-5.4.4.tar.gz & & & & pyzabbixnet-snmp编译参数cd net-snmp-5.4.4
./configure --with-python-modules --prefix=/usr/local/net-snmp
--enable-developer-enable-shared
make && make install
python2.7 setup.py install安装pyzabbixpip install pyzabbixZabbix API &item.create 好像不支持创建以的方法来创建的,所以这边以以方法来采集交换机的端口, 这边事先手动创建以#!/usr/bin/env python2.7
import netsnmp
from pyzabbix import ZabbixAPI
import sys
#import itertools
class SnmpSession(object):
def __init__(self,oid='ifDescr',Version=2,DestHost='lcoalhost',Community=''):
a,b=os.popen4('snmpwalk -v 2c -c %s %s %s' % (Community,DestHost,oid))
oid_value=[]
for x in b:
print x.split('.')[1].split(' ')[0]
oid_value.append(x.split('.')[1].split(' ')[0])
print oid_value
ifDescr=[]
ifAlias=[]
ifHCInOctets=[]
ifHCOutOctets=[]
oid_value:
ifDescr.append('ifDescr.%s' % x)
ifAlias.append('ifAlias.%s' % x)
ifHCInOctets.append('ifHCInOctets.%s' % x)
ifHCOutOctets.append('ifHCOutOctets.%s' % x)
print ifDescr
print ifAlias
print ifHCInOctets
print ifHCOutOctets
if oid == 'ifDescr':
self.oids=ifDescr
if oid == 'ifAlias':
self.oids=ifAlias
if oid == 'ifHCInOctets':
slef.oids='ifHCInOctets'
if oid == 'ifHCOutOctets':
self.oids=ifHCOutOctets
print self.oids
self.oid=oid
self.Version=Version
self.DestHost=DestHost
munity=Community
def query(self):
result=netsnmp.snmpwalk(self.oid,Version=self.Version,DestHost=self.DestHost,munity)
ifDescr_d={}
for x in zip(self.oids,list(result)):
ifDescr_d[x[0]]=x[1]
print ifDescr_d
if len(ifDescr_d) == 0:
sys.exit(2)
print 'switch Oid or ip is problem'
sys.exit(3)
#print sys.exc_info()
print result
class zabbix(object):
#主模块会调用上面的类
def __init__(self,hostname,Community,swich_ip,columns,name,graph,screen):
self.server = 'http://10.0.100.12/zabbix'
#Zabbix的服务器IP
self.user = 'admin'
#Zabbix的帐号
self.passwd = 'admin'
#Zabbix的密码
self.ip = ip
self.host = host
self.hostname = hostname
self.oid = oid
munity = Community
self.swich_ip = swich_ip
self.columns = columns
self.dynamic = 0
self.name = name
self.graph = graph
self.screen = screen
def __login(self):
#登录Zabbix API的方法后面会多次被调用
zapi = ZabbixAPI(self.server)
zapi.login(self.user,self.passwd)
return zapi
def __get_host(self):
#获取主机的方法
list_host=self.__login().host.get(output='extend',filter={'host':self.hostname,})
#print list_host
return list_host[0]['hostid']
def __get_item(self):
#获取项目的方法
list_item=self.__login().item.get(output='extend',hostids=self.__get_host())
itemids={}
for x in list_item:
print x['name'],x['itemid']
itemids[(x['name'])]=x['itemid']
print itemids
return itemids
def __graph_create(self):
#创建绘图的方法
items=self.__get_item()
#print items
desc=SnmpSession(oid='ifDescr',DestHost=self.swich_ip,munity).query()
#被调用的类
alias=SnmpSession(oid='ifAlias',DestHost=self.swich_ip,munity).query()
print alias.values()
port_desc={}
for x in desc.keys():
desc_1[x.split('.')[1]]=desc[x]
alias_1={}
for x in alias.keys():
alias_1[x.split('.')[1]]=alias[x]
for x in desc_1.keys():
port_desc[desc_1[x]]=alias_1[x]
print port_desc
group_items={}
for x in desc.values():
for y in items.keys():
if re.search(x+'$',y):
aa.append(items[y])
group_items[x]=aa
print group_items
desc_and_port={}
for x in port_desc.keys():
for y in group_items.keys():
if re.search(x+'$',y):
print y,port_desc[x],group_items[y]
desc_and_port['%s (%s)' % ( y,port_desc[x] )]=group_items[y]
self.__login().graph.create(
print desc_and_port
return int(re.split('^\D+',x)[1].split(' ')[0].split('/')[-1])
#for x in desc_and_port.keys():
print sorted(desc_and_port,key=b)
for x in sorted(desc_and_port,key=b):
self.__login().graph.create(gitems=[{
"itemid":desc_and_port[x][0], #这边可以修改绘图的参数
"drawtype":"0",
"sortorder":"0",
"color":"0000CC",
"yaxisside":"0",
"calc_fnc":"2",
"type":"0",
"periods_cnt":"5"
"itemid":desc_and_port[x][1],
"drawtype":"0",
"sortorder":"1",
"color":"00CC00",
"yaxisside":"0",
"calc_fnc":"2",
"type":"0",
"periods_cnt":"5"
width="900",
height="200",
yaxismin="0.0000",
yaxismax="3.0000",
templateid="0",
show_work_period="1",
show_triggers="1",
graphtype="0",
show_legend="1",
show_3d="0",
percent_left="0.0000",
percent_right="0.0000",
ymin_type="0",
ymax_type="0",
ymin_itemid="0",
ymax_itemid="0")
def __get_graph(self):
#获取你需要的绘图 在下面生成screen需要
list_graph=self.__login().graph.get(output='extend',hostids=self. __get_host())
for x in list_graph:
print x['graphid']
if not re.search('Vlanif',x['name'].split(' ')[0]):
if not re.search('LoopBack',x['name'].split(' ')[0]):
if not re.search('NULL',x['name'].split(' ')[0]):
if not re.search('Ethernet0/0/0',x['name'].split(' ')[0]):
if not re.search('Console',x['name'].split(' ')[0]):
print x['name'].split(' ')[0],x['graphid']
graphs.append(x['graphid'])
graph_list=[]
for graph in sorted(graphs):
print "x is " + str(x)
print "y is " + str(y)
graph_list.append({
"resourcetype":'0',
#这边可以修改screen的参数
"resourceid": graph,
"width": "500",
"height": "100",
"x": str(x),
"y": str(y),
"colspan": "0",
"rowspan": "0",
"elements": "0",
"valign": "0",
"halign": "0",
"style": "0",
"url": "",
"dynamic": str(self.dynamic)
print type(x)
print type(self.columns)
if x == int(self.columns):
#print graph_list
return graph_list
def __create_screen(self):
#创建screen的方法
graphids=self.__get_graph()
columns = int(self.columns)
if len(graphids) % self.columns == 0:
vsize = len(graphids) / self.columns
vsize = (len(graphids) / self.columns) + 1
print graphids
self.__login().screen.create(name=self.name,hsize=self.columns,vsize=vsize,screenitems=graphids)
def __exists_screen(self):
list_exists=self.__login().screen.exists(name=self.name)
if list_exists:
print '%s is exists' % self.name
sys.exit(1)
def __exists_host(self):
list_exists=self.__login().host.exists(host=self.hostname)
if not list_exists:
print "%s is not exists" % self.hostname
sys.exit(1)
#return graphs
def __del_graph(self):
a=self.__get_graph()
self.__login().graph.delete(a)
def main(self):
self.__exists_host()
self.__exists_screen()
self.__get_host()
self.__get_item()
if self.graph:
self.__graph_create()
self.__get_graph()
self.__del_graph()
if self.screen:
self.__create_screen()
if __name__ == '__main__':
optparse import OptionParser
parser = OptionParser()
parser.add_option('-G', dest='graphname',
help='Zabbix Host
create new screen ')
parser.add_option('-H', dest='hostname',
help='Zabbix Host to create screen from')
parser.add_option('-c', dest='columns', type=int,
help='number of columns in the screen')
parser.add_option('-C', dest='Community',
help='switch SNMP community')
parser.add_option('-s', dest='switch',
help='switch ip')
parser.add_option('-x', dest='execute',action='store_true',default=False,
help='create host graph')
parser.add_option('-n',dest='screen',action='store_true',default=False,
help='whether create zabbix screen')
options,args=parser.parse_args()
a=zabbix(hostname=options.hostname,munity,swich_ip=options.switch,columns=options.columns,name=options.graphname,graph=options.execute,screen=options.screen)
#对于多块板卡的生成的screen有点问题 后期会补上-G 生成新的screen-H &自己定义的主机名-c &需要生成的列-s 交换的地址, (这边交换的地址可能会跟你的 不同)-x 是否开启创建的功能-n 是否开启功能注意 如果没有填正确的信息 脚本会报错,这个后续改下例子: &Graph出来啦Screen 也出来了这边出来的是你刚才定义的现在你可以改name了这边也就改变了如果脚本有问问题请向我指出谢谢!本文出自 “” 博客,请务必保留此出处
了这篇文章
附件下载:  
类别:未分类┆阅读(0)┆评论(0)
16:27:44 14:25:57
请输入验证码:

我要回帖

更多关于 zabbix监控snmp交换机 的文章

 

随机推荐