zabbix监控
为什么要监控
对于运维人员来说,监控是非常重要的,因此如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监控他们,我们则需要依靠一些外部的工具,而zabbix就是一个被广泛使用的,可以实现集中监控管理的应用程序。
监控范畴
监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控。
怎么监控
远程管理服务器
如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM
监控硬件
查看硬件的温度/风扇转速,电脑有鲁大师,服务器就有ipmitool。
使用ipmitool实现对服务器的命令行远程管理。
yum -y install OpenIPMI ipmitool # IPMI在物理机可以成功,虚拟机不行
查看cpu相关
lscpu、uptime、top、vmstat、mpstat
查看内存相关
free
查看磁盘相关的
df、dd、iotop
查看网络相关的
ifconfig、iftop
除了使用系统命令查看计算机状态数据,还可以使用监控工具,如zabbix监控系统。
企业级监控解决方案——Zabbix
Zabbix是一个高度集成的企业级开源网络监控解决方案,提供分布式监控以及集中的web管理界面。
zabbix具备常见商业监控软件所具备的功能,例如主机性能监控,网络设备性能监控,数据库性能监控,ftp、http等通用协议的监控,能够灵活利用可定制告警机制,允许用户对事件发送基于E-mail的告警,保证相关人员可以快速解决。
zabbix提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。
Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置,而被监控对象只需要支持SNMP协议或者运行Zabbix agents代理程序即可。服务端监听端口为10051,而被监控端即Zabbix——agents代理程序监控10050端口。
zabbix主要功能
Zabbix是一个高度集成的网络监控套件,可实现如下功能:
1、数据收集:自定义间隔收集收据
2、灵活的阀值定义:灵活地自定义故障阀值,Zabbix中称为触发器(trigger), 存储在后端数据库中;
3、高级告警配置:可以自定义告警升级(escalation)、接收者及告警方式;通过远程命令实行自动化动作;
4、实时绘图:通过内置的绘图引擎实现监控数据实时绘图;
5、具备应对复杂环境情况:通过Zabbix proxy可以非常容易的创建远程监控;
zabbix监控范畴
- 硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
- 系统监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
- Java监控:Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。
- 网络设备监控:Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。
- 应用服务监控:Zabbix Agent UserParameter
- MySQL数据库监控:percona-monitoring-plulgins
- URL监控:Zabbix Web 监控
zabbix监控组件
主要包括:Zabbix Server、Zabbix Proxy、Zabbix Agent
每个模块工作职责:
1、Zabbix Server:Zabbix Server为核心组件,用来获取agent存活状况及监控数据。所有的配置、统计、操作数据均通过Server进行存取到database;
2、Zabbix Database:用户存储所有zabbix的配置信息、监控数据的数据库;
3、Zabbix Web:Zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix Server运行在同一台主机上,也可以单独部署在独立的服务器上;
4、Zabbix Proxy:常用于分布监控环境中,代理zabbix Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)
5、Zabbix Agent:部署在被监控主机上,负责收集被监控主机的数据,并发往Server端或Proxy端;
另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置
zabbix常用的监控架构平台
server-agentd模式:
将zabbix agent部署到被监控主机上,由agent采集数据,报告给zabbix server,zabbix server将从agent端接收到的信息存储于zabbix database,如果管理员需要查看各种监控信息,则需要zabbix web,zabbix web是使用php编写的,所以,如果想要使用zabbix web展示相关监控信息,需要依赖LAMP或LNMP环境。不管是zabbix server,或是zabbix web,他们都需要连接zabbix database获取相关数据。
server-proxy-agentd模式:
当监控规模变得庞大时,我们可能有成千上万台设备需要监控,那如何分摊巨大的监控压力呢?其实,zabbix天生就有处理这种问题的能力,因为zabbix支持分布式监控,我们可以把成千上万的被监控对象分成不同的区域,每个区域中设置一台代理主机,区域内的每个被监控对象的信息被agent采集,提交给代理主机,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给zabbix server处理。这样,zabbix proxy分摊了zabbix server的压力,同时,我们还能够通过统一的监控入口,监控所有的对象。
Zabbix运行过程图
一个监控系统运行的大概的流程是这样的:
agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。