Bootstrap

【监控体系】全面系统的Zabbix讲解 | 含源码&监控类型整理

主讲人:王鸿杰,云智慧/企业效能部/架构师

讲师简介:云智慧架构师,PHP/PECL 开发组成员,PECL/SeasClick、PECL/SeasLog Maintainer。6 年研发经验,2018 年加入透视宝团队,致力于 APM 产品的架构与研发,专注于服务的性能分析与优化。2021 年加入效能工程团队,为高效而生,立足于使用最少的资源来解决最大的问题,研究各种不同的 bot 技术,让整个团队更高效运转。

从本篇内容你能得到:

1. Zabbix是什么、能做到什么

2. Zabbix组件详解、架构和处理工作流程

3. Zabbix各监控项类型的采集实现(SNMP、ICMP、Ping、简单检查等)

4. Zabbix 模板组成结构与实现

5. Zabbix Agent源码结构与实现分析

6. Zabbix 自动发现逻辑的源码结构与实现详解

全栈监控是什么?

监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控。

基础层:主要偏硬件,监控主机和底层资源。比如cpu、 内存、网络吞吐、硬盘I/O、硬盘使用等

中间层:包括nginx、Redis、MQ、MySQL、 Tomcat等

应用层: HTTP访问的吞吐量、响应时间、 返回码、调用链路分析、性能瓶颈, 还包括用户端的监控等

日志:syslog、nginx log、mysql log等

为什么使用Zabbix?

目前开源的解决方案中,Zabbix和Prometheus是使用较多的两个方案,这两个方案的区别和优势是什么?

对于偏传统的行业,云环境较少的场景下,是比较适合于Zabbix的使用,当然Prometheus是未来发展的方向。

Zabbix是什么?

Zabbix源码主要组成:

frontends:php,主要负责前端的业务操作

Zabbix agent:采集数据

Zabbx server:同步配置,处理数据,分析告警等。

Zabbix处理流程:

主要由四部分组成:

Portal-DB-Server-Agent

详细的工作流程如下:

详细流程可查看下图:

Zabbix是怎么做的?

Zabbix Process

Zabbix Server

  • dbconfig_thread: 配置同步到共享内存,保证所有进程都可读

  • poller_thread: 主动监控,解析 items 调用 Agent

  • *trapper_thread: 收集 Agent 上报上来的数据

  • pinger_thread: 定期 ping 所有监控主机,简单检查 ICMP

  • *alerter_thread: 告警消息处理进程从 IPC 读出需要发动的消息,发出告警

  • housekeeper_thread: 管家进程,过期数据清理

  • discoverer_thread: 主机、服务的自动发现

  • escalator_thread: 根据触发器的值判断是否告警,具体执行什么动作

  • dbsyncer_thread:同步数据到 db,并计算触发器值也同步到db

  • selfmon_thread: 自监控

  • preprocessing_worker_thread: 数据预处理进程,数据从 poller 和 trapper 进程过来

Zabbix Agent

  • collector_thread 周期采集基础信息,主要是内存和 CPU,储存于共享内存中

  • listener_thread 用于接收 server 或者 proxy 分配的的采集任务,被动采采集

  • active_checks_thread 主动采集上报

指标类型

按进程(处理方式)划分指标类型

Poller 进程(被动)

httppoller 进程(被动)

  • http|HTTP 检查

ipmi_poller_thread 进程(被动)

  • ipmi|IPMI检查

icmp pinger 进程(被动)

  • simple_checks|简单检查(icmp 检查)

trapper 进程(主动)

preprocess 进程(Follow me)

  • dependent_items|相关项目(从属监控项)

按客户端依赖划分指标类型

无依赖

依赖其他监控项

依赖第三方

IDEA

被动监控对 Zabbix Server 来说会有大的压力

从监控类型来看,Zabbix 更多的是被动监控,主动监控只有 Agent Active、SnmpTrap,Sender,但是由于 Zabbix Agent 的强大,很多场景下主动监控的指标覆盖度完全能跟被动监控硬怼。

所以要根据具体监控场景,主动和被动互相搭配,耗时的指标更加倾向于主动监控。

Zabbix监控项类型梳理

附件:

请您添加:xiaoyuerwise,备注“附件”获取,或从本文底部扫码获取。

Zabbix的自动发现

自动发现是伴随着指标监控来的,当发现能有采集到预设的指标时,这台主机就会被标记为可用,然后触发预设的Action,通知或者自动添加监控模板等。

自动发现分类

自动发现流程

Zabbix的模板结构

模板结构

从属指标

计算指标

Agent源码

附件:

请您添加:xiaoyuerwise,备注“附件”获取,或从本文底部扫码获取。

写在最后

近年来,在AIOps领域极速发展的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需求在各行业迸发。基于此,云智慧在2021年8月发布了AIOps社区,旨在树起一面开源旗帜,为各行业客户、用户、研究者和开发者们构建活跃的用户及开发者社区,共同贡献及解决行业难题、促进该领域技术发展。

成立近半年,社区先后开源了数据可视化编排平台-FlyFish、运维管理平台OMP、云服务管理平台-摩尔平台、Hours算法等产品。其中FlyFish斩获中国开源云联盟2021优秀开源项目奖。OMP运维管理平台入选2021 年度 OSC 中国开源项目「最受欢迎项目」榜单。

2021年11月,云智慧正式成为中国开源云联盟成员单位,2022年1月,云智慧入选SegmentFault 思否「2021 中国技术品牌影响力企业榜单」,这一切都代表着开发者和社区对我们的认可,这也更加坚定了云智慧开源战略的决心。

如果您对云智慧AIOps感兴趣,可以通过下方链接了解我们,也可以添加小助手微信,申请加入开发者交流群,可与大咖进行1V1交流!

云智慧AIOps社区:https://www.cloudwise.ai/

Github地址: https://github.com/CloudWise-OpenSource/FlyFish

Gitee地址: https://gitee.com/CloudWise/fly-fish