Prometheus

55839
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

FAQ


通用的信息

Prometheus 是什么?

Prometheus 是一个开源的系统监控和告警工具包,拥有活跃的生态系统。
它是 Kubernetes 唯一直接支持的系统,并且是云原生生态系统的事实标准。请参阅概览

Prometheus 与其他监控系统相比如何?

请参阅对比

Prometheus 有哪些依赖项?

主要的 Prometheus 服务器以单个单一的二进制文件形式独立运行,没有外部依赖项。

这是云原生的吗?

是的。

云原生是一种灵活的操作模式,能够打破以往的服务边界,允许更灵活和可伸缩的部署模式。

Prometheus 的服务发现能够与大多数工具和云集成。它的维度数据模型和它可被扩展到数百万活跃序列的能力,使它能够监控大型的云原生部署。在提供服务时,我们总会有权衡,而Prometheus 最为重视向用户发出可靠的告警。

Prometheus 可以实现高可用吗?

可以,可以在两个或多个独立的机器上运行相同的 Prometheus 服务器实例。Alertmanager 将会去掉重复的告警。

Alertmanager 可以通过将多个 Alertmanager 实例相互连接构建 Alertmanager 集群支持高可用。集群实例通过 HashiCorp 的 Memberlist 库管理的协议进行通信。

我听说 Prometheus “不具备可伸缩性”。

这往往更像是宣传语而非事实。

单个 Prometheus 实例的表现可能比一些定位为 Prometheus 长期存储解决方案的系统更好。你可以放心地使用 Prometheus 管理数十万个活跃的时间序列。

如果你需要更多伸缩能力,还有几种选择。看一看 Robust Perception 博客上的“扩展和聚合 Prometheus”文章是一个不错的起点,或者参阅我们的集成文档上的长期存储系统列表

Prometheus 用什么语言写的?

大部分 Prometheus 组件都是用 Go 编写的。也有一些是用 Java、Python 和 Ruby 编写的。

Prometheus 的特性、存储格式和 API 的稳定性如何?

Prometheus GitHub 组织中所有已达到 1.0.0 版本的仓库普遍遵循语义版本控制。重大更改将通过主版本号的递增来表示。部分实验组件可能存在例外,它们会在公告中明确地被标记为实验性。

即使某些仓库尚未达到 1.0.0 版本,它们通常也很稳定。我们旨在实现正式的发布流程,并最终为每个仓库发布 1.0.0 版本。无论如何,任何可能的破坏性更改都将在发布说明中指出(标记为 [CHANGE])或在尚未实现正式发布组件的情况下进行清晰的告示。

为什么 Prometheus 使用 pull 而不是 push?

拉取式 HTTP 有许多优势:

  • 你可以根据需要启动额外的监控实例,例如在开发更改时在笔记本电脑上启动实例。
  • 更容易且更可靠地判断 Target 是否离线。
  • 你可以手动访问目标并使用 Web 浏览器检查其健康状况。

总体而言,我们认为 pull 略优于 push ,但这不应在考量一个监控系统的情况下成为主要因素。

对于必须使用 push 的情况,我们提供了 Pushgateway

如何将日志输入 Prometheus?

一个简单的答案:别这么做!相反,你应该使用 Grafana LokiOpenSearch 之类的工具。

详细的答案:Prometheus 是收集和处理指标的系统,而不是事件记录系统。Grafana 博客文章 Logs and Metrics and Graphs, Oh My! 提供了有关日志和指标之间差异的详细信息。

如果你希望从应用程序日志中提取 Prometheus 的指标值,Loki 就是被设计用于这一目的的。具体请参阅 Loki 的指标查询文档

谁编写了 Prometheus?

Prometheus 最初由 Matt T. ProudJulius Volz 私下发起。它大部分的初始开发工作是由 SoundCloud 赞助的。

现在,Prometheus 由各种公司个人维护和扩展。

Prometheus 发布的许可证是什么?

Prometheus 在 Apache 2.0 许可证下发布。

Prometheus 的复数形式是什么?

经过深入研究,我们确定 Prometheus 的正确复数形式是 Prometheis。

如果你记不住这个单词,“Prometheus Instances”也是一个不错的候选方案。

我可以重新加载 Prometheus 的配置吗?

可以,向 Prometheus 进程发送 SIGHUP 或者向-/-reload端点发送 HTTP POST 请求,就可以重新加载并应用配置文件。Prometheus 的各个组件会尝试优雅地处理失败的更改。

我可以发送告警吗?

可以,请使用 Alertmanager

我们支持通过电子邮件、各种原生集成和所有人都可以添加集成的 webhook 系统(webhook 接收器列表)发送告警。

我可以创建仪表盘吗?

可以,但是我们推荐使用 Grafana 进行生产使用。Prometheus 带有 Console 模版。

我可以改变时区吗?为什么所有时间都显示为 UTC?

为了避免任何时间区混淆,尤其是在涉及所谓的夏令时的情况下,我们在 Prometheus 的所有组件内部决定只使用 Unix 时间戳并使用 UTC 用于时间展示用途。然而,时区选择可以被引入到用户界面中,欢迎大家作出贡献。请参考 issue #500 了解当前的状态。

标准化

哪些语言有标准化库?

有许多客户端库用于使用 Prometheus 指标标准化你的服务。请参阅客户端库文档获取详细信息。

如果你有兴趣为新的语言贡献客户端库,请参阅指标暴露格式文档。

我可以监控主机吗?

可以,Node Exporter 适用于 Linux 及其他 Unix 系统上暴露了大量的主机级别指标(如 CPU 使用率、内存、磁盘利用率、文件系统空间利用率和网络带宽)。

我可以监控网络设备吗?

可以,SNMP Exporter 允许你监控 SNMP 的设备。对于工业网络,还有 Modbus exporter

我可以监控批处理作业吗?

可以,使用 Pushgateway。有关监控批处理作业的最佳实践,请参阅批处理作业页面。

哪些 Prometheus 监控功能可以开箱即用?

请参阅 Exporter 和集成列表

我可以通过 JMX 监控 JVM 应用程序吗?

可以,对于无法直接使用 Java 客户端进行注入的应用程序,你可以使用 jmx_exporter 作为单独的程序或者 Java Agent。

代码注入的性能影响如何?

跨客户端库和语言的性能可能有所不同。对于 Java,基准测试表明,使用 Java 客户端增加 Counter/Gauge 将花费 12-17ns,具体取决于竞争情况。然而,对于几乎最延迟敏感的代码来说,这都是可以忽略不计的。

实现

为什么所有的样本值都是 64 位浮点数?

我们只使用64位浮点数以简化设计。IEEE 754双精度二进制浮点格式支持直到2^532^63之间的整数精度。原则上,Prometheus 应该实现支持不同的采样值类型(包括某种大整数类型,支持超过64位的更多精度),但这目前并不是优先事项。事实上,即使 Counter 每秒递增一百万次,它也只会在超过285年后遇到精度问题。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32