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