Skip to content

Prometheus service discovery using with HTTP API and file_sd_config.

License

Notifications You must be signed in to change notification settings

rrreeeyyy/prometheus-http-sd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Since prometheus version 2.28, Prometheus provides a generic HTTP Service discovery. We recommend to use prometheus native http_sd feature.

https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config

prometheus-http-sd

Prometheus service discovery using with HTTP API and file_sd_config.

Install

Precompiled binaries

Download from https://github.com/rrreeeyyy/prometheus-http-sd

Docker

docker pull rrreeeyyy/prometheus-http-sd

Usage

  • Run a single API endpoint

    ./prometheus-http-sd --api.url="http://api.example.com/service_discovery.json" --output.file=/path/to/http_sd.json --refresh.interval=60
    
  • Run multiple API endpoints

    ./prometheus-http-sd --api.url="http://api.example.com/foo_service_discovery.json" --output.file=/path/to/http_foo_sd.json --api.url="http://api.example.com/bar_service_discovery.json" --output.file=/path/to/http_bar_sd.json --refresh.interval=60
    

HTTP API format

HTTP API response should be follow prometheus file_sd_config format like below:

[
	{
		"targets": [
			"192.0.2.1:8080",
			"192.0.2.2:8080",
		],
		"labels": {
			"service": "web",
			"role": "role-1"
		}
	},
	{
		"targets": [
			"192.0.3.1:3306"
		],
		"labels": {
			"service": "db",
			"role": "role-2"
		}
	}
]

Example prometheus settings

The part of your prometheus.yml is probably as follows.

  scrape_configs:
    - job_name: 'http_sd'
      file_sd_configs:
        - files:
          - /path/to/http_sd.json

Metrics

  • prometheus_sd_http_http_requests_total
    • labels
      • api_url: target API URL
      • code: http response code