用Observium直观运维

2017-11-23 05:13
网络安全和信息化 2017年5期
关键词:轮询脚本开源

对于网络运维监控,一直很青睐Cacti这套开源工具,其丰富的插件能满足各种观看和告警的需求,十多年来一直没动摇过更换的念头。然而近期,办公室新装了一台70英寸智能电视,目的就是在工作的间隙,抬头就能方便直观地看到监控状态,而且是同办公室的工作人员都能时不时瞟一眼。在4K屏绚丽画质的诱惑下,原有Cacti的Weathermap已经让人产生了审美疲劳,决定使用界面更美的开源监控投放到屏幕上,即赏心悦目,也能对外展现专业技术人员的科技感。不看不知道,曾经以为除了Zabbix、Nagios、Ossim等几个著名的开源监控,就没有几个像样的工具,居然一下搜出好多各具特色的开源平台,瞬间有一种落后于时代大潮的失落感。

经过一番对Screenshots界面和SNMP支持程度的比较和筛选,一个名为Observium的监控平台吸引了我的目光。

系统安装

Observium总体上是基于SNMP采集的监控平台,也支 持 Smokeping、Nfsen等第三方工具的集成,官方文档对部署的描述较为详细,常见的rhel/centos系 列,debian/ubuntu系列均能较好地支持这一系统。本文选用Debian-8.7.1进行部署,可以充分利用Debian强大的软件仓库。安装分为三个部分。

第一部分:软件环境

首先启用iptables防火墙,该版本Debian默认并未启用任何防火墙,可选用iptables,与rhel的配置有较大不同,它需要人为将防护规则的配置文件关联到网卡初始化配置里并进行调用,监控系统自身的安全也不能被忽视(如图1)。

图1 debian配置和启用iptables防火墙

图2 配置本地主机名和debian软件仓库

接着,在hosts文件中添加IP与域名,最后,添加阿里云的apt更新源,该源不仅稳定,在各大运营商线路上也都有出色的速度表现(如图 2)。

总的来说,Observium环境需求为Apache2.2/2.4、Fping、MySQL 5.5、Net-SNMP 5.7、RRDTool 1.3、PHP 5.5以及Graphviz等开源基本工具,通过apt工具即可轻松解决包的依赖关系。

其中,Apache用于系统的前端展示和管理;Fping是一个增强的Ping工具,可以并发地执行ICMPPing扫描;RRDTool是环状数据库工具,用于存储和展示被监测对象随时间的变化情况,许多开源监控也都有用到;PHP即用于前端页面的展示,也用于后台采集的脚本;ipmitool是一个可选工具,用于监控支持IPMI基线板控制器的服务器;libvirtbin也是可选工具,用于监控基于libvirt承载的虚拟化环境。

图3 配置Observium数据库连接

图4 配置Apache环境

接下来在/opt目录下创建Observium主目录,并下载解压软件到此,本文所用的版本为社区版0.16.10.8128,该版本每半年升级更新一次。

第二部分:配置和初始化

首先从样例复制数据库连接文件,并修改为拟采用的数据库名和账号,接着在MySQL中创建库名和账号,并通过Discovery.php脚本初始化数据库(如图3)。

此时,可以看到字符形式显示的Observium字样以及数据库初始化信息。接下来创建日志目录,rrd图形目录,设置目录属主和配置Apache。

检查Apache安装状态,确认当前Apache版本为2.4.10,并根据Debian独有的目录结构添加和启用Observium虚拟主机配置,随后启用必须的module,禁用默认配置文件(如图4)。

通过脚本adduser.php初始化管理员用户和密码,设置level为10作为最高管理权限。通过add_device.php脚本添加第一个被监控设备,仅在这一脚本不断滚动刷新的结果就深深吸引了我,原来SNMP可以提供远超Cacti中展现的那么一点对象;通过discovery.php脚本初始化自动发现。

通过poller.php脚本进行第一次轮询,轮询这一点倒和Cacti非常一致。

