自动化监控利器-Zabbix

转自: http://www.xuliangwei.com/xubusi/117.html
 
1.1为什么须要监控系统

在一个IT环境中会存在各类各样的设备,例如:硬件设备、软件设备、其系统的构成也是很是复杂的。html

多种应用构成负载的IT业务系统,保证这些资源的正常运转,是一个公司IT部门的职责。而要让这些应用可以稳定地运行,则须要专业IT人员进行设计、架构、维护和调优。在这个过程当中,为了及时掌握基础环境和业务应用系统的可用性,须要获取各个组件的运行状态,如CPU的利用率、系统的复制、服务的运行、端口的连通、带宽流量、网站访问状态码等信息。而这一切都离不开监控系统。java

1.2监控系统的实现

一个监控系统的组成大致能够分为两部分:数据采集部分(客户端)和数据存储分析告警展现部分(服务器端),这两部分构成了监控系统的基本模型。node

数据采集的工做模式能够分为被动模式(服务端到客户端采集数据)和主动模式(客户端主动上报数据到服务器端)。一般,大多数监控系统应该能同时支持这两种模式。被动模式对服务器的开销较大,适合小规模的监控环境:主动模式对服务器的开销较小,适合大规模的监控环境。mysql

采集数据的协议方式能够分为两种:专用客户端采集和共用协议采集(SNMP、SSH、Telnet等)linux

对于采集到的监控数据,能够将其存储到数据库或者文本或者其余方式,具体采用哪种,应根据实际需求来决定。ios

1.3     监控系统开源软件

q  MRTG算法

MRTG(Multi Route
Trffic Grapher)是一套可用来绘制网络流量图的软件,由瑞士奥尔滕的Tobias  Oetiker与Dave Rand所开发,以GPL受权。sql

MRTG最好的版本是1995年推出的,用perl语言携程,可跨平台使用,数据采集用SNMP协议,MRTG将手机到的数据经过Web页面以GIF或者PNG格式绘制出图像。数据库

q  Cacti浏览器

