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 настроен и готов к использованию.