最后是添加定时任务来实现自动轮询,并且该定时任务不能在用户的crontab–e编辑配置中运行,必须配置到/etc/crontab或/etc/cron.d/observium中方可。定时规则为:每6小时完整扫描一次所有设备,每5分钟扫描一次是否有新设备,每5分钟进行一个轮询,每天维护一次采集到的日志,每天维护一次产生的图形数据。

图5 Observium设备概要视图

使用体验

在浏览器中打开系统http://observium.domain.cn界面,一只可爱的硕鼠跃然于眼前,给人一种轻松的感觉。登录后,主体界面非常简洁,立即先找到添加设备菜单,分别添加了不同品牌的交换机、存储和虚拟机等设备,在这里操作的简单超出了想象,假设默认community字符串就是public,几乎只需要填入IP点确定,就可以完成被监控设备的添加。

静候一段时间待发现和轮询脚本执行多遍,再回到主界面感受,每个被监控设备的信息完备度再次将我震撼,从品牌logo到设备型号,从操作系统版本到设备在线时长,从CPU、内存、磁盘到温度、电流、电压,从所有的端口和邻居发现到动态路由的OSPF、BGP,几乎是无所不包的展现出来(如图5),被监控对象的信息非常丰富,所做的操作仅仅只是添加了一个IP而已。

在首页主面板里,并没有常见商业系统的仪表盘,主要有设备Up/Down状态总览、资产地图、事件标签、警告信息列表等几个部分,运维人员的注意力更容易集中在事件标签,而不是花哨的界面上。

在每个设备的视图里,分为左右两栏(如图6),左栏自上而下分别是主机概要信息,整机网络上下行吞吐,事件日志;右栏自上而下分别是处理器、内存、存储、温度。与Cacti相比,事件日志是Cacti所不具备的,整合在这里也是非常的实用,可以快速一览设备当前发生的情况。处理器信息在一个界面里清晰显示了处理器的型号、数量,以及整体负载比例,内存则在一个界面里显示了used、buffers、cached、free、total的情况。相比Cacti逐个显示每个线程的负载,每个内存对象的图,视觉上更清晰直观,也更有利于运维人员监控。

除此之外,网络类设备的CPU信息和温度的采集则非常全面,常见的国内外品牌的交换机都能准确识别,而Cacti则需要人工逐个配置mib才可以监控到,极大地简化了监控对象的配置。

在网络相关信息的组织上,不仅可以看到每个物理端口上流量,MTU、MAC、SPEED、VLAN等常用信息,也可以清晰地看到每个VLAN接口上配置的IP,还有IPv4/IPv6与ARP的对应联系,通过LLDP等发现协议,标识每个端口对端连接设备的信息,大量信息的集中展示,对于网络故障排查是非常直观和方便的。

图6 Observium设备详细视图

图7 Observium自动生成的拓扑

图8 Cacti对短时间突发大流量不够精确

图9 Observium对短时间突发大流量较为精确

除此之外,Observium还自动绘制接口与对端互联设备的拓扑图(如图7),而这一切从添加了SNMP设备后全都无需任何配置就全部获取。

在网络流量的粒度上,专门做了一次实验,从一台生产交换机的端口上发出万兆流量,持续较短时间,比较Cacti和Observium都 设 置为5分钟轮询一次SNMP,Observium再次取得了满意的结果(如图 8)。Cacti在测试流量期间,并未修改端口属性将千兆比特率改为万兆,只记录为300Mbps+的流量,而Observium则在未经人为干预前提下,较为准确地记录了9Gbps+的流量,这对短暂出现的异常记录非常有帮助。

猜你喜欢
轮询脚本开源
酒驾
安奇奇与小cool 龙(第二回)
五毛钱能买多少头牛
2019开源杰出贡献奖
基于等概率的ASON业务授权设计∗
快乐假期
小编的新年愿望
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
依托站点状态的两级轮询控制系统时延特性分析