Управление жизненным циклом клиента#
Клиенты в 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 настроен для клиента и репликации.