
点击上方 云原生CTO,选择 设为星标
优质文章,每日送达


「【只做懂你de云原生干货知识共享】」
Prometheus 监控简介
我们的团队举办了一场关于 Prometheus 的研讨会,非常有见地,在原理和应用部分都非常有意义。观众人数非常惊人,除此之外,我们还收到了许多因虚拟聚会限制而无法加入的人的询问。所以,我们在社交平台上分享了录音和幻灯片。在这里,我们尝试在保持相同本质的同时分享研讨会的内容。
为什么要监控?
在当今时代,组织无法承受一秒钟的停机时间或应用程序的性能下降。但是,系统故障随时可能发生,我们将无法 24×7 全天候监控整个系统。为了确保应用程序始终可用、高性能和安全,工程师依赖于应用程序生成的不同类型的数据和支持它们的基础设施,无论是事件日志还是指标,或者两者都能够监控这些系统以及识别和问题的解决。
什么是监控?
监控是收集、汇总和分析那些有助于提高对组件、特征和行为的认识的值的过程。而且,使用监控系统的一个关键优势是,根据历史数据,我们可以预测需要进行哪些系统级别的更改。
我们监控什么?

(Prometheus)普罗米修斯
Prometheus 是一个开源系统监控和警报工具包,最初构建于 SoundCloud。Prometheus 是一个时间序列数据库,它从 HTTP/HTTPS 端点抓取指标。Prometheus 为某些服务提供原生支持,这意味着它们不需要任何类型的监控代理,例如:- Kubernetes、ETCD、SkyDNS。
特征:
它是一个时间序列数据库,因此我们可以轻松地对监控数据进行增量备份。PromQL 形式的灵活查询语言,用于时间序列数据聚合和预测。
Prometheus 中提供了服务发现功能。通过使用此功能,我们不必在配置中定义静态目标。
什么是TSD?
时间序列数据 是在时间间隔内收集的一系列数据点,使我们能够跟踪随时间的变化。时间序列数据可以跟踪几毫秒、几天甚至几年的变化。而且,在ime-series 数据库中,您可以以一种允许快速插入和快速检索的格式存储大量带时间戳的数据,以支持对该数据的复杂分析。

prometheus架构图

执行实际监视工作的Prometheus Server由三个组件组成。从目标端点抓取数据进行数据检索、存储所有收集的数据指标的TSDB和HTTP服务器。
Prometheus 从一个HTTP端点从目标中提取指标数据,默认情况下是hostaddress/metrics,要使其工作,一个目标必须公开具有可用数据的指标端点,并且应该采用时间序列格式。
拉推模型(PushGateway)
Prometheus 使用 Pull 模型(也称为 Scraping)来收集指标,这意味着 Prometheus 服务器将通过调用其配置的 HTTP 端点来拉取这些指标来访问指定的服务。
例如,在prometheus.yml 文件中定义的配置 告诉 Prometheus 服务器在指定端点上每 15 秒获取一次指标。
scrape_configs:
- job_name: 'Node_exporter'
scrape_interval: 15s
static_configs:
- targets: ["localhost:9100"]

抓取对于长时间运行的服务很有用,因为这些服务将在很长一段时间内可供 Prometheus 服务器使用以发出请求并收集其指标。但对于 Batch/Cron Jobs 等短期服务,当 Prometheus 决定收集指标时,这些作业可能会长期终止。
对于这些类型的用例,PushGateway出现在允许临时和批处理作业向 Prometheus 公开其指标。
所以它是一个中间服务,客户端(作业)可以在它关闭之前根据需要推送他们的指标,之后 Prometheus 可以像往常一样从 PushGateway 抓取这些指标。
「Pushgateway 明确不是 聚合器或分布式计数器 ,而是指标缓存。」

exporter
exporter是 Prometheus 的一种监控代理,它从不同的系统和软件中获取数据并将它们转换为 Prometheus 时间序列格式并公开指标端点。

PromQL
PromQL 是一种 Prometheus 语言,用于创建和执行查询以在 Prometheus 中提取或聚合数据。它使用 Prometheus 基于键值的数据表示并返回值。prometheus向量的一些例子是:-
「范围向量 - 计算 Prometheus 中一段时间的值。」
「Instant Vector – 它将给出最后一个时间间隔的数据输出。」
警报管理器
AlertManager 用于处理客户端应用程序(如 Prometheus)的警报。它还负责对警报进行重复数据删除、分组,然后将它们路由到不同的接收方,例如电子邮件、Slack、Pagerduty。Prometheus AlertManager 也可以设置为单独的组件,并可用于通过 Webhook 触发器向不同的媒体发送通知。

服务发现
如果我们有一个庞大的基础设施,每次都很难更新配置文件。为了克服这个问题,Prometheus 支持服务发现功能。在 Prometheus 服务发现中,机器或代理将自动注册以进行监控。对于新的监控代理,不需要重新启动服务。支持不同的服务,例如:- AWS、GCP、Azure、Kubernetes、Consul、Docker 和 Digitalocean。

综上所述
我们试图深入解释为什么,什么和如何与promethues分离。为了使这些事情立即付诸行动并开始,请尝试一下我们的动手实验。我们不会就此结束!我们很快就会回来,介绍不同应用程序对实时基础设施及其关键指标、条件和警报场景的监控!!
直到那时保持监控 🙂
参考:
https://blog.opstree.com/2021/07/27/introduction-to-prometheus-monitoring/#more-6970




