小阿轩yx-Zabbix企业级分布式监控环境部署
前言
- “运筹帷幄之中,决胜千里之外”
- 监控在 IT 运维中占据着重要地位,按比例说占 30% 也不为过
- 在监控系统开源软件中有很多可选择的工具,但是真正符合要求的、能够真正解决业务问题的监控系统软件却凤毛麟角
监控系统的功能概述
监控
有两个内容
- 检测
- 控制
重点在第一个字眼
- 即检测、预防的意思
对应的英文单词
- Monitoring
在计算机领域可以分为5种监控类型
- 应用性能监控
- 业务交易监控
- 网络性能监控
- 操作系统监控
- 网络站点监控
上面5种类型将监控概念划分成了多个领域
通常所说的监控,都会模糊的包含以上5个细分领域
任何一个 IT 业务环境中,都会存在各种各样的硬件设备、软件应用等
按照逻辑层次可以将监控行为划分为5个层次
- 基础设施监控
- 系统层监控
- 应用层监控
- 业务监控
- 端用户体验监控
最底层基础设施监控
- 一般由运维人员负责
- 涉及到的方面比较接近硬件体系
例如
- 网络
- 交换机
- 路由器
这些设备的可靠性和稳定性直接影响到上层服务应用的稳定性,所以需要对网络流量、丢包情况、错包情况、连接数等等基础设施的核心指标进行监控
系统层监控
- 这层涉及到方面和服务紧密相关
例如
- 对 url 访问的性能
- 访问的调用数
- 访问的延迟
- 对服务提供性能进行监控
- 服务的错误率
同时对 sql 也需要进行监控,查看是否有慢 sql
- 对于 cache 来说,需要监控缓存的命中率和性能,每个服务的响应时间等等
业务监控
具体指什么?
举个例子
一个典型的交易网站,需要关注用户登录情况、注册情况、下单情况、支付情况等等
这些直接影响到实际触发的业务交易情况
- 可以提供给运营商和公司高管们需要关注的数据
- 直接以数据支撑公司在战略层面的决策和方向
端用户体验监控
一个应用程序可能通过三种方式交付到用户手上
- app
- h5
- pc端
用户通过浏览器、客户端打开连接到我们的服务
在用户端
- 用户的体验怎么样?
- 用户端性能怎么样?
- 有没有产生错误等等?
监控系统的实现原理
模块组成
大体可以分为两部分
- 数据采集部分
- 数据存储、分析告警、展示部分
这两部分构成了监控系统的基本模型
采集协议
按照支持的协议方式,监控 IT 数据采集可以分为两种
- 专用客户端采集
- 公用协议采集
监控模式
监控系统数据采集可以分为
- 被动模式
- 主动模式
被动模式
- 指的是服务器端到客户端采集数据
主动模式
- 客户端主动上报数据到服务器
一般来说
- 被动模式对监控端服务器的开销较大,适合小规模的监控环境
- 被动模式对监控端服务器的开销较小,适合大规模的监控环境
代理架构
对于大规模的监控环境
- 被监控节点较多
- 并且监控类型也很多
- 监控产生的数据和网络连接开销非常大
数据采集方式除了使用主动模式之外,还需要使用代理的架构
通过代理架构分摊服务器端的性能开销
代理架构还支持跨地域、跨网络的分布式监控
常见的代理架构
- C/S/P架构(即 Client/Proxy/Server)
监控系统的开源产品
zabbix
- 是一款出色的企业级运维监控平台
- 可用于监控从服务器、网络设备到 Web 应用程序和数据库的性能和可用性的一切
- 可以安装在 Linux、AIX、Windows、Solaris、MacOS X、FreeBSD、OpenBSD等系统上使用,具有非常良好的适配能力
Prometheus+Grafana
- 是一个开源系统监控和警报工具包
- 主要用于对基础设施的监控
包括
- 服务器(CPU、MEM等)
- 数据库(MYSQL、PostgreSQL等)
- Web服务等
几乎所有东西都可以通过 Prometheus 进行监控
Cacti
- 是一款网络流量检测图形工具
- 连接到 RRDTool,生成与网络数据相关的图标,具有非常强大的数据用户管理功能
- 可以指定每一个用户能查看树状结构、host 以及任何一张图
- 还可以与 LDAP 结合进行用户验证,同时也能自己增加模版
Nagios
- 是一个监控系统运行状态和网络信息的监控系统
- 它可以监控所指定的本地或远程主机以及服务,同时提供异常通知功能等
- 能够监控几乎所有类型的组件
- 网络协议
- 操作系统
- 系统指标
- 应用程序
- 服务
- web 服务器
- 网站
- 中间件等
Checkmk
- 是一个高度可扩展的监控工具
- 可监控服务器、网络、云资产、数据库、容器、物联网等
它有两种模式可用
- 基础版完全开源并提供免费和无限制的监控
- 企业版附带附加功能
Checkmk 具有部署快、高度自动化、配置灵活的特点。
OpenNMS
- 是一个企业级基于 Java/XML 的分布式网络和系统监控管理平台。
- 它能够显示网络中各中终端和服务器的状态和配置,为管理网络提供有效的信息。
- 它专为Linux 设计,但也支持 windows、Solaris 和OSX。
OpenNMS 可以使用 JMX、WMI、SNMP、NRPE、XML HTTP、JDBC、XML、JSON 等收集系统指标。
Netdata
- 是一款 Linux 性能实时监测工具
- 它可以为 Linux 系统、应用程序、SNMP 服务等提供实时的性能监测
- 目前在物理系统、虚拟机、容器和物联网/边缘设备上运行
特点
- 监控指标多而广
- 数据收集速度快
可以同时并发监控数万个指标,交互式可视化和富有洞察力的健康警报,可以即时诊断基础架构中的异常情况。
Zabbix 系统概述
初识 Zabbix
- 由 Alexei Vladishev 创建
- 目前由 Zabbix SIA 主导开发和支持
- 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警以实现对服务器问题做出快速反应。
- 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
- 支持轮询和 trapping
- 所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问
- 基于 Web 的前端确保可以从任何位置评估网络状态和服务器的健康状况
如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用
- 是免费的
- 是在 GPL 通用公共许可证第2版下编写和分发的。意味着它的源代码是免费分发的,可供公众使用
Zabbix 是什么?
- 是一种企业级的分布式开源监控系统的解决方案
- 是一个基于 web 界面的提供分布式系统监控,以及网络监控功能的企业级开源解决方案。
- 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。
Zabbix 的功能特性
数据采集
- 可用性及性能检测
- 支持 SNMP(trapping 及 polling)、IPMI、JMX 监控
- 自定义检测
- 自定义间隔收集数据
- 三种角色
- Server
- Proxy
- Agent
灵活的阈值定义
- 允许灵活地自定义问题阀值,在 zabbix 中称为触发器(trigger),存储在后端数据库中。
高级告警配置
- 可以自定义告警升级(escalation)、接收者及告警方式
- 告警信息可以配置,并允许使用宏(macro)变量
- 通过远程命令实行自动化动作(action)
实施绘图
- 通过内置的绘图方法实现监控数据实时绘图。
扩展的图形化显示
- 允许自定义创建多监控项视图
- 生成网络拓扑(network maps)
- 自定义的面板(screen)和 slide shows,并允许在 dashboard 页面显示
- 生成监