Cacti(英文含义为仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具,它经过snmpget来获取数据使用RRDtool绘图,但使用者无须了解RRDtool复杂的参数。2提供了很是强大的数据和用户管理功能,能够指定每个用户能查看树状结构、主机设备以及任何一张图,还能够与LDAP结合进行用户认证,同时也能自定义模板。在历史数据展现监控方面,其功能至关不错。

Cacti经过添加模板,使不一样设备的监控添加具备可复用性,而且具有可自定义绘图的功能,具备强大的运算能力(数据的叠加功能)

q  SmokePing

Smokeping主要用于监视网络性能,包括常规的ping、www服务器性能、DNS查询性能、SSH性能等。底层也是用RRDtool作支持,特色是绘制图很是漂亮,玩过丢包和延迟用颜色和阴影来标示,支持将多张图叠放在一块儿,其作着还开发了MRTG和RRDtll等工具。

Smokeping的站点为:http://tobi.oetiker.cn/hp

q  Graphite

Craphite是一个用于采集网站实时信息并进行统计的开源项目。Graphite服务支持平均每分钟4800次更新操做,采用简单文本协议,具备绘图功能,其即插即用的功能可方便地用于任何须要监控的系统上。

和其余监控工具不一样额是,Graphite自己并部手机具体的数据,这些数据收集的工做一般由第三方工具或插件完成,能够说,Graphite是一个绘图工具。

q  Nagios

Nagios是一个企业级的个系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。

Nagios可运行在Linux和UNIX平台上。同时提供一个可选的基于刘安琪的Web界面,以方便系统管理人员查看网络状态、各类系统问题、以及日志等

Nagios的功能侧重于监控服务的可用性,能急事根据触发条件告警。

目前Nagios也占领了必定的市场份额,不过Nagios并无与时俱进,已经不能知足于多变的监控需求,架构的扩展性和使用的便捷性有待加强,其高级功能集成在上夜班Nagios XI中。

q  Zenoss
Core

Zenoss Core(简称Zenoss)是开源企业级IT管理软件,它容许IT管理员依靠歹意的WEB控制台来监控网络架构的状态和健康度。

Zenoss Core的强大功能来自深刻的列表与配置管理数据库,用于发现和管理公司IT环境的各种资产(包括服务器、网络和其余结构设备)。Zenoss能够建立关键资产清单和对应的组件级别(接口、服务、进程、已安装的软件等)创建好模型后,Zenoss就能够监控和报告IT架构中各类资源的状态和性能情况了。同时还提供与CMDB关联的事件和错误管理系统,以协助提升各种事件和提醒的管理效率,以此提升IT管理人员的效率。

 

q  Ganglia

Grnglia是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,使用普遍的技术,用RRDtool存储数据。具备可视化界面,适合对集群系统的自动化监控。其精心设计的数据结构和算法使得监控端到被监控端的链接开销很是低。目前已经有成千上万的集群正在使用这个监控系统,能够轻松的处理2000个节点的集群环境。

q  OpenTSDB

开源监控系统OpenTSDB用Hbase存储全部时序(无须采样)的数据,来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集,支持永久存储,能够作容量规划,并很容易地接入到现有的告警系统里。

OpenTSDB能够从大规模的集群(包括集群中的网络设备、操做系统、应用程序)中获取相应的采集指标,并进行存储、索引和服务,从而使这些数据更容易让人理解,如Web化、图形化等。

q  Zabbix

Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,而后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其余监控系统所不能比的。相对来讲,它的整体功能作的很是优秀。

从以上各类监控系统的对比来看,Zabbix都是具备优点的,其丰富的功能、可扩展的能力、二次开发的能力和简单易用的特色,读者只要稍加学习,便可构建本身的监控系统。

2.  Zabbix简介

随着云计算、虚拟化的大规模应用,以及将来移动互联网、物联网等的兴起,Zabbix的使用将愈来愈普遍,应用场合也愈来愈多。目前,很多互联网公司、云计算公司、系统集成软件公司、外包服务公司等,都有对Zabbix进行二次开发和大规模使用。因此,能够断言,Zabbix在将来将会引领监控软件的潮流。

Zabbix适合中小型企业、大中型企业的用户使用。单个Server节点能够支持上万台设备,每秒能够处理1.5万次请求,理论上能够支持5万台设备。

Zabbix自身的定位是中型企业和大型企业,若是在特大型环境中使用,须要解决大并发、大压力的问题,这对使用者提出了更高的要求。

2.1 Zabbix为什么物

Zabbix是一个企业级的高度集成开源监控软件,提供分布式监控解决方案,能够用来监控设备、服务等的可用性和性能,其产品不分企业版和社区版,是一个真正的源代码开放产品,用户能够自由下载并使用该软件。

Zabbix SIA公司是Zabbix的官方技术团队成立的公司。其运做模式是商业软件的开源—软件的使用免费,服务收费。其为用户提供咨询、技术支持服务、定制开发、解决方案、人员培训等。

2.2 选择Zabbix七大理由

对于同类监控产品,有如下理由选择使用Zabbix

1.Zabbix是一个自由开发源代码的产品,用户能够对源代码进行任意修改和二次开发。Zabbix采用GNU General Public License (GPL) Version2开源协议。

2.安装和配置简单,用户仅仅须要一些简单的学习,便可完成监控的搭建工做。

3.搭建环境简单,基于开源软件构建平台,仅须要Linux、Apache/Nginx、MySQL/PostgreSQL/Oracle、PHP便可,无须专用操做系统支持,也无须专用硬件

4.Zabbix-Agent彻底支持Linux、UNIX、Windows、AIX、BSD和Solaris的监控,Server和Agent都采用C语言编码,对系统的资源占用很是小,数据采集的性能和速度很是快。

5.将数据采集持久存储到数据库,便于对监控数据的二次分析。

6.很是丰富的扩展能力,很轻松地自定义监控项和实现数据采集,几乎能监控全部的数据。例如:能够监控网站的访问次数,监控UPS和天气温度等。绝不夸张地说,在Zabbix的世界里,每每有想不到的事情,没有办不到的事情。

7.开源社区的运做模式,有各类论坛、邮件列表、IM及时沟通等。

注意:若是是运维人员,想构建一套本身的监控系统环境,Zabbix将会是最佳的选择。若是你是开发 ,想基于开源软件开发一套属于本身的监控系统,Zabbix也是比较好的选择。

2.3 Zabbix的功能特性

Zabbix有常见的商业监控软件所具有的功能,如主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制、分布式、可扩展能力、API等。

1)数据收集

q  可用、性能检测。

q  支持Agent、SNMP(包括Trapping和Polling)、IPMI、JMX、SSH、Telnet等。

