IT运维 网络管理 Prometheus Zabbix

1、简述常见的监控软件?

常见的监控软件有:

  • Cacti:是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。
  • Zabbix:Zabbix是一个企业级的高度集成开源监控软件,提供分布式监控解决方案。可以用来监控设备、服务等可用性和性能。
  • Open-falcon:open-falcon是一款用golang和python写的监控系统,由小米启动这个项目。
  • Prometheus:Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。

    2、简述Prometheus及其主要特性?

    Prometheus是一个已加入CNCF的开源监控报警系统和时序列数据库项目,通过不同的组件完成数据的采集,数据的存储和告警。
    Prometheus主要特性:
    多维数据模型

  • 时间序列数据通过 metric 名和键值对来区分。

  • 所有的 metrics 都可以设置任意的多维标签。
  • 数据模型更随意,不需要刻意设置为以点分隔的字符串。
  • 可以对数据模型进行聚合,切割和切片操作。
  • 支持双精度浮点类型,标签可以设为全 unicode。

灵活的查询语句(PromQL),可以利用多维数据完成复杂的查询
Prometheus server 是一个单独的二进制文件,不依赖(任何分布式)存储,支持 local 和 remote 不同模型
采用 http 协议,使用 pull 模式,拉取数据,或者通过中间网关推送方式采集数据
监控目标,可以采用服务发现或静态配置的方式
支持多种统计数据模型,图形化友好
高效:一个 Prometheus server 可以处理数百万的 metrics
适用于以机器为中心的监控以及高度动态面向服务架构的监控

3、简述Prometheus主要组件及其功能?

Prometheus 的主要模块包含:prometheus server, exporters, push gateway, PromQL, Alertmanager, WebUI 等。

  • prometheus server:定期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的 targets 拉取数据,用于收集和存储时间序列数据。
  • exporters:负责向prometheus server做数据汇报,暴露一个http服务的接口给Prometheus server定时抓取。而不同的数据汇报由不同的exporters实现,比如监控主机有node-exporters,mysql有MySQL server exporter。
  • push gateway:主要使用场景为,当Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。此时需要push gateway接入,以便于在监控业务数据的时候,将不同数据汇总, 由 Prometheus 统一收集。实现机制类似于zabbix-proxy功能。
  • Alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警,即主要实现prometheus的告警功能。AlertManager的整体工作流程如下图所示:
  • webui:Prometheus内置一个简单的Web控制台,可以查询指标,查看配置信息或者Service Discovery等,实践中通常结合Grafana,Prometheus仅作为Grafana的数据源。

    4、简述Prometheus的机制?

    Prometheus简单机制如下:

  • Prometheus以其Server为核心,用于收集和存储时间序列数据。Prometheus Server 从监控目标中拉取数据,或通过push gateway间接的把监控目标的监控数据存储到本地HDD/SSD中。

  • 用户接口界面通过各种UI使用PromQL查询语言从Server获取数据。
  • 一旦Server检测到异常,会推送告警到AlertManager,由告警管理负责去通知相关方。

    5、简述Prometheus中什么是时序数据?

    Prometheus 存储的是时序数据,,时序数据是指按照相同时序(相同的名字和标签),以时间维度存储连续的数据的集合。时序(time series) 是由名字(Metric),以及一组 key/value 标签定义的,具有相同的名字以及标签属于相同时序。

    6、简述Prometheus时序数据有哪些类型?

    Prometheus 时序数据分为 Counter, Gauge, Histogram, Summary 四种类型。

  • Counter:计数器表示收集的数据是按照某个趋势(增加/减少)一直变化的,通常用它记录服务请求总量,错误总数等。

  • Gauge:计量器表示搜集的数据是一个瞬时的,与时间没有关系,可以任意变高变低,往往可以用来记录内存使用率、磁盘使用率等。
  • Histogram:直方图 Histogram 主要用于对一段时间范围内的数据进行采样,(通常是请求持续时间或响应大小),并能够对其指定区间以及总数进行统计,通常我们用它计算分位数的直方图。
  • Summary:汇总Summary 和 直方图Histogram 类似,主要用于表示一段时间内数据采样结果,(通常是请求持续时间或响应大小),它直接存储了 quantile 数据,而不是根据统计区间计算出来的。

    7、简述Zabbix及其优势?

    Zabbix是一个企业级的高度集成开源监控软件,提供分布式监控解决方案。可以用来监控设备、服务等可用性和性能。其主要优势有:

  • 自由开放源代码产品,可以对其进行任意修改和二次开发,采用GPL协议;

  • 安装和配置简单;
  • 搭建环境简单,基于开源软件构建平台;
  • 完全支持Linux、Unix、Windows、AIX、BSD等平台,采用C语言编码,系统占用小,数据采集性能和速度非常快;
  • 数据采集持久存储到数据库,便于对监控数据的二次分析;
  • 非常丰富的扩展能力,轻松实现自定义监控项和实现数据采集。

    8、简述Zabbix体系架构?

    Zabbix体系相对清晰,其主要组件有:

  • Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行。

  • Database Storage:专用于存储所有配置信息,以及有zabbix收集的数据。
  • Web interface(frontend):zabbix的GUI接口,通常与server运行在同一台机器上。
  • Proxy:可选组件,常用于分布式监控环境中,代理Server收集部分被监控数据并统一发往Server端。
  • Agent:部署在被监控主机上,负责收集本地数据并发往Server端或者Proxy端。

    9、简述Zabbix所支持的监控方式?

    目前由zabbix提供包括但不限于以下事项类型的支持:

  • Zabbix agent checks:这些客户端来进行数据采集,又分为Zabbix agent(被动模式:客户端等着服务器端来要数据),Zabbix agent (active)(主动模式:客户端主动发送数据到服务器端)

  • SNMP agent checks:SNMP方式,如果要监控打印机网络设备等支持SNMP设备的话,但是又不能安装agent的设备。
  • SNMP traps
  • IPMI checks:IPMI即智能平台管理接口,现在是业界通过的标准。用户可以利用IPMI监视服务器的物理特性,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。

    10、简述Zabbix分布式及其适应场景?

    zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix server 的压力。
    此外,当所有agents和proxy报告给一个Zabbix server并且所有数据都集中收集时,使用proxy是实现集中式和分布式监控的最简单方法。
    zabbix proxy 使用场景:

  • 监控远程区域设备

  • 监控本地网络不稳定区域
  • 当 zabbix 监控上千设备时,使用它来减轻 server 的压力
  • 简化分布式监控的维护