一.SNMP协议
1.简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统NMS,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。该协议是互联网工程工作小组(IETF,Internet Engineering Task Force)定义的internet协议簇的一部分。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。
2.SNMP管理的网络主要由三部分组成:
被管理的设备
SNMP代理
网络管理系统
它们之间的关系如图:
网络中被管理的每一个设备都存在一个管理信息库(MIB,就是snmp的监控对象,以及监控对象的属性)用于收集并储存管理信息。通过SNMP协议,NMS能获取这些信息。被管理设备,又称为网络单元或网络节点,可以是支持SNMP协议的路由器、交换机、服务器或者主机等等。
SNMP代理是被管理设备上的一个网络管理软件模块,拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。
NMS运行应用程序来实现监控被管理设备的功能。另外,NMS还为网络管理提供大量的处理程序及必须的储存资源。
3.SNMP的工作原理
在典型的SNMP用法中,有许多系统被管理,而且是有一或多个系统在管理它们。每一个被管理的系统上又运行一个叫做代理者(agent)的软件元件,且通过SNMP对管理系统报告资讯。
基本上,SNMP代理者以变量呈现管理资料。管理系统透过GET,GETNEXT和GETBULK协定指令取回资讯,或是代理者在没有被询问的情况下,使用TRAP或INFORM传送资料。管理系统也可以传送配置更新或控制的请求,透过SET协定指令达到主动管理系统的目的。配置和控制指令只有当网络基本结构需要改变的时候使用,而监控指令则通常是常态性的工作。
可透过SNMP存取的变量以阶层的方式结合。这些分层和其他元数据(例如变量的类型和描述)以管理信息库(MIBs)的方式描述。
简而言之就是:
NMS向agent采集数据
agent向NMS报告数据
NMS请求agent修改配置
二.监控及zabbix监控
1.监控什么?
列出部分:
设备/应用
服务器,路由器,交换机,I/O系统等;
操作系统,网络,应用程序等;
故障
数据库宕机,数据停止复制,无法连接服务器等;
关键事件
磁盘空间满了,数据复制滞后等;
CPU利用率达到100%了等;
2.如何监控
简单方法
top,vmstat,iostat,mytop,innotop,show global status等;
图形化方法
nagios(opsview,icinga),cacti,zabbix等
3.监控系统应该具有哪些功能
数据收集:包括使用SNMP,native agents,IPMI等;
警报:(当收集的数据比如CPU使用率达到一个阀值)可以通过像Email,信息等方式发送警报;
数据存储:对(过去)收集的数据进行分析时,需要存储数据;
可视化:直观,方便的查看数据,尤其对于大量数据;
4.zabbix如何监控
5.zabbix支持哪些系统
zabbix支持Linux Unix freebsd windows Mac openbsd AIX solaris等
6.zabbix监控方式
zabbix agent:zabbix专用客户端
SNMP agent:支持SNMP方式
IPMI agent:服务器专用的硬件接口
agentless monitoring:无agent的监控,如接口,IP等
web monitoring:监控服务的状态,如监控的页面在不在,页面请求响应时间,页面内数据的下载速度等
databases monitoring:监控数据库
internal check:内部监测,zabbix自带的监控命令一类
calculatd monitoring:数据计算后的监控,如服务器在线人数,流量等
custom command monitoring:自定义监控,如监控脚本等
7.zabbix如何得到警报
Escalation表示可以定义警报升级,如10分钟未解决就警报给Admin,10分钟未解决给Helpdesk,30分钟未解决就给Manager;
8.zabbix分布式监控(采用zabbix proxy方式)
三.zabbix介绍
1.zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix的特点:
自动发现服务器和网络设备。
底层自动发现
分布式的监控体系和集中式的web管理
支持主动监控和被动监控模式
支持多种操作系统 Linux, Solaris, HP-UX, AIX, FreeBSD, OpenBSD, OS X
高效的agent 支持 Linux, Solaris, HP-UX, AIX, FreeBSD, OpenBSD,OS X, Tru64/OSF1, Windows等环境;
无agent监控等多种监控方法。
安全的用户认证模式
灵活的用户权限设置。
基于web的管理方法。
支持自由的自定义事件和邮件发送。
高水平的业务视图监控资源。
支持日志审计。
2.zabbix架构及组件
这个只是大致架构,而且zabbix web GUI和zabbix Databases及zabbix server不一定在同一主机上,也可以是分开的。
组件:
Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行,C语言编写;
Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
Web GUI:zabbix的web接口,通常与Server运行在同一台主机上,通常被称为frontend,PHP语言开发;
Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端,C语言编写;
了解了上述组件,那么可以看一下zabbix的详细架构了(分主机运行的):
zabbix server负责从agent或proxy上收集数据将其存储到Database上;
zabbix agent监控database,device,application等收集数据,通过zabbix_sender主动向server发送数据或者等待server收集数据;
当数据收集完成时,在安装有Apache PHP的主机(或LAMP平台)上,使用浏览器通过zabbix web GUI即可展示数据;
3.zabbix逻辑架构及相关术语
术语:
主机(host):要监控的网络设备,可由IP或DNS名称指定;
主机组(host group):主机的逻辑容器,可以包含主机和模板(配置的集合),但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
监控项(item):一个特定监控指标相关的数据,这些数据来自于被监控对象;item是zabbix进行数据收集的核心,没有item将没有数据,相对某个监控对象来说,每个item都由"key"标识;
触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
动作(action):对特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作);
报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph(图形)、screen(多个图形)、application以及low-level discovery rule;模板可以直接链接至某个主机;
应用(application):一组item的集合;
web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
前端(frontend):Zabbix的web接口;
了解了各术语之后再来总结一下其逻辑结构图:
说明:
zabbix poller是基于”拉取“方式的zabbix server,它可以通过SNMP等方式收集数据,此次以zabbix agent为例;
当主机(主机组)需要下线维修时,Maintenance可以避免主机(主机组)下线维修时不断产生警报的情况发生;
补充另外一个逻辑架构图作为参考:
参考文章:
SNMP协议: