Skip to content

syberalexis/puppet-thanos

Repository files navigation

maeq-thanos

Build Status Travis Build Status AppVeyor Puppet Forge Puppet Forge - downloads Puppet Forge - endorsement Puppet Forge - scores Apache-2 License

Table of Contents

Description

This module automates the install of Thanos and it's components into a service.
Maximum tested version of Thanos : 0.26.0

Usage

For more information see REFERENCE.md.

Install Thanos

Puppet

class { 'thanos':
  version => '0.26.0'
}

Hiera Data

include thanos
thanos::version: '0.26.0'

Thanos Sidecar

thanos::manage_sidecar: true

Thanos Query

thanos::manage_query: true
thanos::query::endpoints:
  - 'sidecar:10901'
  - 'store:10901'

Thanos Query Frontend

thanos::manage_query_frontend: true

Thanos Rule

thanos::manage_rule: true
thanos::rule::queries:
  - 'query:10901'

Thanos Store

thanos::manage_store: true

Thanos Compact

thanos::manage_compact: true

Thanos Receive

thanos::manage_receive: true

Thanos Tools Bucket Web

thanos::manage_tools_bucket_web: true

Manage Storage config

For more configuration information see Thanos Storage configuration page.

Puppet

thanos::storage { '/etc/thanos/storage.yaml':
  ensure => 'present',
  type   => 'FILESYSTEM',
  config => {
    directory => '/data'
  }
}

Yaml

include thanos
thanos::manage_storage_config: true
thanos::storage_config_file: '/etc/thanos/storage.yaml'
thanos::storage_config:
  ensure: 'present'
  type: 'FILESYSTEM'
  config:
    directory: '/data'

Manage Tracing config

For more configuration information see Thanos Tracing configuration page.

Puppet

thanos::tracing { '/etc/thanos/tracing.yaml':
  ensure => 'present',
  type   => 'JAEGER',
  config => {
    service_name              => '',
    disabled                  => false,
    rpc_metrics               => false,
    tags                      => '',
    sampler_type              => '',
    sampler_param             => 0,
    sampler_manager_host_port => '',
    sampler_max_operations    => 0,
    sampler_refresh_interval  => '0s',
    reporter_max_queue_size   => 0,
    reporter_flush_interval   => '0s',
    reporter_log_spans        => false,
    endpoint                  => '',
    user                      => '',
    password                  => '',
    agent_host                => '',
    agent_port                => 0,
  }
}

Yaml

include thanos
thanos::manage_tracing_config: true
thanos::tracing_config_file: '/etc/thanos/tracing.yaml'
thanos::tracing_config:
  ensure: 'present'
  type: 'JAEGER'
  config:
    service_name: ''
    disabled: false
    rpc_metrics: false
    tags: ''
    sampler_type: ''
    sampler_param: 0
    sampler_manager_host_port: ''
    sampler_max_operations: 0
    sampler_refresh_interval: '0s'
    reporter_max_queue_size: 0
    reporter_flush_interval: '0s'
    reporter_log_spans: false
    endpoint: ''
    user: ''
    password: ''
    agent_host: ''
    agent_port: 0

Examples

Install from other source

thanos::base_url: 'http://my_private_dropbox/thanos'

Or

thanos::download_url: 'http://my_private_dropbox/thanos/thanos-0.10.1.tar.gz'

Install all in one

It's not a very good idea to deploy like this in Production. But it's possible to test it on the same machine.

thanos::manage_sidecar: true
thanos::manage_query: true
thanos::manage_rule: true
thanos::manage_store: true
thanos::manage_compact: true

thanos::sidecar::http_address: '0.0.0.0:10902'
thanos::sidecar::grpc_address: '0.0.0.0:10901'
thanos::sidecar::objstore_config_file: '/etc/thanos/storage.yaml'
thanos::query::http_address: '0.0.0.0:10904'
thanos::query::grpc_address: '0.0.0.0:10903'
thanos::query::endpoints:
  - 'localhost:10901'
  - 'localhost:10907'
thanos::rule::http_address: '0.0.0.0:10906'
thanos::rule::grpc_address: '0.0.0.0:10905'
thanos::rule::queries:
  - 'localhost:10903'
thanos::store::http_address: '0.0.0.0:10908'
thanos::store::grpc_address: '0.0.0.0:10907'
thanos::compact::http_address: '0.0.0.0:10910'
thanos::compact::grpc_address: '0.0.0.0:10909'

thanos::manage_storage_config: true
thanos::storage_config_file: '/etc/thanos/storage.yaml'
thanos::storage_config:
  ensure: 'present'
  type: 'FILESYSTEM'
  config:
    directory: '/data'

Sidecar with Prometheus

I recommend to use the module puppet-prometheus, it is very easy to use.

include prometheus
include thanos
prometheus::manage_prometheus_server: true
prometheus::config_dir: '/etc/prometheus'
prometheus::configname: 'prometheus.yaml'
prometheus::localstorage: '/data/prometheus'
prometheus::extra_options: '--web.enable-lifecycle --storage.tsdb.min-block-duration=2h --storage.tsdb.max-block-duration=2h'

thanos::manage_sidecar: true
thanos::tsdb_path: '/data/prometheus'
thanos::reloader_config_file: '/etc/prometheus/prometheus.yaml'

Limitations

Only support, Thanos supported OS. See Thanos releases page

Development

See Contributing.

This project contains tests for rspec-puppet.

Quickstart to run all linter and unit tests:

bundle install
bundle exec rake validate

Or

pdk validate
pdk test unit