Zabbix的原理

一、Zabbix简介:

zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

1、为什么需要对各类系统运行进行监控?

当系统构建时的正常流程中,通常是不允许未被监控的系统或应用上线的,因为来被监控的系统存在不可预知性,故障未知等不确定因素,且无法及时被发现并排除的,这时整个架构或系统来说都是非常大的风险因患,所以我们在原则上是要对整个的架构或系统进行监控,随时监控各个方面的指标是否正常,以提高系统的稳定性。

2、Zabbix是如何实现系统系统监控的

一个完整的监控系统所需的指标:

 
  
  1. 1、采样:周期性的获取某个被检测指标的相关数据

  2. 2、存储:将采样的数据存储在指定的存储系统中,Zabbix默认是MySQL对于数据的监控可分为两大类:历史数据:可理解为过去某一时间点的数据趋势数据:可理解为过去某一段时间的数据

  3. 3、展示:采集完数据后,为了使数据能更直观的展现在用户面前,可将采集的数据进行二次处理,做成图像,Zabbix就是使用PHP程序将采集的数据通过Web Gui直观的展示给用户。

  4. 4、报警:当监控的指标出现异常时需要金控能自动的发出警报信息,甚至警报后能自动完成修复。

3、监控目的

监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用。

对系统不间断时实监控

实际上是对系统不间断的时实监控

实时反馈系统当前状态

我们监控某个硬件、或者系统,都是需要能时实看到当前系统的状态,是正常、异常、或是故障。
保证服务可靠性安全性

我们监控的目录就是要保证系统、服务、业务正常运行
保证业务持续稳定运行

如果我们的监控做的很完善,即使出现故障,能第一时间接收到故障报报警,在第一时间处理解决,从而保证业务持续性的稳定运行。

4、监控方法

了解监控对象

了解CPU是如何工作的。
性能基准指标

我们要监控这个东西的什么属性?比如如CPU的使用率、负载、用户态、内核态、上下文切换。
报警阈值定义

怎么才算是故障,比如CPU的负载到底多少算高?内核态,用户态分别跑多少算高?
故障处理流程

收到了故障报警,那么我们怎么处理?

5、监控核心

发现问题

当系统发生故障报警,我们会收到故障报警的信息。
定位问题

故障邮件一般都会写某某主机故障、具体故障的内容,我们需要对报警内容进行分析,比如一台服务器连不上:我们就需要考虑是网络问题、还是负载太高导致长时间无法连接,又或者某开发触发了防火墙禁止的相关策略等等,我们就需要去分析故障具体原因。
解决问题

当然我们了解到故障的原因后,就需要通过故障解决的优先级去解决该故障。
总结问题

当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳,避免以后重复出现。

6、zabbix监控对象

zabbix支持监控各种系统平台,包括linux和windows等主流操作系统,也可以借助SNMP或者SSH协议监控路由交换设备。

zabbix如果部署在服务器上,可以监控其CPU、内存、网络等硬件参数,也可以监控具体服务或者应用程序,服务运行情况及性能

① 硬件监控(zabbix IPMI interface)

通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控备监控的对象的物理特征,比如电压、温度、风扇状态、电源状态等。
② 系统监控(zabbix agent interface)

通过专用的代理程序进行监控,与常见的master/agent模型类型,如果监控对象支持对应的agent,推荐选这种方式。
③ java监控(zabbix JMX interface)

通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JMX虚拟机时,使用这种方法非常不错的选择。
④ 网络设备监控(Zabbix SNMP Interface )

通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。
⑤ 应用服务监控Zabbix Agent UserParameter

⑥ MySQL数据库监控:percona-monitoring-plulgins

⑦ URL监控:Zabbix Web 监控 

7、Zabbix架构

7.1 server-client架构

① 也就是zabbix的最简单的架构

② 监控机器和被监控机器之间不经过任何处理

③ 直接由zabbix-server和zabbix-agent之间进行数据交换。

④ 适用于网络比较简单,尽量在局域网内,设备比较少的监控环境。

 Zabbix的原理_第1张图片

 

7.2 server-proxy-client架构

① 其中proxy是server、client之间沟通的一个桥梁

② proxy本身没有前端,而且本身并不存放数据,只是将agentd发来的数据暂时存放,然后再交给server。

③ 该架构经常是和master-node-client架构做比较。一般适用于跨机房、跨网络的中型网络架构的监控。

 Zabbix的原理_第2张图片

 

7.3 master-node-client架构

① 该架构是zabbix最复杂的监控架构,使用于跨机房、跨网络设备较多的大型环境。每一个node都会同步server端。相当于也是一个server端

② node下面可以接proxy,也可以直接接clinet。

③ node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损不会对影响node节点的正常工作,但是会影响zabbix-server整体的完整性。

 Zabbix的原理_第3张图片

 

7.4 zabbix支持的监控内容

① 硬件
电源状态、cpu温度、机器温度、风扇。
物理磁盘、raid、内存状态、网卡状态等。
② 软件
HTTP接口、RPC接口的请求量、耗时、异常量等。

JVM上的线程数、死线程数、活跃线程数、GC耗时等。

(GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的。)
线程池、连接池的连接数、线程数、拒绝任务、任务耗时等。

日志和业务指标,包括错误日志、访问日志、订单量、PV流量等。

③ 数据
数据库连接、QPS、TPS
并行会话数、缓存数、锁状态等
Nginx的活跃、丢弃、等待连接数、错误等
Tomcat上的线程数、请求量、耗时、内存消耗等
缓存、内存消耗、内存碎片、消息队列等数据

8、zabbix常用术语

主机(host)

要监控的设备,可以有ip或是主机名(必须可解析)指定。
主机组(host group)

主机的逻辑容器,包含主机和模板,主机通常在给用户或是用户组指派监控权限时使用。
监控项(item)

一个特定指定的相关数据,比如内存的大小,CPU的使用率,甚至是服务的运行状态等,监控项数据来源于被监控对象,并且每一个监控项都由一个key值来标识。
触发器(trigger)

一个表达式,用于评估监控的值是否在合理的范围,当接收的值超出触发器的规定时,就被认为是故障,如果超出后再次符合,就被认为是正常。
事件(event)

触发器触发的一个特定时间,或者zabbix定义的一个自定上限注册主机的事件,。
动作(action)

指根据配置,zabbix对于触发器触发的特定时间进行处理的具体措施,如执行某个脚本,或是向管理员邮箱发送邮件等等
报警升级(escalation)

发送警报或是执行远程命令的自定义方案。
媒介(media)

发送通知(告警)的手段,比如:电话,微信,邮件,短信,企业微信,钉钉,等等
通知(notification)

通过指定媒介,向用户发送的有关事件的信息
远程命令

指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。
模板(template)

用于快速被监控主机的预设条目结合,通常包括了监控项、触发器、应用等,模板可以直接连接到某个主机
应用(application)

一组监控的集合
web场景(web scennario)

用于检测web站点可用性的一个或多个HTTP请求
前端(frontend)

zabbix的web接口

 

你可能感兴趣的:(网络,数据库,服务器)