q  自定义的检测。

q  自定义收集数据的频率。

q  服务器端/代理段和客户端模式。

2)灵活的触发器

q  能够定义很是灵活的 阀值和多种相关联的条件。

3)高度可定制的告警

q  发送通知,可定制包括告警级别、动做升级、收件人和媒体类型。

q  通知可使用全局宏变量和自定义的变量。

q  自动处理功能包括远程命令的自动调用和执行。

4)实时的绘图功能

监控项将数据实施绘制在图形上。

5)Web监控能力

q  Zabbix能够模拟浏览器请求一个网站,并检查返回值和响应时间。

6)多种可视化的展现

q  能够自定义监控的展现图,将多种监控数据集中展现到一张图中。

q  网络拓扑图。

q  自定义Screens和Slide shows能够将多种图形集中展现。

q  报表功能。

q  资源使用状况的监控展现。

7)历史数据的存储

q  数据存储在数据库中。

q  历史数据的存放周期可配置。

q  按期删除过时的历史数据。

8)配置很是容易

q  配置比较简单,只须要如下两步便可。

q  第一步:添加设备。

q  第二步:应用模板便可完成监控。

9)使用模板

q  模板能够分组

q  模板具备可继承性。

10)     网络发现

q  支持自动发现网络设备和服务器(能够经过配置自动发现服务规则实现。)

q  Agent自动发现

q  支持自动发现实现动态监控的批量监控(支持自定义)内置的自动发现包括文件系统、网络接口、SNMP OLD,可定制自动发现。

11)     快速的访问接口

q  Web页面基于PHP

q  远程访问。

q  日志审计。

12)     API功能

q  应用API功能能够方便地和其余系统结合,包括手机客户端的使用。

13)     系统权限

q  不一样的用户展现监控的资源不一样。

q  对用户的身份认证

14)     程序特性

q  用C语言编写,其性能和内存开销很是小。

15)     大型环境的支持

q  利用Zabbix-Proxy方式便可轻松构建远程监控。

3.  Zabbix安装与部署

 

3.1.3故障处理

1.数据库文件找不到的问题。

修改/etc/zabbix/zabbix_server.conf中的Dbsocket配置。

DBSocket=/tmp/mysql.sock

注意:修改成mysql.sock实际存在的路径后,重启服务。

2.数据库没法链接

解决办法有三种:检查数据库服务是否正常;防火墙是否容许;权限可否访问。

3.2     Zabbix-Agent客户端的安装

参考: 

3.3     Zabbix-Get的使用

Zabbix-Get是Zabbix中的一个程序,用于Zabbix-Server到Zabbix-Agent的数据获取,一般能够用来检测验证Agent的配置是否正确。用法以下:

[root@linux-node1 ~]# zabbix_get        

usage: zabbix_get [-hV] -s <host name or IP>
[-p <port>] [-I <IP address>] -k <key>

-s:远程Zabbix-Agent的IP地址或者是主机名。

-p:远程Zabbix-Agent的端口。

-l:本机出去的IP地址,用于一台机器中又多个网卡的状况。

-k:获取远程Zabbix-Agent数据所使用的Key。

示例以下:

[root@linux-node1 ~]# zabbix_get -s 10.0.0.4  -k system.uname

Linux linux-node2.example.com 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64

zabbix_get命令能够很方便地知道key是否能正常获取到数据,这在测试自定义监控的时候特别有用。

3.4     Zabbix相关术语(命令)

q  zabbix_server

zabbix_server是Zabbix服务端的核心程序。

q  zabbix_proxy

zabbix_proxy是Zabbix代理服务的程序,用于分布式监控proxy模式中。

q  zabbix_agent

zabbix_agent是用超级服务(xinetd)的方式来启动的,对应的配置文件为zabbix_agent.conf

zabbix_agentd是以独立进程的方式来启动的,对应的配置文件为zabbix_agentd.conf

zabbix_agent是Zabbix专用客户端的程序。

q  zabbix_java_gateway

Zabbix的Java采集服务端,用于JMX的监控方式。

q  zabbix_sender

Zabbix的Trapping模式,将采集到的数据经过定时任务等主动发送给zabbix_server。

q  zabbix_get

zabbix_get是一个数据获取测试命令,至关于snmp中的snmpwalk。

相关文章
相关标签/搜索