一、zabbix概念
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让运维人员快速定位/解决存在的各种问题。
二、zabbix企业级架构
当监控规模变得庞大,zabbix支持分布式监控,把成千上万台的被监控对象分成不同的区域,每个区域中设置一台代理主机,区域内的每个被监控对象的信息被agent采集,提交给代理主机,在这个区域内,代理主机的作用就好比zabbix server,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,zabbix proxy分摊了zabbix server的压力
三、zabbi主要数据收集方式
1、Agent数据收集
通过agent客户端监控,zabbix-agent会主动收集本机的监控信息并通过TCP协议与zabbix-server传递信息。Agent监控方式分为主动和被动模式。在被动模式下,zabbix-agent监听10050端口,等待zabbix-server的监控信息收集信息请求;在主动模式下,zabbix-agent收集监控信息并通过10050端口主动将数据传给zabbix-server所在服务器的10051端口。支持多平台部署,如Windows、Linux、Unix、openBSD、AIX、solaris、Mac等操作系统都可以安装。Zabbix客户端占用的系统资源很少,可以获取CPU、内存、网卡、磁盘、网络接口、日志等数据。
CPU
- CPU负载
- CPU使用率
- CPU每个进程的利用率
磁盘(disk)
- 磁盘读取/写入
- 磁盘IO性能
内存
- 内存使用率
- 虚拟内存
文件
- 文件大小
- 文件使用时间
- 文件是否存在
- 总和检验码,校验总和(保证数据的完整性和准确性)
- MD5 hash(消息摘要算法,哈希算法)
- RegExp search
网络
- 网卡下行、上行速率
- 转发的数据包/字节数
- 错误/丢弃数据包
- 网站性能和资源的可用性
- 网络冲突
日志
- 文本日志
- 事件日志
服务
- 服务状态(ssh,ntp,ldap,smtp,ftp,http,pop,nntp,imap)
- DNS解析
- TCP连接
- TCP响应时间
- Windows、Linux等服务状态
- 处理内存使用情况
2、Trapper监控方式
Zabbix获取数据时有时会出现超时,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常。Trapper监控方式使用zabbix-sender程序主动向zabbix-server发送数据。与主动模式的区别是不需要安装客户端。key的名称和发送的数据内容都可以灵活定义。发送的信息采用JSON格式,遵循zabbix-sender协议。可以自定义脚本利用zabbix-sender协议来zabbix-server发送信息。
3、SNMP监控方式
SNMP全称Simple Network Management Protocol,即网络管理协议,包括进程管理和被管理设备两部分。作为一种国际通用的网络管理协议被广泛的应用于各种交换机,路由器等网络设备的管理上,而现在也越来越多被用于对服务器的监控上。
4、JMX监控方式
JMX,全称Java Management Extensions,即Java管理拓展,是Java平台为应用程序,设备,系统等植入管理功能的框架。在zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采集。
5、IPMI监控方式
IPMI,全称Interlligent Platform Management Interface,即智能平台管理接口,原本是Intel架构中企业系统的周边设备所采用的一种工业标准,以后成为业界通用的标准。用户可以利用IPMI监控服务器的物理特性,如温度,电压,电扇工作状态,电源供应以及机箱等指标,也可以管理硬件设备,重启,关机获取硬件日志等等。
监控的部分内容:
- CPU和机箱的温度
- 风扇转速
- 系统电压
- 物理磁盘的状态
- 维护LED状态
6、zabbix自带监控功能
支持TCP、ICMP、SSH、Telnet检测方式。
四、zabbix安装方式
- 从源安装
- 从包安装
- 从容器安装
- 下载虚拟设备安装
五、web界面及相关功能
(一)监测
1、仪表盘
显示重要的监控信息,用户可自定义所展示的内容。可添加仪表盘,编辑仪表盘,删除仪表盘,仪表盘之间可相互切换。所添加的内容包含以下图内容:
2、问题
在监控--问题下,可查看目前所遇到的问题,可定向搜索不同主机群组、主机、应用集等不同范围下所存在的问题,同时可以将问题以CSV格式导出。
3、概览
提供各主机之间触发状态下的对比,zabbix4.2中可选择所有主机群组或指定的主机群组的数据对比,同时可选择对比类型,触发器和数据。同时可以定向选择不同条件下的数据。
触发器概况图:
数据图:
4、web检测
显示web网站的监测信息,可选择展示时间,如下图所示:
5、最新数据
展示不同主机群组,不同主机,不同应用集的图形信息。可显示堆叠数据图和一般数据图,勾选框可多选,将综合展示在一张图下。
CPU堆叠数据图:
CPU数据图:
6、图形
显示已配置的任何自定义图形,选择主机组,主机,然后从右侧的下拉列表中选择图形
7、聚合图形
将所要展示的不同图形放在同一页面上,便于运维人员分析,支持图形自定义展示。
8、拓扑图
用于展示链路状况,判断网络连接情况
正常链路
异常链路
大型网路链路图
9、自动发现
自动发现网络下新增的设备的展现页面,发现的设备按发现的规则排序
10、服务
显示IT基础结构或业务服务的状态。
详细情况见下文配置-服务
(二)资产记录
记录服务器,具体配置参数是什么,比如IP地址、别名、mac地址、操作系统和一些备注等,需要运维人员自己添加信息。
(三)报表
1、系统信息
显示zabbix-server重要数据的摘要
2、可用性报表
显示每个触发器处于问题/正常状态的时间比例
显示主机触发器:
显示模板触发器:
3、触发器Top 100
显示前一百个状态一直变化的触发器,按变化次数排序
4、审计
查看运维人员在前端所做的更改
5、动作日志
当监控项触发报警时,将通过邮件、短信、微信等渠道向指定人员发送信息的日志文件
6、警报
显示发送给用户警告信息的数量
(四)配置
1、主机群组
主机在主机群组下,可创建主机群组
2、模板
模板下包含应用集、监控项、触发器等信息,可导入、导出模板。模板可以直接加入主机群组或主机,同时模板关联其他模板,解决主机只能使用一个模板问题,使主机可以同时运用多个模板。正在使用该模板的主机,该模板应用集、监控项、触发器等配置变化,主机所监测的信息随模板同时更新。
3、主机
显示所有已连接、已断开的主机,可以创建、导入、导出、启用、禁用、删除、更新主机。在主机模块中,可以对主机进行相关配置。配置流程是主机群组>主机>模板>应用集>监控项>触发器>图形
应用集:小范围的监测集,比如CPU的应用集包含了CPU负载、CPU使用率、CPU每个进程的利用率等相关监控项
监控项:zabbix具体监控了设备哪些哪些方面,运维人员可根据实际情况创建自己所要监控的项。监控项在应用集下。
触发器:触发器是“评估”由项目采集的数据并表示当前系统状况的逻辑表达式。当监控项用于采集系统的数据时,始终遵循这些数据是非常不切合实际的,因为这些数据始终在等待一个令人担忧或者值得关注的状态。然而这个“评估”数据的工作可以留给触发器表达式。
当超过设置的阈值,系统就会发出警报。
图形:为监控项创建可视化图形,便于观察理解
自动发现规则:用于自动发现设备的相关配置信息,并且可以设置监控项、触发器、图形等相关配置。
Web场景:可创建web场景,用于监控web页面。
4、维护
用于在维护期间发送警告信息,运维人员自行定义。
5、自动发现与动作
用于自动发现指定网段下的主机,并分配不同的主机群组,加载不同的模板。
6、关联项事件
一个监控项超出阈值,触发多个告警的情况,设置关联项事件防止多个告警产生。例如一台交换机发生 unreachable 故障,会导致所有连接到这台交换机的主机发生 unreachable 告警,结果就是收到无数告警邮件。可以通过 Trigger与 Event correlation解决
7、服务
服务器或者某项服务、业务的可用率,不懂技术的上级领导会过问最近服务器可用率如何、所有api的状况怎么样?通常一些技术人员会说负载怎么样,哪些cpu使用率怎么样,硬盘使用情况,api的响应速度都保持在多少、响应时间都在多少?还没等说完,领导就打断了。他不关心这些细节,更不懂这些技术。他想要的是一个结果。比如说服务器故障率在0.001,api的响应率在99.99%。这就是Services的功能。
列如:API的SLA中各个子service都有各自的可用率,结构图如下
该结构的每个节点都具有属性状态。根据选择算法进行状态计算并传播到上层节点。服务(services)最底层的服务是触发器。该节点的状态依赖于触发器的状态。
(五)管理
1、总体设置(general)
修改GUI相关配置
管家:作用是删除数据库里的过期数据,在zabbix的web页面中,我们就可以很方便的对不同类型的数据设置保留时间。
图片:显示Zabbix中可用的所有图像,图像存储在数据库中。可创建、删除图片。
2、agent代理程序
配置分布式监视的代理服务器
3、认证
验证用户身份信息的方式
4、用户群组与用户
用户在用户群组下,群组设置群下所有用户前端访问的类型、访问的方式、访问的主机群组,所能进行的操作。在用户栏下设置用户名称,用户密码,报警媒介。
5、报警媒介
设置报警媒介,可添加报警的方式,如:微信、QQ、TIM等。
6、脚本
用于清理日志、数据库数据,控制客户端、执行客户端发生警告时自动解决问题的命令等功能。
7、队列
显示监控项等待刷新的时间,可以看到每种agent类型刷新时间,通过queue可以更好的体现出监控的一个指标。
六、Zabbix API(二次开发)
可以用Zabbix API将Zabbix功能集成到第三方的软件中。Zabbix API允许与任何能够拨打或接听外部呼叫的软件轻松集成。开发web界面、开发手机端zabbix、获取zabbix指定数据、创建zabbix监控项等。