prometheus metric grouping에 관한 이야기

마가·2022년 8월 17일
0

trial-error

목록 보기
6/19

하고 싶은 것 : job name이 주어지면 해당 메트릭을 싹 다 지우고 싶다.

curl -X DELETE http://10.0.0.124:31059/metrics/job/default

이런 식으로 job이 default 면 다 지워지길 원했다
하나도 지워지지 않는다.

Element	Value
crawler_status{consumer="consumer-autoan",job="default",topic="value-auto-an-hourly"}	1
crawler_status{consumer="consumer-autoan-writer",job="default",topic="value-auto-an-hourly"}	1
crawler_status{consumer="consumer-autoan-writer-influx",job="default",topic="value-auto-an-hourly"}	1

생긴게 이렇기 때문에.
post 할 때

job/default/topic/target-auto-an-hourly/consumer/consumer-autoan

이런 식으로 url을 지정하면 delete 할 때에도 저렇게 해야 한다.
그렇다고 post를...

ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric{tag=\"a\"} 3.14" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job
ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric{tag=\"b\"} 2" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job
ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric{tag=\"c\"} 3" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job

이런 식으로 하면

Element	Value
some_metric{job="some_job",tag="c"}	3

가지고 있는 metric의 group이 업데이트 되어버린다.

ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric  4" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job/tag/2
ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric  4" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job/tag/2

이렇게 같은 형식으로 두번 요청하면 문제가 없는데

ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric{tag=\"1\"} 3" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job
ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric  5" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job/tag/1
pushed metrics are invalid or inconsistent with existing metrics: collected metric "some_metric" { label:<name:"instance" value:"" > label:<name:"job" value:"some_job" > label:<name:"tag" value:"1" > untyped:<value:5 > } was collected before with the same name and label values

서로 다른 양식으로 요청하면 뒤에께 죽는다.

curl -X DELETE http://10.0.0.124:31059/metrics/job/some_job

를 하면, url에 tag를 명시한 tag:2는 안 지워지고, tag를 명시하지 않은 tag:1은 delete로 지워진다.
역도 마찬가지

ubuntu@ip-10-0-0-65:~/prometheus$ echo "some_metric{tag=\"1\"} 4" | curl --data-binary @- http://10.0.0.124:31059/metrics/job/some_job
ubuntu@ip-10-0-0-65:~/prometheus$ curl -X DELETE http://10.0.0.124.39:31059/metrics/job/some_job/tag/1

Element	Value
some_metric{job="some_job",tag="1"}	4
some_metric{job="some_job",tag="2"}	4

시간이 지나도 지워지지 않는다.

PUT도 쓰기에 따라 DELETE와 같다.

echo "some_metric{tag=\"1\"} 3" | curl --data-binary @- http://3.38.176.39:31059/metrics/job/some_job
echo "some_metric 5" | curl --data-binary @- http://3.38.176.39:31059/metrics/job/some_job/tag/2
curl -X PUT http://3.38.176.39:31059/metrics/job/some_job
curl -X PUT http://3.38.176.39:31059/metrics/job/some_job/tag/1

put은 본문에 쓰지 않는 것들을 죄다 지운댔는데 어차피 POST도 덮어써버리는걸 생각하면 아닌가.

profile
마음 가는 길은 죽 곧은 길

0개의 댓글