diff --git a/templates/monitoring/prometheus.yml b/templates/monitoring/prometheus.yml index e032cb0..1af5fee 100644 --- a/templates/monitoring/prometheus.yml +++ b/templates/monitoring/prometheus.yml @@ -16,22 +16,32 @@ scrape_configs: - targets: ['localhost:9090'] - job_name: 'docker-services' - dockerswarm_sd_configs: + docker_sd_configs: - host: unix:///var/run/docker.sock - role: tasks relabel_configs: # Scrape only containers that have a prometheus.scrape=true label - - source_labels: [__meta_dockerswarm_task_label_prometheus_scrape] + - source_labels: [__meta_docker_container_label_prometheus_scrape] action: keep regex: true # Use the container name as the instance label - - source_labels: [__meta_dockerswarm_task_desired_state, __meta_dockerswarm_task_name] + - source_labels: [__meta_docker_container_name] action: replace target_label: instance - regex: 'running;(.+)' + regex: '/(.+)' # Allow overriding the port - - source_labels: [__meta_dockerswarm_task_label_prometheus_port] + - source_labels: [__meta_docker_container_label_prometheus_port] action: replace target_label: __address__ regex: '(.+)' - replacement: '${1}' \ No newline at end of file + replacement: '${1}' + # Use the custom port if specified, otherwise use the first exposed port + - source_labels: [__meta_docker_container_label_prometheus_port, __meta_docker_port_private] + action: replace + target_label: __address__ + regex: '([^;]+);.*' + replacement: '${1}' + - source_labels: [__address__, __meta_docker_container_label_prometheus_port] + action: replace + target_label: __address__ + regex: '([^:]+)(?::\d+)?;(\d+)' + replacement: '${1}:${2}'