I think I did something along the lines of this… Anything you can use?
Nomad:
group {
# blah, blah..
network {
mode = "bridge"
port "metrics_envoy" {to = 9102}
service {
# blah, blah..
meta {
# Tag for prometheus scrape-targeting via consul (envoy)
metrics_port_envoy = "${NOMAD_HOST_PORT_metrics_envoy}"
}
connect {
sidecar_service {
proxy {
config {
# Expose metrics for prometheus (envoy)
envoy_prometheus_bind_addr = "0.0.0.0:9102"
}
Prometheus:
# blah, blah..
scrape_configs:
- job_name: consul-connect-envoy
consul_sd_configs:
- server: 'http://172.17.0.1:8500'
relabel_configs:
- source_labels: [__meta_consul_service]
regex: (.+)-sidecar-proxy
action: drop
- source_labels: [__meta_consul_service_metadata_metrics_port_envoy]
regex: (.+)
action: keep
- source_labels: [__address__,__meta_consul_service_metadata_metrics_port_envoy]
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: ${1}:${2}
target_label: __address__
EDIT:
“$${NOMAD_HOST_PORT_metrics_envoy}” should be ${NOMAD_HOST_PORT_metrics_envoy}"