Bootstrap

Thanos(一)——大规模Prometheus解决方案

Prometheus

我们首先简单介绍下prometheus。

Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有一个非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了强调这一点,并澄清项目的治理结构,Prometheus于2016年加入CNCF,作为继Kubernetes之后的第二个托管项目。(内容来自https://prometheus.io/docs/introduction/overview/

Prometheus能够实时跟踪数百万个监控指标,并附带提供了一套强大的查询语言,用户可以通过它从这些指标里提取有用信息。Prometheus简单可靠的运维模型是其主打卖点之一。

组件

Prometheus提供多个功能组件(可选):

  • Prometheus服务器:用于存储时间序列数据
  • 用于检测应用程序代码的客户端库
  • push gateway:用于支持短期工作的推送网关
  • 针对HAProxy,StatsD,Graphite等服务的专用出口商
  • 一个alertmanager处理警报
  • 各种支持工具

架构图

 

 

(图片来源https://prometheus.io/docs/introduction/overview/

事实上,如果你仅仅需要用它来做监控的话,只需要部署Prometheus服务器和以及对应监控组件的exporter(采集组件数据,我们称之为exporter,可理解为采集器)即可。我们就是这样做的。

Prometheus相比于其他传统的监控运维更加方便,可靠。同时提供了对Kubernetes,Docker的良好支持,当然,prometheus还有很多其他好处,比如与Grafana结合提供强大的图形展示,以及灵活的查询语句等,在此不再详细展开。

随着不断的使用,在一定的规模下。我们发现prometheus存在一些缺点。单台的prometheus存在单点故障的风险,随着监控规模的扩大,prometheus产生的数据量会非常大,性能和存储都会面临问题

毋庸置疑,我们需要一套高可用的Prometheus集群。

Prometheus官方提供了联邦,和远程读写(Remote read 和Remote write)来尝试解决这些问题,不过这又会带来繁琐的配置,网络延迟,以及使用联邦时依然需要考虑单点,高可用的问题,对我们使用会造成很大的成本和维护问题。

好了,该Thanos出场了,Thanos便是为了解决这些问题而存在的。在需要大规模部署Prometheus时提供了一种解决方案

thanos的github地址:https://github.com/improbable-eng/thanos

;