【监控体系】最全面系统的Zabbix讲解 | 含源码&监控类型整理
主讲人:王鸿杰,云智慧/企业效能部/架构师
讲师简介:云智慧架构师,PHP/PECL 开发组成员,PECL/SeasClick、PECL/SeasLog Maintainer。6 年研发经验,2018 年加入透视宝团队,致力于 APM 产品的架构与研发,专注于服务的性能分析与优化。2021 年加入效能工程团队,为高效而生,立足于使用最少的资源来解决最大的问题,研究各种不同的 bot 技术,让整个团队更高效运转。
公司简介:云智慧集团成立于2009年,是国内领先的全栈智能业务运维解决方案服务商。经过多年自主研发,公司形成了从IT运维、电力运维到IoT运维的产业布局,覆盖ITOM、ITOA、ITSM、DevOps以及IoT几大领域,为金融、政府、运营商、能源、交通、制造等上百家行业的客户,提供了数字化运维体系建设及全生命周期运维管理解决方案。云智慧秉承Make Digital Online的使命,致力于通过先进的产品技术,为企业数字化转型和提升IT运营效率持续赋能。
从本篇内容你能得到:
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
-
当添加(自动发现)一个 host,并且为 host 添加对应的模板的时候,Portal 会解析出来对应的 item, preprocess,trigger 然后放在对应的 Db 表里面。
-
Server 的 dbconfig_thread 会从 Db 拿到对应的数据放在共享内存中,然后poller_thread 进程读取到对应的 items,开启与 Agent 建立连接,遍历 items 从 Agent(snmp,简单检查 等) 获取到对应的指标数据
-
然后将 指标数据给 preprocessing_manager_thread 进程,preprocessing_manager_thread 进程会安排对应的preprocessing_worker 进程对数据进行 preprocess
-
最后由 dbsyncer_thread 进程将数据放入 Db 中,Portal 界面从 Db 拿到对应的数据信息绘制和显示
-
dbsyncer_thread 同步数据到DB,遍历数据 并计算 expression 表达式计算指标,最后触发 escalator_thread 和 alerter_thread 做出相应的动作。
-
对于可监控指标,Agent 自带多种可监控指标 cmd,Agent 只能监控内置的监控指标,可以通过插件拓展 可监控指标。
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 进程(被动)
-
1. snmp|SNMP代理检查
-
simple_checks|简单检查(应用层状态检查)
-
calculated|计算监控项
-
internal|Zabbix内部检查
-
ssh_checks|SSH检查
-
telnet_checks|Telnet检查
-
external|外部检查
-
aggregate|汇总检查
-
odbc_checks|ODBC监控
httppoller 进程(被动)
-
http|HTTP 检查
ipmi_poller_thread 进程(被动)
-
ipmi|IPMI检查
icmp pinger 进程(被动)
-
simple_checks|简单检查(icmp 检查)
trapper 进程(主动)
-
trapper|捕捉器监控项
-
log_items|日志文件监控
-
snmptrap|SNMP traps
preprocess 进程(Follow me)
-
dependent_items|相关项目(从属监控项)
按客户端依赖划分指标类型
无依赖
-
snmp|SNMP代理检查
-
ipmi|IPMI检查
-
simple_checks|简单检查
-
external|外部检查
-
odbc_checks|ODBC监控
依赖其他监控项
-
calculated|计算监控项
-
aggregate|汇总检查
依赖第三方
-
zabbix_agent|Zabbix代理检查 (Agent)
-
snmptrap|SNMP traps (snmptrap)
-
log_items|日志文件监控 (Agent)
-
ssh_checks|SSH检查 (ssh 秘钥或密码)
-
telnet_checks|Telnet检查 (Telnet Server和 Telnet 密码)
-
trapper|捕捉器监控项 (Zabbix Sender)
-
http|HTTP 检查 (http 接口)
IDEA
被动监控对 Zabbix Server 来说会有大的压力
从监控类型来看,Zabbix 更多的是被动监控,主动监控只有 Agent Active、SnmpTrap,Sender,但是由于 Zabbix Agent 的强大,很多场景下主动监控的指标覆盖度完全能跟被动监控硬怼。
所以要根据具体监控场景,主动和被动互相搭配,耗时的指标更加倾向于主动监控。
Zabbix监控项类型梳理
附件:
请您添加:xiaoyuerwise,备注“附件”获取,或从本文底部扫码获取。
Zabbix的自动发现
自动发现是伴随着指标监控来的,当发现能有采集到预设的指标时,这台主机就会被标记为可用,然后触发预设的Action,通知或者自动添加监控模板等。
自动发现分类
-
简单检查类
-
Agent 类型
-
snmp 类型
-
ICMP (ping) 类型
自动发现流程
-
配置 IP 段
-
配置自动发现指标
-
配置发现动作 Action
-
发现主机后添加 event
-
escalator_thread 进程处理对应的 event
Zabbix的模板结构
模板结构
从属指标
计算指标
Agent源码
附件:
请您添加:xiaoyuerwise,备注“附件”获取,或从本文底部扫码获取。
写在最后
近年来,在AIOps领域极速发展的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需求在各行业迸发。基于此,云智慧在2021年8月发布了AIOps社区,旨在树起一面开源旗帜,为各行业客户、用户、研究者和开发者们构建活跃的用户及开发者社区,共同贡献及解决行业难题、促进该领域技术发展。
成立近半年,社区先后开源了数据可视化编排平台-FlyFish、运维管理平台OMP、云服务管理平台-摩尔平台、Hours算法等产品。其中FlyFish斩获中国开源云联盟2021优秀开源项目奖。OMP运维管理平台入选2021 年度 OSC 中国开源项目「最受欢迎项目」榜单。并在业内首次开源了智能运维开源数据集-GAIA数据集,填补了AIOps开源集数据领域的空白。
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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
v76.01 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式 | 百篇博客分析OpenHarmony源码
百篇博客分析|本篇为:(共享内存篇) | 进程间最快通讯方式 进程通讯相关篇为: v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志 v27.05 鸿蒙内核源码分析(互斥锁) | 同样是锁它确更丰满 v28.04 鸿蒙内核源码分析(进程通讯) | 九种进程间通讯方式速揽 v29.05 鸿蒙内核源码分析(信号量) | 谁在解决任务间的同步 v30.07 鸿蒙内核源码分析(事件控制) | 多对多任务如何同步 v33.03 鸿蒙内核源码分析(消息队列) | 进程间如何异步传递大数据 v76.01 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式 概念 共享好端端的一词,近些年被玩坏了,共享单车,共享充电宝,共享办公室,共享雨伞... 甚至还有共享女朋友,真是人有多大胆,共享有多大产。但凡事太尽就容易恶心到人,自己也一度被 共享内存 恶心到了,一直不想碰它,拖到了现在才写。 共享内存的原理简单,目的是为了进程间通讯,方法是通过映射到同一块物理内存。它是一种稀缺资源由内核按资源池方式管理,数量有限,默认是 192个,用资源ID唯一标识,用户进程需要时通过系统调用向内核申请共享...
- 下一篇
Jpom v2.8.7 已经发布,Java 项目在线管理
Jpom v2.8.7 已经发布,Java 项目在线管理 此版本更新内容包括: 新增功能 【server】新增系统配置-节点白名单、节点系统配置分发功能,方便集群节点统一配置 【server】新增构建快捷复制功能,方便快速创建类型一致的项目 【server】新增系统配置-配置菜单是否显示,用于非超级管理员页面菜单控制 【server】新增节点统计功能,快速了解当前所有节点状态 【server】新增节点心跳检测配置system.nodeHeartSecond 新增缓存管理查看定时任务执行统计 【server】新增接触 SSH 终端禁止命令权限(感谢@ooooooam) 解决BUG、优化功能 【server】新增全局关闭引导导航配置jpom.disabledGuide(感谢@南有乔木) 【server】修复快速安装服务端 ping 检查超时时间 5ms to 5s 项目文本文件支持在线实时阅读(感谢@) 【server】控制台日志支持搜索高亮 【server】跨工作空间更新节点授权将自动同步更新 【server】取消节点监控周期字段(采用全局统一配置) 【server】监控周期调整为 c...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池