Prometheus 系统监控工具
免费使用此 InfluxDB 集成什么是 Prometheus?
Prometheus 是一个开源的系统监控和警报工具包,最初由 SoundCloud 的前谷歌工程师创建,旨在监控他们的服务器和应用程序的指标。Prometheus 于 2016 年加入了 云原生计算基金会,成为第二个托管项目,紧随 Kubernetes 之后。Prometheus 是一个独立于任何公司的开源产品,作为 Kubernetes 指标的监控解决方案非常受欢迎。与 InfluxDB 一样,Prometheus 也是用 Go 语言编写的。
Prometheus 作为监控解决方案是如何工作的?
Prometheus 网站提供了一个关于 Prometheus 监控解决方案和底层时间序列基础设施的 很好的概述。基本上,要使用 Prometheus 监控您的服务,您的服务需要公开一个 Prometheus 端点。这个端点是一个 HTTP 接口,公开了一组指标和指标的当前值。然后 Prometheus 服务器轮询服务的指标接口并存储数据。这种架构被称为基于轮询的监控,或 基于拉取的监控。
对于 Kubernetes 环境,服务发现集成得很好,Prometheus 将轮询指标端点并将指标收集到 Prometheus 服务器进行监控和警报。拉取方法的好处是它不需要安装代理来收集指标,尽管您仍然需要部署“导出器”以从您收集指标的系统公开指标。
基于拉取和基于推送的指标收集和监控
在基于拉取的方法中,监控代理定期轮询被监控的目标并基于这些数据发出警报。在推送方法中,遥测 和指标被推送到监控代理(或更频繁地推送到 时间序列数据库),监控是通过代理或其他查询数据库的过程来完成的。在为您的应用程序代码添加监控时,您需要在推送和拉取之间做出选择。要么通过客户端库将指标发送到另一个服务,要么通过某些网络可访问的目标(例如 HTTP API)使它们可用。
将拉取方法正式化(如 Prometheus 所做)的实际优势是它为所有类型的服务和应用程序提供了一个标准的语言,以标准格式公开目标以拉取指标数据。Prometheus 已经成为 Kubernetes 基于拉取的指标的标准语言。
基于拉取方法的缺点是它们不适合事件驱动的时序(如对 API 的单个请求或您的基础设施中的事件)。另一个缺点是所有指标端点都必须可从服务器访问,这意味着需要更复杂的网络安全配置。这也可以成为大规模部署或需要高可用性集群时的问题。
仅针对Kubernetes,基于拉取的指标收集可能就足够好了,但对于分布式环境,尤其是在物联网架构中,基于推送的监控更为可取。在大多数环境中,通常需要监控和警报指标(常规时间间隔)和事件(不规则时间间隔),因此同时支持推送和拉取更为理想。这目前是Prometheus的局限性,但这就是InfluxData的Telegraf和Kapacitor可以用来增强Prometheus环境的地方。
增强Prometheus以支持使用推送和拉取进行监控
所有按照Prometheus标准生成的指标都可以由Kapacitor读取。这意味着任何与Prometheus一起工作的服务发现目标也会与Kapacitor一起工作。此外,由于InfluxDB原生支持Prometheus远程读取和写入协议,Prometheus可以用作收集器,而InfluxDB则作为其长期、高可用、可扩展的数据存储。
使用Kapacitor监控Prometheus抓取目标,可以进行进一步的流式分析、高级异常检测,或者在前端数据存储之前,根据流数据添加自定义逻辑的能力。
Prometheus服务器架构
Prometheus的核心价值和主要设计目标是简洁性。为此,Prometheus专注于单节点架构,并增强服务器以在单节点基础设施中实现更高的性能。Prometheus的路线图上可能没有集群,这可能是由于这种复杂性会带来额外的复杂性,这与他们的设计目标——简洁性相悖。
增强Prometheus以支持高可用性
InfluxData的InfluxDB采用类似的单节点方法,具有一些相似的设计目标,但InfluxDB Enterprise包含集群以支持需要高可用性的环境。由于InfluxDB Enterprise包括Kapacitor和Telegraf,因此在构建Prometheus端点上的所有投资都得到了保持,但数据可以存储在集群化的InfluxDB Enterprise部署的多个节点上。InfluxData正在开发一种新的查询语言,该语言将支持PromQL,从而进一步减轻编写查询的烦恼,这些查询需要同时针对数据存储。
结论
在需要基于拉取的指标监控和警报的Kubernetes环境中使用Prometheus是一个不错的选择。对于需要监控或警报指标和事件的环境,或者需要高可用性的环境,请考虑增强您的架构以包含InfluxData的InfluxDB Enterprise或InfluxDB和Kapacitor。InfluxData将继续增强对Prometheus的支持。为了了解最新的发展,请关注GitHub上的项目。
更多信息
- 博客:InfluxDB Now Supports Prometheus Remote Read & Write Natively
- GitHub:Prometheus remote read and write API Support
- 博客:InfluxDB and Kapacitor: An Enhanced Data Model and Functional Query Language
- GitHub:Supporting PromQL in InfluxDB's New Query Language
- 新闻稿: InfluxData最新版本发布,业界首个高级Kubernetes自动缩放和Prometheus读写支持
- 新闻动态: 物联网创新者 | 新的InfluxData更新增加了高级Kubernetes自动缩放和Prometheus读写支持
- 新闻稿: InfluxData发布更新的Prometheus支持;被选为在2018年KubeCon + CloudNativeCon欧洲上发表演讲
- 新闻动态: 容器期刊 | InfluxData为Prometheus监控提供实时分析优势
- 博客: 使用Nginx InfluxDB模块监控Kubernetes Nginx Ingress
- 博客: 监控Kubernetes架构
- 博客: 推模式与拉模式监控:InfluxDB通过Kapacitor添加拉取支持
- 博客: InfluxDB 1.4现已发布:InfluxQL增强、Prometheus读写、更好的压缩以及更多功能!
- 博客: Percona Live Dublin回顾
- 博客: Prometheus + InfluxDB:奥斯汀监控聚会后的思考
- 术语表: 边缘计算