prometheus简介
共 3218字,需浏览 7分钟
·
2021-06-17 11:06
prometheus简介:https://www.cnblogs.com/yangxiaoyi/p/7398156.html
作者:Go_小易
1.1 什么是prometheus?
多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。
灵活的查询语句(PromQL)。
无依赖存储,支持 local 和 remote 不同模型。
采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
监控目标,可以采用服务发现或静态配置的方式。
支持多种统计数据模型,图形化友好。
1.2 核心架构
我们将通过prometheus的基础结构来详细了解,他的功能以及如何实现监控、告警的。如下如所示:
prometheus server: 定期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的 targets 拉取数据。
exporters:负责向prometheus server做数据汇报的程序统。而不同的数据汇报由不同的exporters实现,比如监控主机有node-exporters,mysql有MySQL server exporter,更多请参考链接。
pushgateway:主要使用场景为:Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。总结:实现类似于zabbix-proxy功能;
Alertmanager:实现prometheus的告警功能。
webui:主要通过grafana来实现webui展示。
1.3 适用场景
二、基础概念
2.1 数据模型
2.2 时序4种类型
Prometheus 时序数据分为 Counter, Gauge, Histogram, Summary 四种类型。
Counter:表示收集的数据是按照某个趋势(增加/减少)一直变化的,我们往往用它记录服务请求总量,错误总数等。例如 Prometheus server 中 http_requests_total, 表示 Prometheus 处理的 http 请求总数,我们可以使用data, 很容易得到任意区间数据的增量。
Gauge:表示搜集的数据是一个瞬时的,与时间没有关系,可以任意变高变低,往往可以用来记录内存使用率、磁盘使用率等。
Histogram:Histogram 由 <basename>_bucket{le="<upper inclusive bound>"},<basename>_bucket{le="+Inf"}, <basename>_sum,<basename>_count 组成,主要用于表示一段时间范围内对数据进行采样,(通常是请求持续时间或响应大小),并能够对其指定区间以及总数进行统计,通常我们用它计算分位数的直方图。
Summary:Summary 和 Histogram 类似,由 <basename>{quantile="<φ>"},<basename>_sum,<basename>_count组成,主要用于表示一段时间内数据采样结果,(通常是请求持续时间或响应大小),它直接存储了 quantile 数据,而不是根据统计区间计算出来的。区别在于:
a. 都包含 <basename>_sum,<basename>_count。
b. Histogram 需要通过 <basename>_bucket 计算 quantile, 而 Summary 直接存储了 quantile 的值。
2.3 总结