Skip to content

IT 运维面试问题总结-监控、网络管理(Prometheus、Zabbix)

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 的压力
  • 简化分布式监控的维护

更新: 2020-10-11 12:00:23
原文: <https://www.yuque.com/fcant/notes/tx8w8n&gt;

最近更新