Zabbix 概述
- Zabbix 概述
- 1. Zabbix 功能
- 2. Zabbix 架构
- 3. Zabbix Server 启动进程
- 4. Zabbix 术语
Zabbix 概述
运维行业有句话: “无监控、不运维”,监控俗称“第三只眼”。没了监控,基础运维,业务运维都是“瞎子”。 所以说监控是运维这个职业的根本。 尤其当前 DevOps 大行其道,用监控数据给自己撑腰,这显得更加必要,有人说运维是背锅侠,那么有 了监控,就有了充足的数据,一切以数据说话,所以作为一个运维工程师,如何构建一套监控系统是你的第一件工作。
监控功能
- 在需要的时刻,提前预警即将出问题,避免故障发生
- 实时监控系统和业务,当出问题之后,通过发出告警,提醒相关人员,快速可以找到问题的根源,从而及时处理问题
- 可以实现网站,应用或者服务器的故障自愈, 保证高可用性
- 以图形或易观察的方式呈现当前以及过往的状态,便于分析和预测系统发展趋势
需要监控什么
监控一切需要监控的资源,包括:服务器,网络设备,业务应用,云服务等
硬件监控 | 通过远程控制卡: DeLL 的 iDRAC,HP 的 ILO 和 IBM 的 IMM 等 使用 IPMI 来完成物理设备的监控工作。通常必须要监控包括温度、硬盘故障等 路由器,交换机(端口,光衰,日志),打印机等 |
---|---|
系统监控 | cpu,内存,硬盘使用率,硬盘 IO,系统负载,进程数 |
服务监控 | nginx,apache, php-fpm,mysql,memcache,redis ,tomcat,JVM,TCP 连接数 |
性能监控 | 网站性能,服务器性能,数据库性能,存储性能 |
日志监控 | 系统会产生系统日志,应用程序会有应用的访问日志、错误日志,服务有运行日志等, 可以使用ELK 来进行日志监控 |
安全监控 | 用户登录数,passwd 文件变化,本地所有文件改动 Nginx + Lua 编写一个 WAF 通过 kibana 可以图形化的展示不同的攻击类型的统计。 |
网络 监控 | IP,端口,URL,DB,ping 包,IDC 带宽网络流量,网络流出流出速率,网络入流量,网络出流量,网络使用率,SMTP,POP3 |
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。功能强大,成熟可靠,使用者众多
官网: https://www.zabbix.com/
Zabbix 是一个企业级分布式开源监控解决方案,支持实时监控数干台服务器,虚拟机和网络设备,采集百万级监控指标,适用于任何 IT 基础架构、服务、应用程序和资源的解决方案
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用 户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix 所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
1. Zabbix 功能
Zabbix 是一个高度成熟完善的网络监控解决方案,包含了多种功能。
数据采集
- 历史数据, 即记录每个监控项采集到的每个监控值
- 趋势数据, 主要保留某个监控项一个小时内历史数据的最大值、最小值和平均值以及该监控项一个 小时内所采集到的数据个数
- 可用性和性能检查;
- 支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
- 自定义检查;
- 按照自定义的时间间隔采集需要的数据;
- 通过 Server/Proxy 和 Agents 来执行数据采集。
灵活的阈值定义
- 您可以参考后端数据库定义非常灵活的告警阈值,即触发器
高度可配置化的告警
- 可以根据递增计划、接收者、媒介类型自定义发送告警通知;
- 使用宏变量可以使告警通知变得更加高效有用;
- 自动操作包含远程执行命令。
实时图形
- 使用内置图形功能可以将监控项实时绘制成图形。
Web 监控功能
- Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
丰富的可视化选项
- 可以组合多个监控项到单个视图中,创建自定义图表;
- 网络拓扑图;
- 以仪表盘样式展示自定义聚合图形和幻灯片演示;
- 报表;
- 监控资源的更高层次展示视图(业务视图)。
历史数据存储
- 存储在数据库中的数据;
- 历史配置;
- 内置数据管理机制
配置简单
- 将被监控设备添加为主机;
- 主机一旦添加到数据库中,就会采集数据用于监控;
- 将模板用于监控设备。
使用模板
- 模板中分组检查;
- 模板可以关联模板,继承已关联模板的属性。
网络发现
- 自动发现网络设备;
- Zabbix Agent 发现设备后自动注册;
- 自动发现文件系统、网络接口和 SNMP OIDs 值。
快捷的 Web 界面
- 基于 PHP 的 Web 前端;
- 可以从任何地方访问;
- 您可以定制自己的操作方式;
- 您可以通过审计日志来查看你的操作。
Zabbix API
- Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。
权限管理系统
- 安全的用户身份验证;
- 指定的用户只能查看指定的权限范围内的视图。
功能强大且易于扩展的 Zabbix Agent
- 部署于被监控对象上;
- 支持 Linux 和 Windows
二进制守护进程
- 为了更好的性能和更少的内存占用,采用 C 语言编写;
- 便于移植。
适应更复杂的环境
- 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控
2. Zabbix 架构
Zabbix SERVER
- Zabbix server 是 Zabbix 软件的核心组件
- Zabbix Agent 向其报告可用性、系统完整性信息和统计信息。
- Zabbix server 也是存储所有配置信息、统计信息和操作信息的核心存储库。
- Zabbix server 也是 Zabbix 监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。
- 基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web 前端和数据库。
- Zabbix 的所有配置信息都存储在 Server 和 Web 前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。
数据库
- 所有配置信息以及 Zabbix 采集到的数据都被持久存储在数据库中
- 可以支持 MySQL,PostgreSQL,Oracle 等多种数据库
WEB 界面
- WEB 界面是 Zabbix server 的一部分,用于实现展示和配置的界面
- 通常(但不一定)和 Zabbix server 运行在同一台物理机器上
- 基于 Apache(Nginx) + PHP 实现,早期只支持 LAMP 架构,从 Zabbix5.0 开始支持 LNMP
AGENT
- Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。从 Zabbix5.0 开始支技 Zabbix Agent2
PROXY
- Zabbix Proxy 可以代替 Zabbix Server 采集性能和可用性数据
- Zabbix Proxy 在 Zabbix 的部署是可选部分
- Zabbix Proxy 的部署可以很好的分担单个 Zabbix server 的负载
Java 网关
- Zabbix 要监控 tomcat 服务器和其它 JAVA 程序,需要使用 Java gateway 做为代理,才能从 JAVA 程序中获取数据
内部配置的数据流程
- Zabbix 内部的数据流对 Zabbix 的使用也很重要。首先,为了创建一个采集数据的监控项,就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“ X 个 server 上 CPU 负载过高”这样的告警, 您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU 的监控项,最后创建一 个触发器,用来触发 CPU 负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
3. Zabbix Server 启动进程
zabbix server 进程说明
Zabbix 服务器端进程有多达二十多种 当在操作系统下用 ps aux 命令来查看时,往往看到很多 zabbix 系统进程,而这些系统进程在 zabbix 内部称为实例。这些实例各处负责不同的工作,就形成了不同种类型的进程),各种类型进程的说明如下:
- 报警器(alerter)——该类型的进程是用来发送报警通知的
- 配置同步器(configuration syncer)——用于将配置文件中的配置信息同步到内存中缓存
- 数据发送器(data sender)——服务器代理节点用于发送数据的进程(服务器端没有这类进程)
- 数据库看门狗(db watchdog)——该进程用于监视 zabbix 系统的数据库状态,当数据库状态变为不可用时,发 送警告信息(服务器代理端不支持这类型进程)。
- 自动发现器(discoverer)——用于自动发现设备的进程
- 步骤(escalator)——用于处理动作中的步骤的进程
- 心跳发送器(heartbeat sender)——服务器代理端用于发送心跳信息(服务器端没有这类型的进程)
- 历史数据同步器(history syncer)——用于写历史数据表
- 管家(housekeeper)——用于清理过期的历史数据的进程
- HTTP 轮询器(http poller)——用于轮询 web 类的监控项目
- Ping 检查器(icmp pinger)——用于定期的进行 ICMP PING 检查
- ipmi 轮询器(ipmi poller)——用于定期进行 ipmi 监控项目的检查
- java 轮询器(java poller)——用于轮询 java 监控项目
- 轮询器(poller)——用于普通的被动监控项目的轮询
- 服务器代理轮询(proxy poller)——用于服务器代理的被动轮询
- 分布式节点看守器(node watcher)——用于在不同的分布式节点发送历史数据和配置信息更新的进程
- 自我监控(self-monitoring)——用于收集 Zabbix 系统内部的监控信息
- 定时器(timer)——用于处理触发器中也时间相关的函数和维护模式的进程
- 陷入器(trapper)——用于处理主动采集、陷入以及分布式节点间或服务器代理的通信
- 不可到达轮询器(unreachable poller)——用于轮询不可到达到的设备
- vmware 收集器(vmware collector)——负责从 vmware 服务进程中收集数据(服务器代理端不支持这种类型的进程)
可用的mode参数包括:
- avg——指定类型所有进程的平均值
- count——返回创建的指定类型进程的数量
- max——最大值
- min——最小值
- ——进程号,含义参见“描述”中所述的;
可用的state参数包括:
- 繁忙(busy)——表示处于繁忙状态的进程;
- 空闲(idle)——表示处于空闲状态的进程;
4. Zabbix 术语
- 被监控: 即 Zabbix 监控的主机或设备
- 监控项 item:即 Zabbix 监控的相关指标,比如:CPU 利用率,内存使用率,TCP 连接数等
- 应用集 Application:为方便管理众多的监控项,可将多个同类型的监控项进行归类,纳入一个集合中, 即应用集
- 触发器 Trigger:是一个表达式,或者说一个条件,如磁盘利用率超过 80% 等,当触发条件后,会导致一个触发事件,这个事件会执行一个或多个动作
- 动作 Action:动作是触发器的条件被触发后的行为,可以是发送一条短信,微信或邮件,或是重启某个服务
- 告警:当触发器和动作二者结合起来时,就构成了的告警机制,比如 cpu 的使用率达到 80% 以上,触发了报警动作,系统将自动发送一封邮件到指定的邮箱。然后运维可以及时的去处理此错误。
- Web 监测:对 WEB 服务进行检测,比如:访问指定网站是否可正常访问
- 模板 Template: 可以方便地应用于多个主机的一组实体的集合。而这些实体包括:
- items(监控项)
- applications(应用集)
- triggers(触发器)
- graphs(图形)
- screens (聚合图形,自Zabbix 2.0起)
- low-level discovery rules (自动发现规则 ,自 Zabbix 2.0 起)
- web scenarios (web 场景, 自 Zabbix 2.0 起)
由于现实中的许多主机是相同或类似的,所以,为一个主机创建的一组实体(项目,触发器,图 形,…)可能对许多人有用。虽然可以将它们复制到每个新的主机上,但过程很繁琐。可以将需要的实体都复制到一个模板,然后根据需要将模板应用于尽可能多的主机。
当模板链接到主机时,模板的所有实体(项目,触发器,图形,…)都将添加到主机。
模板通常用于为特定服务或应用程序(如Apache,MySQL,PostgreSQL,Postfix …)分组实体,然后应用于运行这些服务的主机。
使用模板的另一个好处是当所有主机都需要更改时。只需要在模板上更改某些内容将会将更改应用到所有链接的主机。
创建新模板时,链接的模板选项卡允许将一个或多个“嵌套”模板链接到此模板。所有实体(项目,触发 器,图表等)将从链接的模板继承。
因此,使用模板是减少工作量并简化 Zabbix 配置的好方法。
模板分为内置模板和自定义模板