技术
Prometheus
基于指标的监控与告警
Prometheus 是一个围绕时间序列数据库和基于拉取的指标模型构建的开源监控系统。它按固定间隔抓取已配置目标的指标,存储它们,并让你用它自己的查询语言 PromQL 对其进行查询和告警。
工作原理
Prometheus 定期抓取暴露其文本格式指标的 HTTP 端点 —— 大多数应用和基础设施组件要么原生暴露,要么通过 exporter 暴露。被抓取的样本存储在本地时间序列数据库中。PromQL 查询这些数据,用于仪表板(通常在 Grafana 中渲染)和告警规则,Prometheus 持续评估告警规则,并在触发时将其转发给 Alertmanager。
核心概念
- Metric(指标) —— 一个有名称的、带时间戳的数值度量,可选地带有键值标签以表达维度(例如
http_requests_total{method="GET", status="200"})。 - Target(目标) —— Prometheus 抓取指标的端点,通过静态配置或服务发现(包括原生的 Kubernetes 服务发现)来发现。
- PromQL —— Prometheus 的查询语言,用于选择、聚合和计算时间序列数据。
- Alertmanager —— 一个独立的组件,对 Prometheus 告警规则所触发的告警进行去重、分组,并路由到电子邮件、Slack、PagerDuty 和其他接收方。
为什么团队选择 Prometheus
- 原生的 Kubernetes 服务发现。 它可以随着集群的变化,自动发现要抓取的 Pod、Service 和端点。
- 强大的查询语言。 PromQL 支持丰富的聚合、速率计算,以及跨指标的连接。
- 维度化的指标。 标签让你可以按你已插桩的任何维度切分同一个指标,而无需预先定义每一种组合。
- 事实上的标准。 Kubernetes 原生的大多数软件 —— ingress 控制器、服务网格、Kubernetes 自身的组件 —— 默认都暴露 Prometheus 格式的指标。
快速开始
将 Prometheus 安装到你的集群中(通常通过捆绑了 Grafana 和 Alertmanager 的 kube-prometheus-stack Helm chart),配置它发现你想要抓取的目标,并编写你的第一批告警规则。下面的指南涵盖常见的抓取和告警配置。