监控系统Zabbix的简单介绍

来源:互联网 发布:天下三萝莉脸数据 编辑:程序博客网 时间:2024/05/18 02:58
 有句话叫“无监控不运维”,我们在生产中,产品上线需要事先做测试,我们怎么才能知道它的性能参数是否符合我们的要求,是否满足正常上线的需求,就要通过监控,监控重要指标是否满足要求,监控是否哪有异常,等等;
    现在很多监控系统,其中用处最广的就数Zabbix!!
nagios:告警系统,默认不提供存储系统,不能实现长期趋势显示;
Cacti:只是展示界面,周期性对SNMP接口采集数据,然后数据放在mysql中,展示出来;(Cron+SNMP+MySql)

Zabbix简介:

    Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。监视各种参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题;可以实现跨机房的分布式应用监控;
    系统监视:包括监视事件和监视性能,前者检测IIS不正常运行的原因,后者用于建立用户系统性能的基准。

    监控流程大致分:数据采集、数据存储、告警和展示;

数据采集通道:

            1、SNMP:Simple Network Management Protocol:简单网络管理协议:具有数据采集功能和一部分监控功能;大部分的网络功能设备都可以,默认内嵌有snmp接口;
           2、 IPMI :硬件平台须有这类接口才能实现;
           3、agent:  默认使用的;
           4、JMX:Java Management eXtensions:JVM內建的管理扩展接口:获取Jvm内部关键数据指标;

采集到的数据的类型:

                数值:
                    整数
                    浮点数
                字符串:
                    字符串
                    文本
agent端采集数据是通过item监控项实现的;item有两个重要参数:Key和Type
Type:使用哪类接口与其相关的Type才有效;一般用的是是agent interface,主要用主动(Zabbix agentactive))和被动(Zabbix agent)两项;
Key:可以使内建命令,或者远程命令(自定义的);可以带参数;每一个Key在命令行对应一个命令,可以获取到相关数据;

主动监控:由agent端主动向server端发送采集的数据;
被动监控:由server端向agent端要采集数据;

存储的值:

                As is:不对数据做任何处理
                Delta:(simple change),本次采样减去前一次采样的值的结果
                Delta:(change per second),本次采样减去前一次采样的值,再除以经过的时长;

触发器trigger:界定某特定的item采集到的数据的非合理区间或非合理状态:是逻辑表达式;

可取最近十次的平均值;
触发器存在可调用的函数:nodata()last()date()time()now()dayofmonth()...
eg:last0==last#1-----》使用最后一次采集到的数据
Severity严重级别
        Not classified未分级
       Information一般级别
        Warning 警报
        Average 橙色警报
        High    红色警报
        Disaster灾难级的警报

触发器表达式:{hostname:key[paramters].function(arguments)}<operator><constant>
即:{主机名:key[参数].相关函数(参数)}算术表达式 阈值

如下图所示:收集数据信息方式:
    1、server端可以通过zabbix_get去agent端要数据;
    2、由agent端通过zabbix_sender向server发送数据;
    3、由proxy代理接收agent采集的数据,然后再交于server统一存储;
用proxy代理收集数据可以减轻server的负担,本来要与所有的agent通信采集数据,现在只需要与proxy一个通信就可以了;当然也可以将部分agent分给proxy,部分agent分给server直接通信;
在server端上的/etc/zabbix/zabbix_server.conf配置文件中主要定义跟数据库相关信息;日志文件:/var/log/zabbix/zabbix_server.log;
在proxy端,配置文件:/etc/zabbix/zabbix_proxy.conf;日志文件:/var/log/zabbix/zabbix_proxy.log;
在agent端:配置文件:/etc/zabbix/zabbix_agentd.conf;日志文件:/var/log/zabbix/zabbix_agentd.log;

Zabbix程序组件:

zabbix_server:服务端守护进程;接收agent发送的报告信息,任务:配置、统计数据、操作数据;
Zabbix_database:专用于存储所有配置信息,以及由zabbix收集的数据;
Web Interface:zabbix的GUI接口,通常与server运行在同一台主机上;
zabbix_get:命令行工具,手动测试向agent发起数据采集请求;
zabbix_sender:命令行工具,运行于agent端,手动向server端发送数据;
zabbix_proxy:可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据,并统一发给server;
zabbix_agent:agent守护进程;部署在被监控主机上(server上也要配置,被监控),负责收集本地数据并发给server或者proxy;
 

相关术语(又叫逻辑主件):

主机(host):被监控的物理设备实体;可由ip或者DNS名称指定;
主机组(host group):将一类主机组合,(还可以套模板----》即:使组内的主机都一样的模板(监控指标等一系列设定),方便管理);
监控项(item):每一个被监控主机上的可被采集的指标;对于监控对象,每个item都是由“key”标识的;
触发器(trigger):对采集的数据进行不合理空间评估,不满足OK,满足就报警;一个表达式
事件(event):每当触发器执行一次OK---Problem(|Problem---OK)就会产生事件,或者,新的agent或重新上线的agent的自动注册也会引起事件的发生;四种事件源:trigger(触发), discovery(主机发现), auto registration(自动注册), internal(Zabbix自身发生的内部事件)
动作(action):事件的处理方法,通过包含操作(如发送通知)和条件(何时执行操作);
报警升级(escalation):执行的动作:发送警报或者执行远程命令的自定义方案;
媒介(media):发送通知的手段或通道;eg:Email,SMS(目前我们大陆用不了)
通知(notification):向特定用户发送其关注的事情
采集--》判断阈值范围,满足就OK,不满足就触发事件,事件发生的动作,
远程命令(remote command):预定义的命令,被监控主机处于某特定条件时自动执行;
模板(template):用于快速定义被监控主机的预设条目集合,通常包含:item、trigger、graph、screen、application和low-level discovery rule;模板可以直接链接到单个主机;
应用(application):同一类item的集合;
web场景(web scennario):
前端:zabbix的web接口

工作过程简述:

当zabbixserver定期的接收到agent发送来(sender)的采集数据后(或从agent端要(get)过来数据后),存到mysql,然后进行一些计算(最大值、最小值、平均值等);但在存储之前,要先判断一下是否满足触发器定义的表达式,即是否在合理取值范围内,合理---OK,不合理---Problem,一旦触发器有状态改变,就会触发一个事件发生,事件会伴随着定义的一个动作(eg:执行远程命令,或者报警);过一段时间,若想查看之前的数据变化,就可以打开展示接口查看;
即:
采集---》判断阈值范围---》若是有从OK变problem或者由problem变OK的状态转换----》触发事件的发生---》执行一些动作

原创粉丝点击