thanos

package module
v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2019 License: Apache-2.0 Imports: 0 Imported by: 0

README

Thanos Logo

CircleCI Go Report Card GoDoc Slack Docker Pulls Netlify Status

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 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.

Architecture Overview

architecture_overview

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

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>.

We also perform minor releases every 6 weeks. During that, we build tarballs for major platforms and docker image.

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

Documentation

Overview

Package thanos is a set of components that can provide highly available Prometheus setup with long term storage capabilities.

See https://github.com/improbable-eng/thanos/blob/master/docs/getting_started.md for first steps.

Directories

Path Synopsis
benchmark module
cmd
pkg
alert
Package alert contains logic to send alert notifications to Alertmanager clusters.
Package alert contains logic to send alert notifications to Alertmanager clusters.
block
Package block contains common functionality for interacting with TSDB blocks in the context of Thanos.
Package block contains common functionality for interacting with TSDB blocks in the context of Thanos.
objstore/gcs
Package gcs implements common object storage abstractions against Google Cloud Storage.
Package gcs implements common object storage abstractions against Google Cloud Storage.
objstore/s3
Package s3 implements common object storage abstractions against s3-compatible APIs.
Package s3 implements common object storage abstractions against s3-compatible APIs.
objstore/swift
Package swift implements common object storage abstractions against OpenStack swift APIs.
Package swift implements common object storage abstractions against OpenStack swift APIs.
reloader
Package reloader contains helpers to trigger reloads of Prometheus instances on configuration changes and to substitute environment variables in config files.
Package reloader contains helpers to trigger reloads of Prometheus instances on configuration changes and to substitute environment variables in config files.
runutil
Package runutil provides helpers to advanced function scheduling control like repeat or retry.
Package runutil provides helpers to advanced function scheduling control like repeat or retry.
shipper
Package shipper detects directories on the local file system and uploads them to a block storage.
Package shipper detects directories on the local file system and uploads them to a block storage.
ui
Package ui Code generated by go-bindata.
Package ui Code generated by go-bindata.
scripts
tutorials

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL