Custom target labels - CHERTS/pgscv GitHub Wiki
Starting with pgSCV version 0.13.0, it has become possible to use custom labels in /targets
endpoint.
Version 0.10.0 introduces support for the Prometheus (VictoriaMetrics) discovery service. You can read about this in detail on the documentation page.
Support for custom labels in the /targets
endpoint was a major improvement.
Complete YAML configuration file example:
listen_address: 0.0.0.0:9890
services:
"postgres1":
service_type: "postgres"
conninfo: "postgres://pgscv:pa$$w0rd@postgres1:5432/db1"
target_labels:
- name: __scrape_interval__
value: 5m
- name: __scrape_timeout__
value: 2m
- name: datacenter
value: dc1
"postgres2":
service_type: "postgres"
conninfo: "postgres://pgscv:pa$$w0rd@postgres2:5432/db2"
target_labels:
- name: __scrape_interval__
value: 2m
- name: __scrape_timeout__
value: 5m
- name: datacenter
value: dc2
For example, a /targets
output
[
{
"targets": ["X.X.X.X:9890/metrics?target=system:0"]
},
{
"targets": ["X.X.X.X:9890/metrics?target=postgres1"],
"labels": {
"datacenter": "dc1",
"__scrape_interval__": "5m",
"__scrape_timeout__": "2m"
}
},
{
"targets": ["X.X.X.X:9890/metrics?target=postgres2"],
"labels": {
"datacenter": "dc2",
"__scrape_interval__": "2m",
"__scrape_timeout__": "5m"
}
}
]
After Prometheus (VictoriaMetrics) performs service discovery, each service (postgres1 and postgres2) will have its own scrape_interval
and scrape_timeout
parameters set, and the datacenter
label will be added to each postgres_
metric.
Getting test metrics from VictoriaMetrics (clustered) using curl:
# curl -XGET -G 'http://127.0.0.1:8427/select/0/prometheus/api/v1/query' \
--data-urlencode 'query=postgres_up{service_id="postgres1"}' | jq .
{
"status": "success",
"isPartial": false,
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "postgres_up",
"datacenter": "dc1",
"host": "postgres1",
"instance": "pgscv:9890",
"job": "pgscv",
"port": "5432",
"service_id": "postgres1"
},
"value": [
1740482199,
"1"
]
}
]
},
"stats": {
"seriesFetched": "2",
"executionTimeMsec": 2
}
}