1. 监控系统简介
1.1 SNMP协议简介
- SNMP(Simple Network Management Protocol)“简单网络管理协议”,用于网络管理的协议。SNMP用于网络设备的管理。
1)SNMP的工作方式
- 管理员需要向设备获取数据,所以SNMP提供了 “读”操作;
- 管理员需要向设备执行设置操作,所以SNMP提供了“写”操作;
- 设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了 “Trap”操作
2)SNMP协议的版本
- v1,v2,v3
- v2:NMS ---> agent 明文udp
- v3:认证、加密、解密
3)SNMP协议在Linux上的实现
- net-snmp 程序包
4)SNMP的组件
- MIB:Management Information Base 管理信息库(每一个agent都有一个MIB库)
- 实现了能够定义双方可接受的监控组件以及监控组件中数据存储格式的一个组件
- 还能实现将每一个被管理对象的ID (OID)对应到名称的转换
- MIB视图
- SMI:MIB表示符号
- SNMP协议本身
1.2 SNMP的工作模式
1)工作模式
- NMS端向agent端采集数据(NMS表示监控节点)
- agent端向NMS端报告数据
- NMS请求agent修改配置
2)可发起的操作
- NMS端:
- Get(获取数据)
- GetNext(获取多个下一个参数)
- Set(修改配置)
- Trap(等着捕获每一个被监控端主动发来的数据)
- agent端:
- Response返回一个或多个参数值
3)端口:UDP
- NMS:162/UDP
- agent:161/UDP
2. 各种监控软件的对比
2.1 常见的监控软件
1)Cacti
- Cacti 是一套基于 PHP、MySQL、SNMP 及 RRD Tool 开发的监测图形分析工具
- Cacti 是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态了
- Cacti 监控关注的是对数据的展示,却不关注数据异常后的反馈。如果凌晨 3 点的时候设备的某个数据出现异常,除非监控人员在屏幕前发现这个异常变化,否则是没有任何报警机制能够让我们道出现了异常。
2)Nagios
-
Nagios 是一款开源的免费网络监控报警服务,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机、路由器和防火墙等网络设置,打印机、网络投影、网络摄像等设备。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios 有完善的插件功能,可以方便的根据应用服务扩展功能
-
Nagios 已经可以支持由数万台服务器或上千台网络设备组成的云技术平台的监控,它可以充分发挥自动化运维技术特点在设备和人力资源减少成本。只是 Nagios 无法将多个相同应用集群的数据集合起来,也不能监控到集群中特殊节点的迁移和恢复。
3)Ganglia
-
Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia 的核心包含 gmond、gmetad 以及一个 Web 前端。
-
主要是用来监控系统性能,如:CPU 、内存、硬盘利用率, I/O 负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体 性能起到重要作用,目前是监控HADOOP 的官方推荐服务。
4)Zabbix
-
Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
-
Zabbix 是由 Alexei Vladishev 创建,目前由 Zabbix SIA 在持续开发和支持。
-
Zabbix 是一个企业级的分布式开源监控方案。
-
-
Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
-
Zabbix 支持主动轮询和被动捕获。
-
Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。
-
Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用
2.2 监控软件的优缺点
-
-
nagios 一般情况下如果需要图形可以和 cacti 配合使用
-
cacti 的监控是轮询监控,效率低,图形相对 nagios 比较好看
-
zabbix 和 nagios 因为是并发监控,对 cpu 的要求更高
-
zabbix 在性能和功能上都强大很多
-
zabbix 的图形相当漂亮
-
支持多种监控方式 zabbix-agent snmp 等等
-
支持分布式监控,能监控的 agent 非常多
-
zabbix 有图形的 web 配置界面,配置简洁
-
- zabbix-server(C语言研发)
- OS:zabbix-agent(C语言研发)
- zabbix-web:GUI,用于实现zabbix设定和展示(PHP研发)
- zabbix-proxy:分布式监控环境中的专用组件
- zabbix-database:MySQL、PGSQL、Oracle、DB2
2)基本逻辑架构
3.2 Zabbix监控方式
1)被动模式
- 被动检测,相对于agent而言
- server向agent请求获取配置的各监控项相关的数据,agent接受请求,获取数据并响应给server
2)主动模式
- 主动检测,相对于agent而言,agent向server请求与自己相关监控项配置,主动的将server配置的监控项相关的数据发送给server
- 主动监控能极大的节约监控server的资源
3.3 Zabbix的常用术语
1)主机(host)
- 要监控的网络设备,可由IP或DNS名称指定
2)主机组(host group)
- 主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接
- 主机组通常在给用户或用户组指派监控权限时使用
3)监控项(item)
- 一个特定监控指标的相关的数据,这些数据来自于被监控对象
- 对于item是zabbix进行数据搜集的核心,没有item,将没有数据
- 相对某监控对象来说,每个item都由“key”来进行标识
4)触发器(trigger)
- 一个表达式,用于评估某监控对象的某特定item所接收到的数据是否在合理范围内,即阈值
- 接收到的数据量大于阈值时,触发器状态将从“OK”转变为“Problem”
- 当数据量再次回归到合理范围内时,其状态将从“Problem”转换回“OK”
5)事件(event)
- 即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等
6)动作(action)
- 指对特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)
7)报警升级(escalation)
- 发送报警或执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等
8)媒介(media)
- 发送通知的手段或通道,如Email、Jabber或SMS等
9)通知(notification)
- 通过选定的媒介向用户发送的有关某事件的信息
10)远程命令(remote command)
- 预定义的命令,可在被监控主机处于某特定条件下时自动执行
11)模板(template)
- 用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule
- 模板可以直接链接至单个主机
12)应用(application)
- 一组item的集合
13)web场景(web scennaria)
- 用于检测web站点可用性的一个或多个HTTP请求
14)前端(frontent)
- zabbix的web接口
15)Zabbix API
- Zabbix API允许使用JSON RPC协议来创建(JSON RPC是一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过JSON为主)、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或执行任何其他的自定义的任务
16)Zabbix proxy
- 一个帮助Zabbix Server搜集数据,分担Zabbix Server的负载的程序
- Zabbix Proxy是一个可以从一个或多个受监控设备收集监控数据,并将信息发送到Zabbix server的进程,基本上是代表server工作的。所有收集的的数据都在本地进行缓存,然后传送到proxy所属的Zabbix server
- 部署proxy是可选的,但是它非常有益于分散单个Zabbix server的负载。如果只有proxy收集数据,server上的进程就会减少CPU消耗和磁盘I/O负载
- Zabbix proxy需要使用独立的数据库