zabbix监控又称为分布式监控
监控基本介绍:
使用 SNMP 协议获取主机 CPU、内存、磁盘、网卡流量等数据.
用脚本将获取到的 SNMP 数据存入数据库中,然后再使用一种名为 MRTG 的软件根据获取的数据绘制图表来分析数据的变化。MRTG(Multi Router Traffic Grapher),顾名思义,这款软件最初是设计用于监控网络链路流量负载的。它可以用过 SNMP 获取到设备的流量信息,并根据这些信息绘制成图表并保存为 PNG 格式的图片,再将这些 PNG 图片以HTML 页面的方式显示给用户.
不过,MRTG 展示的页面和图表曲线相对简陋,它在一张图片中最多只能绘制两个数据的变化曲线,并且由于是 PNG 格式的静态图片,所以无法针对某一时间进行细化展示。为了解决这个问题,人们又开发了 RRDTOOL 工具.
不过,直接使用 RRDTOOL 绘图操作起来很麻烦。同时,现如今的数据中心动辄成百上千的设备,一个个的去提取、绘制、监控显然是不现实的事情.
Cacti 是一套基于 PHP、MySQL、SNMP 及 RRDTool 开发的监测图形分析工具,Cacti 是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态了。Cacti 监控关注的是对数据的展示,
却不关注数据异常后的反馈。如果凌晨 3 点的时候设备的某个数据出现异常,除非监控人员在屏幕前发现这个异常变化,否则是没有任何报警机制能够让我们道出现了异常。
Nagios 是一款开源的免费网络监控报警服务,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机、路由器和防火墙等网络设置,打印机、网络投影、网络摄像等设备。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios 有完善的插件功能,可以方便的根据应用服务扩展功能。
Nagios 已经可以支持由数万台服务器或上千台网络设备组成的云技术平台的监控,它可以充分发挥自动化运维技术特点在设备和人力资源减少成本。只是 Nagios 无法将多个相同应用集群的数据集合起来,也不能监控到集群中特殊节点的迁移和恢复。
一个新的监控服务根据这个需求被设计出来,它就是 Ganglia。
Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia 的核心包含 gmond、gmetad 以及一个 Web 前端。
主要是用来监控系统性能,如:CPU 、内存、硬盘利用率, I/O 负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用,目前是监控HADOOP 的官方推荐服务。
Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
优点:
开源,无软件成本投入
Server 对设备性能要求低
支持设备多,自带多种监控模板
支持分布式集中管理,有自动发现功能,可以实现自动化监控
开放式接口,扩展性强,插件编写容易
当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动 从server 端去下载需要监控的 item 然后取数据上传到 server 端。 这种方式对服务器的负载比较小。
Api 的支持,方便与其他系统结合
缺点:
需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。
============================================================
在装之前需要先将本机的所有php的包卸载
yum erase php-common -y
安装过程:
服务器端:zabbix-server-21 192.168.0.21
客户端: agent-19 192.168.0.19
主域名解析
时间同步
互相ping通
===============
服务器端:
安装依赖性包:
# yum install httpd php mysql mysql-server php-mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel mod_ssl mod_perl mod_auth_mysql net-snmp fping iksemel OpenIPMI* dejavu-sans-fonts -y
安装zabbix:
# rpm -ivh zabbix-2.0.9-1.el6.x86_64.rpm zabbix-server-2.0.9-1.el6.x86_64.rpm zabbix-server-mysql-2.0.9-1.el6.x86_64.rpm zabbix-web-2.0.9-1.el6.noarch.rpm zabbix-web-mysql-2.0.9-1.el6.noarch.rpm
# mysql
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;
导入初始化数据:
# cd /usr/share/doc/zabbix-server-mysql-2.0.9/create && mysql zabbix < schema.sql && mysql zabbix < images.sql && mysql zabbix < data.sql
配置数据库:
# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
启动服务:
# service zabbix-server start
# chkconfig zabbix-server on
配置php时区:
# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
重启apache:
# /etc/init.d/httpd restart
浏览器:
http://192.168.0.21/zabbix/
默认用户名为 Admin,密码为 zabbix。
========================================
安装 Zabbix Agent:
接下来,我们使用另外一台服务器,在上面安装并配置 Zabbix Agent。与 Server 端不同,Agent端只需要安装 zabbix 和 zabbix-agent 包就可以了。
# rpm -ivh zabbix-2.0.9-1.el6.x86_64.rpm zabbix-agent-2.0.9-1.el6.x86_64.rpm
# vim /etc/zabbix/zabbix_agentd.conf
Server=Zabbix Server 端主机名或 IP 地址
ServerActive= Zabbix Server 端主机名或 IP 地址
Hostname=Agent 端的主机名
UnsafeUserParameters=1 //是否限制用户自定义 keys 使用特殊字符
启动 Zabbix Agent 并配置为开机启动
配置 SNMP
为了能够让 Zabbix Server 监控到更多的信息,我们把这台机器的 SNMP 功能开启起来。
安装 SNMP
#yum install lm_sensors net-snmp net-snmp-utils -y
配置:
# vim /etc/snmp/snmpd.conf
com2sec notConfigUser 192.168.0.250 publicsvr
access notConfigGroup "" any noauth exact all none none
view all included .1 80
启动服务:
# /etc/init.d/snmpd start
# lsof -i:161
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
snmpd 17966 root 8u IPv4 46763 0t0 UDP *:snmp
=================================
zabbix使用:
Host Groups(设备组) ->Hosts(设备) ->Templates(模板){模板内有众多Applications应用集也就是监控项组}
->Items (监控项,添加监控项后可添加图形) ->Triggers(触发器,监控项可以选择性关联触发器)->Actions (告警动作)
->Medias (告警方式)->User Groups(用户组)->Users(用户)
添加新的主机组
点击配置->主机组->创建主机组
在组名称中填入新的主机组名称,点击存档即可。
添加监控主机
点击配置->主机->创建主机,创建一台新的监控主机。
注1:
何为JMX?
JMX(Java Management eXtensions),即JAVA管理扩展,是一套标准的代理和服务,用来监视和管理JVM以及其运行的操作系统。
从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了下面9个MXBean:
ClassLoadingMXBean 用于 Java 虚拟机的类加载系统的管理接口。
CompilationMXBean 用于 Java 虚拟机的编译系统的管理接口。
GarbageCollectorMXBean 用于 Java 虚拟机的垃圾回收的管理接口。
MemoryManagerMXBean 内存管理器的管理接口。
MemoryMXBean Java 虚拟机的内存系统的管理接口。
MemoryPoolMXBean 内存池的管理接口。
OperatingSystemMXBean 用于操作系统的管理接口,Java 虚拟机在此操作系统上运行。
RuntimeMXBean Java 虚拟机的运行时系统的管理接口。
ThreadMXBean Java 虚拟机线程系统的管理接口。
注2:
IPMI方式主要是用来监控服务器硬件的健康状态:
服务器远程管理方面,典型的解决方案是基于服务器操作系统的软件管理方式,但这样的方式有一个致命的缺陷就在于对操作系统的依赖程度太高,一旦系统出现问题将无能为力
IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准,该标准由英特尔、惠普、NEC、美国戴尔电脑和SuperMicro等公司制定。用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等使用该种方式,用户无需担心操作系统的状态,即使系统崩溃也可以轻松得到机器状态、重要系统日志等信息,还能实现系统的重启、关机等控制。
IPMI的核心是一个专用芯片/控制器(叫做服务器处理器或基板管理控制器(BMC)),其并不依赖于服务器的处理器、BIOS或操作系统来工作,可谓非常地独立,是一个单独在系统内运行的无代理管理子系统,只要有BMC与IPMI固件其便可开始工作,而BMC通常是一个安装在服务器主板上的独立的板卡,服务器主板必须提供对IPMI的支持。IPMI良好的自治特性便克服了以往基于操作系统的管理方式所受的限制,例如操作系统不响应或未加载的情况下其仍然可以进行开关机、信息提取等操作。
下图为IPMI板卡:插在服务器主板上
设置监控项:
通过上图界面的模版标签,设置监控项(这里的监控项都是zabbix自带的)
批量添加监控主机:
利用zabbix的主动发现功能
点击配置->发现->创建发现规则
注意:上图中键值名称写错了,应该为"system.uname"
以上图片各项参数的含义是:
名称(Names)
:该项发现配置的名字,填写便于识别的名称。
由代理节点进行发现(Discovery by Proxy)
:是否通过代理发现
IP 范围(IP range)
:IP 地址的范围,可以写一段地址也可以写多段
延迟(Delay)
:检测的周期时间,默认为 3600 秒,即每小时执行一次发现
检查(Checks)
:设置通过何种方式发现监控主机,根据情况设置多种方式确保发现主机
设备唯一性标准(Device uniqueness criteria)
:设备的唯一名称
已启用(Enable)
:是否启用
Zabbix 代理选项中的配置含义是:
端口范围:Zabbix Agent 端的监听端口,默认为 10050
键值
:以 Zabbix Agent 端的哪些键值作为发现依据
为批量添加主机自动设置模版:
目的:自动发现的主机就可以完全自动化的加入监控
点击配置->动作->在创建动作按钮下面的事件源中选择“发现”->创建动作
该页有三栏组成:
第一栏:触发条件类型
第二栏:条件判断符号,满足/不满足。
第三栏:判断值
可以根据情况添加触发条件,例如下图的判断条件为:由发现规则“net192.168.42.0”发现的
主机,且收到 Agent 传来的对应值,则执行接下来的操作。
接下来,设置操作。配置好后,点击存档。
再次点击监测中->发现,就可以看到自动发现的主机。它们将自动的加入到监控当中。
添加新的监控项目:
项目(Item)指的是对于主机所监控的项目,例如监控 CPU 使用率、磁盘使用率、网卡流量等等。默认情况下,监控模版“Template OS Linux”所能监控的项目已经非常丰富了。我们也可以根据需要添加更多我们所需要的监控项目。
点击配置->主机可以列出当前所监控的主机及相关各项信息。如下图所示,我们对agent-19主机监控项目为83个。
点击项目,然后在新的页面中点击创建项目,进入项目配置页面。
注意!由于为了尽快获取到实验的演示效果,该监控项的更新间隔为 10 秒。在生产环境中,是不需要这么频繁的更新的!另外,不要忘记配置完成后点击存档,保存你的配置结果。
再回到项目页面,就可以看到新增了一个名为“web.server.online.monitor”的监控项目。
添加新的监控图形:
添加好新的监控项目后,并不会直接看到监控的信息。还需要在图形中增加该项目的图形输出,Zabbix才会把监控图表绘制出来。首 先 , 我 们 先 为 单 台 主 机 增 加
“web.server.online.monitor”的监控图形。
点击配置->主机->图形-> 创 建 图 形
按 照 如 下 图 配 置 , 在 项目 一 栏 中 , 点 击 添 加 ,然 后 选 择“web.server.online.monitor”,配置好后,不要忘记存档。
接下来,点击监控中->图形,选择对应的监控项就可以看到监控图形了。
默认情况下,将 Zabbix 显示语言设置为中文后,Zabbix 绘制图形中的文字会成为乱码,这是由于没有合适的中文字体而导致的。只需要将/usr/share/zabbix/fonts/graphfont.ttf 替换成合适的字体文件即可。
以上的配置是修改单台主机的图形输出。如果不想一台台机器的去设置,可以直接修改模版的图形输出配置就可以了。ssh
添加邮件报警功能:
配置 zabbix 的邮件报警功能需要以下三个角色的参与。
1、 示警媒体(Media)
2、 触发器(Triggers)
3、 动作(Action)
示警媒体:
指的是 zabbix 采用何种方式进行报警,目前 Zabbix 支持的示警媒体包括邮件、Jabber、短信。jabber是linux下一种即使通讯工具,可以和yahoo,icq等工具通信
触发器:
指的是当监控对象达到某个条件或条件集合的时候,触发 Zabbix 产生事件。
动作:
指的是 Zabbix 产生对应事件后,它通过示警媒体发送报警。
接下来,我们配置一个邮件报警功能的范例。效果是当 WEB 页面获取时间超过 3 秒,则触发报警,管理员将会收到一封 Zabbix 发出的报警邮件。
示警媒体的配置:
首先需要配置 Zabbix 的邮件功能。
点击管理->示警媒体->Email。
然后在页面中填入你的邮件服务器信息,例如下图所示:
配置完成后,不要忘记点击存档,保存你的配置。
接下来,设置接受报警用户的电子邮件。
点击管理->用户->点击 Zabbix Administrators 那一行的“用户”,可以看到这个用户组中的 Admin 用户。
点击用户别名,打开这个用户的配置页面,选择示警媒体,并点击添加。在弹出的页面中配置该用户的电子邮件。配置完成后,记得点击存档保存。
触发器的配置:
接下来,点击配置->主机
我们给 agent-19 这台主机增加一个触发器。点击 agent-19 这一行中的“触发器”,然后再点击创建触发器。
该页各配置项含义如下:
名称:填入触发器的名字
表达式:用于配置触发器的触发条件,点击添加按钮有条件选项。
多重事件产生:如果选中,则问题如果持续多重的发生则每次都触发,否则只触发一次
点击表达式右侧的添加按钮:
再点击项目右侧的选择,选择我们之前配置过的“web.server.online.monitor”,并设置触发的阀值,如下图所示
Zabbix 会自动生成表达式。接下来根据情况选择事件的严重性。配置完毕后,点击存档保存。
动作的配置:
点击配置->动作->事件源下拉菜单中选择触发器->创建动作
首先,对“动作”标签页进行配置。该页各配置项含义如下:
名称: 该动作的名称
默认操作步骤停留时间: 发现问题后多长时间执行动作 //为了测试这里可以设置到最少
默认标题: 报警信息的标题
默认消息: 报警信息的内容
恢复消息: 故障恢复后的消息内容。如果不开启则不会发送故障恢复通知。
这里的消息内容就是报警邮件的内容。如图所示,我们可以在内容中使用 Zabbix 内置宏,邮件发出时会自动将宏替换成对应的值。
接下来,选择“条件”标签页。在该页面中配置触发动作的条件。例如下图所示:
然后,再选择“操作”标签页。然后如下图进行配置。
需要特别解释一下的是“步骤”部分的配置。所谓步骤是指报警可以有多个步骤,做不同的报警。例如,自从 1 到 3,就是指报警的步骤有三个。步骤持续时间就是一定时间后如果监控人员仍未响应报警就进入下一个报警步骤。
例如,发邮件给你报警,如果60 秒后你没响应,那就发 jabber 信息提醒你。如果 60 秒后还没响应,那就发短信给你。要是还没响应,就没有然后了。你可以形象的把它理解为 Zabbix 的一哭二闹三上吊。
到此,一个邮件报警功能就配置完毕了。如果你想立即看到结果,可以修改触发器的条件,将条件的阀值设置为 N>0.0003。你马上就会收到 Zabbix 发来的报警邮件了。
添加维护期间:
维护期间(Maintenance)指的是服务器定期维护的时间段。Zabbix 可以设置在这个时间段里不需报警。
点击配置->维护->创建维护时段
以上页面配置项的含义为:
名称:该维护配置的名称。
维护类型:该时间段内是否需要采集数据,一般选择不采集。
作用中从/直到:该维护配置生效的时间范围。
以上页面配置项的含义为:
期间类型:配置维护的时间是一次性的还是循环性的。可选一次性/每日/每周/每月。
日期/每日/每周/每月:设置执行维护的时间。
维护期间长度:维护的时间长度。
以上页面配置项的含义为:
维护中主机:哪些主机在该维护期间进行维护。
维护中的组:哪些主机组在该维护期间进行维护。
报警事件确认:
概述
以往服务器出现报警,运维人员处理完事之后,报警自动取消,但是下一次出现同样一个错误,但是换了一个运维人员,他可能需要重新排查问题,直到问题处理完毕。针对这种情况,zabbix提供了event acknowledgment(事件确认)功能,一旦处理好某个问题,运维人员可以再里面写上备注,说明造成此问题的原因以及处理方法,下一次运维人员遇到这个报警先看前一次的事件确认。
Acknowledgment也可以在action中使用,一旦运维人员没有及时填写事件确认,可以向他的主管或者经理发送一个通知:xxx人员没有写事件确认.
事件确认界面
在zabbix首页的last 20 issues,在每条报警列都有Ack,如果是NO,说明还没有对事件进行确认,如果是Yes,表明已经提交了事件描述.
获取更多关于 Zabbix 的资料
以上,我们对 Zabbix 的一些主要和常用功能为大家做了介绍和讲解。
由于时间的关系,没有办法对 Zabbix 的所有功能为大家做面面俱到的教学。不过,Zabbix 的易用性是出了名的好的,其他方面的功能使用起来也非常的简单。
如果你想获取更多关于 Zabbix 的资料,可以参阅 Zabbix 官方文档:https://www.zabbix.com/documentation/start