Sidecar#

Thanos интегрируется с существующими серверами Prometheus в виде компонента Sidecar, который выполняется на той же машине или в том же модуле, что и сервер Prometheus.

Sidecar создает резервные копии данных Prometheus в хранилище объектов и предоставляет другим компонентам Thanos доступ к метрикам Prometheus через gRPC API. Sidecar реализует Thanos API хранилища поверх Prometheus API - это позволяет Querier рассматривать серверы Prometheus как еще один источник данных временных рядов, не обращаясь напрямую к его API.

Sidecar загружает блоки TSDB (базы данных временных рядов) в хранилище объектов, создаваемые Prometheus каждые 2 часа. Это позволяет серверам Prometheus работать с относительно низким уровнем хранения, в то время как истории данных и метрик становятся надежными и доступными для запросов через хранилище объектов.

Примечание

При настройках Prometheus без сохранения, в случае сбоя хранилища, к которому привязан Prometheus, могут быть потеряны данные метрик с временной выборкой до 2 часов (интервал загрузки данных Sidecar). Для Prometheus следует использовать надежное хранилище данных.

Sidecar может просматривать правила и конфигурацию Prometheus, распаковывать и заменять переменные окружения, если это необходимо, и запрашивать Prometheus для их перезапуска.

Последовательность выполнения#

Thanos может отслеживать и обновлять изменения в конфигурации Prometheus, если включен --web.enable-lifecycle.

Отслеживание изменений в каталоге настраивается с помощью флага --reloader.rule-dir=DIR_NAME.

Sidecar может просматривать конфигурационный файл --reloader.config-file=CONFIG_FILE, менять найденные там переменные окружения в формате $(VARIABLE) и создавать сгенерированную конфигурацию в файле --reloader.config-envsubst-file=OUT_CONFIG_FILE.

Пример конфигурации обновлений:

prometheus \
  --storage.tsdb.max-block-duration=2h \
  --storage.tsdb.min-block-duration=2h \
  --web.enable-lifecycle

Пример базового развертывания:

thanos sidecar \
    --tsdb.path        "/path/to/prometheus/data/dir" \
    --prometheus.url   "http://localhost:9090" \
    --objstore.config-file  "bucket.yml"

Пример содержимого bucket.yml:

type: GCS
config:
  bucket: ""
  service_account: ""
prefix: ""

Настройка HTTP-клиента Prometheus#

Настройте HTTP-клиент Prometheus для Sidecar с помощью YAML, или передав содержимое YAML непосредственно флагом --prometheus.http-client, или указав путь к файлу YAML флагом --prometheus.http-client-file.

Формат конфигурации следующий:

basic_auth:
  username: "<username>"
  password: "<password>"
  password_file: ""
bearer_token: ""
bearer_token_file: ""
proxy_url: ""
tls_config:
  ca_file: ""
  cert_file: ""
  key_file: ""
  server_name: ""
  insecure_skip_verify: false
transport_config:
  max_idle_conns: 0
  max_idle_conns_per_host: 0
  idle_conn_timeout: 0
  response_header_timeout: 0
  expect_continue_timeout: 0
  max_conns_per_host: 0
  disable_compression: false
  tls_handshake_timeout: 0

Результат#

Sidecar настроен и готов к использованию.