2回ハマったのでメモる
pushgatewayにメトリクスを作る時
$ echo 'testmetric 1' | curl --data-binary @- localhost:9091/metrics/job/testjob
とすると
testmetric{instance="",job="testjob"} 1
このようなメトリクスが得られ、
labelkey="labelvalue"
のlabelを付けたい時は
$ echo 'testmetric 1' | curl --data-binary @- localhost:9091/metrics/job/testjob/labelkey/labelvalue
とするか、
$ echo 'testmetric{labelkey="labelvalue"} 1' | curl --data-binary @- localhost:9091/metrics/job/testjob
とすれば
testmetric{instance="",job="testjob",labelkey="labelvalue"} 1
この形のメトリクスが得られます
そしてこの両者の違いは
前者はjob=testjob,labelkey=labelvalue
でメトリクスがグルーピングされており、
後者はjob=testjob
でグルーピングされている状態になります
この違いはどういう違いかというと、
$ echo 'testmetric 1' | curl --data-binary @- localhost:9091/metrics/job/testjob/labelkey/labelvalue1
$ echo 'testmetric 1' | curl --data-binary @- localhost:9091/metrics/job/testjob/labelkey/labelvalue2
とした時に、labelkey=labelvalue1
とlabelkey=labelvalue2
は別のグループなので両方残ります
$ echo 'testmetric{labelkey="labelvalue1"} 1' | curl --data-binary @- localhost:9091/metrics/job/testjob
$ echo 'testmetric{labelkey="labelvalue2"} 1' | curl --data-binary @- localhost:9091/metrics/job/testjob
とすると、グループは両方ともjob=testjob
なので、labelvalue1が上書きされてlabelvalue2のメトリクスだけが残ります
また、メトリクスを削除する場合、
$ curl -XDELETE localhost:9091/metrics/job/testjob
このコマンドで削除されるのはjob=testjob
のグループのメトリクスだけで、job=testjob,labelkey=labelvalue
のメトリクスは削除されません。
job=testjob,labelkey=labelvalue
のメトリクスを削除したいなら
$ curl -XDELETE localhost:9091/metrics/job/testjob/labelkey/labelvalue
とする必要があります。
値が変わる時に上書きしたいか別のメトリクスにしたいかで使い分けることができるんですね。
3度目はないぞ