Skip to content

Exports metrics from Hetzner Load Balancer for consumption by Prometheus

Notifications You must be signed in to change notification settings

wacken89/hetzner-load-balancer-prometheus-exporter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hetzner Load Balancer Prometheus Exporter

Exports metrics from Hetzner Load Balancer for consumption by Prometheus

Preparing

API TOKEN

Go to Hetzner Console. Open project where you have running Load Balancer and create API TOKEN in Security section

api token

Load Balancer ID

Next we sholud get ID of our Load Balancer. This information we will get from Hetzner API, everything about API you find in official API documentation

Example curl

curl \
    -H "Authorization: Bearer $API_TOKEN" \
	'https://api.hetzner.cloud/v1/load_balancers'

Response sample

{
  "load_balancers": [
    {
      "id": 4711,
      "name": "Web Frontend",
      "public_net": {
        "enabled": false,
        "ipv4": {
          "ip": "1.2.3.4"
        },
...
    }
}

Configuring

The exporter can be configured using environment variables. Instead of providing the values directly, you can also use the variables suffixed with _FILE to provide a file containing the value, which is useful with mounted secrets, for example.

Enviroment Description
LOAD_BALANCER_IDS Supported string with specific id 11,22,33 or all for scraping metrics from all load balancers in the project
LOAD_BALANCER_IDS_PATH Path to a file containing the load balancer IDs
ACCESS_TOKEN Hetzner API token
ACCESS_TOKEN_PATH Path to a file containing the Hetzner API token
Optional SCRAPE_INTERVAL value in seconds, default value is 30 seconds
Optional SCRAPE_INTERVAL_PATH Path to a file containing the scrape interval

Kubernetes usage

In deploy/kubernetes.yaml add in env section id which we got from API and API TOKEN

env:
  - name: LOAD_BALANCER_IDS
    value: "11,22,33,44"
  - name: ACCESS_TOKEN
    value: "ewsfds43r*****132"
  ## Optional
  - name: SCRAPE_INTERVAL
    value: '60'

Deploy it to Kubernetes cluster

kubectl apply -f deploy/kubernetes.yaml

Or use helm to deploy the exporter:
In deploy/helm-chart/values.yaml add in env section id which we got from API and API TOKEN

# Add repo
helm repo add wacken89 https://wacken89.github.io/hetzner-load-balancer-prometheus-exporter
helm repo update
# Install chart
helm install hcloud-lb-exporter wacken89/hetzner-load-balancer-exporter -f values.yml

Check metrics page

kubectl port-forward <pod> 8000:8000

Open in your browser localhost:8000:

exporter metrics

Grafana

Grafana Dashboard you can find here

Metrics in Hetzner console Hetzner console

Metrics in Grafana exporter metrics