【Prometheus】remote write의 설정 항목에 대해 조사해 보았다

5822 단어 prometheus
remote write의 설정항에 대한 상세한 설명이 발견되지 않았기 때문에,
소스 코드를 읽거나 디버깅하여 알게 된 것을 정리해 보았다.
※버전은 2.6.0을 사용

remote write의 기본 설정



prometheus.yml
remote_write:
- url: http://HOST:PORT/xxxxx
  remote_timeout: 30s
  queue_config:
    capacity: 10000
    max_shards: 1000
    min_shards: 1
    max_samples_per_send: 100
    batch_send_deadline: 5s
    max_retries: 3
    min_backoff: 30ms
    max_backoff: 100ms

url에서 아래는 쓰지 않아도 자동으로 설정이 추가된다.

remote_write 설정 항목



url



외부 스토리지에 쓰는 어댑터의 URL.
remote_write:
- url: http://HOST01:PORT/receive
- url: http://HOST02:PORT/api/v1/prom/write?db=prometheus


↑ 같이 복수 지정할 수 있다.

remote_timeout



어댑터와의 연결을 시간 초과하는 시간.

queue_config



Prometheus가 스크레이프한 샘플은 큐에 일단 저장되어 차례로 외부 스토리지에 기입되게 되어 있다.
queue_config에서는 그 큐에 대해서 설정할 수 있다.
또한 큐는 url로 지정한 기입처마다 할당된다.

capacity



샘플을 저장할 수 있는 최대 용량.
스크레이핑으로 취득한 샘플수가 capacity를 넘었을 경우, 넘은 분의 샘플은 파기되므로 주의.
100의 capacity에 대해 스크레이핑한 샘플수가 130개였다고 하면, 30개의 샘플이 송신되지 않고 소실하게 된다.
이 때 다음과 같은 오류가 출력됩니다.
Remote storage queue full, discarding sample. Multiple subsequent messages of this kind may be suppressed.

max_shards/min_shards



remote write의 병렬 실행수의 상한·하한.
remote write는 Shard라는 단위로 병렬로 실행할 수 있으며, max/min_shards에서는 그 병렬 실행수의 하한과 상한을 결정할 수 있다. (기동시의 Shard수는 min_shards)
Prometheus는 10초 간격으로 부하를 계산하고, 부하에 맞추어 Shard의 수를 증감시키고 있다.

상세는 생략할 필요가 있는 Shard수는 이하의 계산식으로 계산되고 있었다.
desiredShards = (timePerSample * (samplesIn + samplesPending + t.integralAccumulator)) / float64(time.Second)

timePerSample: 샘플당 전송 시간
samplesIn: 초당 캡처 샘플 수
samplesPending : samplesIn에서 초당 송신 샘플 수를 뺀 수 (= 초당 송신 대기 샘플 수)
t.integralAccumulator: t.integralAccumulator + (samplesPending * 0.1)

참고 : htps : // 기주 b. 이 m/p 어려워 s/p 어려워 s/bぉb/마s r/s 뚝뚝/레모테/쿠에우에_마나게 r. 고
func (t *QueueManager) calculateDesiredShards()



max_samples_per_send



한 번에 함께 전송할 샘플 수입니다. 데이터를 POST하는 횟수를 조절할 수 있다.
예를 들면 큐내에 100개의 샘플이 있고, max_samples_per_send를 20으로 설정하고 있는 경우, 샘플을 20개씩 5회로 나누어 송신한다.
(이 경우 실제로는 샘플이 20개 쌓인 시점에서 외부 스토리지에 송신된다.)

batch_send_deadline



대기열에 남아 있는 샘플을 외부 스토리지로 플러시하기 위한 대기 시간.
외부 스토리지로의 샘플의 송신은 max_samples_per_send 단위로 송신되기 때문에, 큐 내의 샘플 수가 단위 미만인 경우에는 송신되지 않고 남게 된다.
샘플이 큐에 계속 유지되지 않도록 batch_send_deadline에 설정한 시간이 송신 대기 샘플의 대기 시간이 되고, 설정한 시간 경과하면 외부 스토리지에 기입된다.



max_retries



샘플 전송이 실패했을 때 재 시도하는 횟수.

min_backoff/max_backoff



송신 리트라이의 대기 시간의 상한·하한.
송신이 실패했을 때 곧바로는 재시도하지 않고, min_backoff에 설정한 시간 대기하고 나서 행해진다.
2회째는 전회의 backoff 시간을 2배한 값이 대기 시간이 되고, 이후 2배씩 대기 시간이 증가해 간다.
다만 최대는 max_backoff까지.

참고



htps : // p 뻗어 s. 이오 / 도 cs / p 로메 s / st / 혼후 글라치 온 / 곤후 글라치 온 / # 레모테 _ w
htps : // p 뻗어 s. 이오 / 도 cs / p
htps : // p 뻗어 s. 이오 / 드 cs / 오페라 친 g / 엔테 g 라치 온 s / # 레모테 엔 d 포인 ts
htps : // 기주 b. 이 m / p 어려워 s / p 어려워 s / t ree /

좋은 웹페이지 즐겨찾기