Thanos

具有长期存储能力的高可用 Prometheus 设置。一个 CNCF 的孵化项目。「Highly available Prometheus setup with long term storage capabilities. A CNCF Incubating project.」

Github stars Tracking Chart

Thanos(灭霸)

概述

Thanos 是一套组件,可以组成一个具有无限存储容量的高可用度量系统,可以在现有的 Prometheus 部署之上无缝添加。

Thanos 是一个 CNCF 孵化项目。

Thanos 利用 Prometheus 2.0 存储格式,在保留快速查询延迟的同时,经济高效地在任何对象存储中存储历史度量数据。此外,它还提供了一个跨所有 Prometheus 安装的全局查询视图,可以动态地合并来自Prometheus HA 对的数据。

具体来说,这个项目的目标是:

  1. 指标的全局查询视图。
  2. 无限保留指标。
  3. 组件的高可用性,包括 Prometheus。

入门

特性

  • 所有连接的 Prometheus 服务器的全局查询视图
  • 对从 Prometheus HA 对收集到的指标进行重复数据删除和合并。
  • 与现有的 Prometheus 设置无缝集成。
  • 任何对象存储都是其唯一的、可选择的依赖关系。
  • 对历史数据进行下采样,以实现大规模的查询速度。
  • 跨集群联盟
  • 容错查询路由
  • 简单的 gRPC "存储API",实现所有指标数据的统一数据访问。
  • 自定义指标提供商的轻松集成点

架构概述

architecture_overview

Thanos 哲学

Thanos 和我们的社区从 UNIX 哲学和 golang 编程语言中借鉴了很多:

  • 每个子命令都应该做一件事,而且要做得好
    • 例如,thanos 查询代理调用已知 store API 端点的传入,并合并结果
  • 写出能一起工作的组件
    • 例如,区块应该以原生的 prometheus 格式存储。
  • 让组件的读写和运行变得简单。
    • 例如,降低系统设计和实施的复杂性。

发布

Master 应该是稳定和可用的。每次提交到 master 都会在 quay.io/thanos/thanosthanosio/thanos dockerhub (mirror) 中构建名为 master-<date>-<sha> 的 docker 镜像。

我们还每 6 周进行一次次要的发布。

在此期间,我们为主要平台构建 tarballs 并发布 docker 镜像。

详情请看 发布流程文档

贡献

欢迎大家踊跃捐款! 更多信息请参见我们的 CONTRIBUTING.md

社区

Thanos 是一个开源项目,我们重视并欢迎新的贡献者和社区成员。以下是与社区联系的方法。

维护者

MAINTAINERS.md


(The first version translated by vz on 2020.10.07)

Overview

Name With Ownerthanos-io/thanos
Primary LanguageGo
Program languageMakefile (Language Count: 11)
PlatformAmazon AWS, BSD, Google Cloud Platform, Linux, Mac, Windows, Tencent Cloud, OpenStack
License:Apache License 2.0
Release Count113
Last Release Namev0.34.1 (Posted on 2024-02-19 17:39:43)
First Release Namev0.1.0-rc.0 (Posted on )
Created At2017-11-01 17:38:03
Pushed At2024-04-16 12:50:58
Last Commit At
Stargazers Count12.6k
Watchers Count244
Fork Count2k
Commits Count3.8k
Has Issues Enabled
Issues Count2627
Issue Open Count459
Pull Requests Count3321
Pull Requests Open Count91
Pull Requests Close Count857
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

CircleCI
Go Report Card
Go Code reference
Slack
Netlify Status
CII Best Practices

Overview

Thanos is a set of components that can be composed into a highly available metric
system with unlimited storage capacity, which can be added seamlessly on top of existing
Prometheus deployments.

Thanos is a CNCF Sandbox project.

Thanos leverages the Prometheus 2.0 storage format to cost-efficiently store historical metric
data in any object storage while retaining fast query latencies. Additionally, it provides
a global query view across all Prometheus installations and can merge data from Prometheus
HA pairs on the fly.

Concretely the aims of the project are:

  1. Global query view of metrics.
  2. Unlimited retention of metrics.
  3. High availability of components, including Prometheus.

Getting Started

Features

  • Global querying view across all connected Prometheus servers
  • Deduplication and merging of metrics collected from Prometheus HA pairs
  • Seamless integration with existing Prometheus setups
  • Any object storage as its only, optional dependency
  • Downsampling historical data for massive query speedup
  • Cross-cluster federation
  • Fault-tolerant query routing
  • Simple gRPC "Store API" for unified data access across all metric data
  • Easy integration points for custom metric providers

Architecture Overview

architecture_overview

Thanos Philosophy

The philosophy of Thanos and our community is borrowing much from UNIX philosophy and the golang programming language.

  • Each sub command should do one thing and do it well
    • eg. thanos query proxies incoming calls to known store API endpoints merging the result
  • Write components that work together
    • e.g. blocks should be stored in native prometheus format
  • Make it easy to read, write, and, run components
    • e.g. reduce complexity in system design and implementation

Releases

Master should be stable and usable. Every commit to master builds docker image named master-<data>-<sha> in quay.io/thanos/thanos and thanosio/thanos dockerhub (mirror)

We also perform minor releases every 6 weeks.

During that, we build tarballs for major platforms and release docker images.

See release process docs for details.

Contributing

Contributions are very welcome! See our CONTRIBUTING.md for more information.

Community

Thanos is an open source project and we value and welcome new contributors and members
of the community. Here are ways to get in touch with the community:

Maintainers

See MAINTAINERS.md

To the top