Управление жизненным циклом клиента#

Клиенты в Receiver создаются динамически и не нуждаются в предварительной подготовке. При обнаружении нового значения в HTTP-заголовке клиента Receiver подготовит и начнет управлять независимой базой данных TSD для этого клиента. Блоки TSDB, отправляемые на S3, будут содержать уникальную метку tenant_id, которую можно использовать для сжатия блоков независимо для каждого клиента.

Receiver автоматически выведет клиента из эксплуатации, как только новые образцы не будут видны дольше, чем заданный для получателя период хранения --tsdb.retention. Процесс вывода клиента из эксплуатации включает в себя сброс всех образцов в памяти для этого клиента на диск, отправку всех неотправленных блоков в S3 и удаление базы данных TSD клиента из файловой системы. Если клиент получает новые образцы после вывода из эксплуатации, для клиента будет создана новая база данных TSDB.

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

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

thanos receive \
    --tsdb.path "/path/to/receive/data/dir" \
    --grpc-address 0.0.0.0:10907 \
    --http-address 0.0.0.0:10909 \
    --receive.replication-factor 1 \
    --label "receive_replica=\"0\"" \
    --label "receive_cluster=\"eu1\"" \
    --receive.local-endpoint 127.0.0.1:10907 \
    --receive.hashrings-file ./data/hashring.json \
    --remote-write.address 0.0.0.0:10908 \
    --objstore.config-file "bucket.yml"

Пример конфигурации remote_write Prometheus:

remote_write:
- url: http://<thanos-receive-container-ip>:10908/api/v1/receive

Где <thanos-receive-containter-ip> - это IP-адрес, доступный серверу Prometheus.

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

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

Пример содержимого hashring.json:

[
    {
        "endpoints": [
            "127.0.0.1:10907",
            "127.0.0.1:11907",
            "127.0.0.1:12907"
        ]
    }
]

При такой конфигурации любой Receiver просматривает удаленную запись на <ip>10908/api/v1/receive и перенаправляет на исправление в хешировании, если это необходимо для клиента и репликации.

Результат#

Receiver настроен для клиента и репликации.