Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save devops-school/8b6b9ea784e0f5f0b0089d7b8e643124 to your computer and use it in GitHub Desktop.
Save devops-school/8b6b9ea784e0f5f0b0089d7b8e643124 to your computer and use it in GitHub Desktop.
Prometheus Pushgateway Installation, Configuration and Using tutorials.
# Get the latest version of pushgateway from prometheus.io, then download and extract:
$ wget https://github.com/prometheus/pushgateway/releases/download/v0.8.0/pushgateway-0.8.0.linux-amd64.tar.gz
$ tar -xvf pushgateway-0.8.0.linux-amd64.tar.gz
# Create the pushgateway user:
$ useradd --no-create-home --shell /bin/false pushgateway
# Move the binary in place and update the permissions to the user that we created:
$ cp pushgateway-0.8.0.linux-amd64/pushgateway /usr/local/bin/pushgateway
$ chown pushgateway:pushgateway /usr/local/bin/pushgateway
# Create the systemd unit file:
$ cat > /etc/systemd/system/pushgateway.service << EOF
[Unit]
Description=Prometheus Pushgateway
Wants=network-online.target
After=network-online.target
[Service]
User=pushgateway
Group=pushgateway
Type=simple
ExecStart=/usr/local/bin/pushgateway
[Install]
WantedBy=multi-user.target
EOF
# Reload systemd and restart the pushgateway service:
$ systemctl daemon-reload
$ systemctl restart pushgateway
# Ensure that pushgateway has been started:
$ systemctl status pushgateway
# Configure Prometheus
$ cat /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9100']
- job_name: 'pushgateway'
honor_labels: true
static_configs:
- targets: ['localhost:9091']
$ systemctl restart prometheus
# Push metrics to pushgateway
# First we will look at a bash example to push metrics to pushgateway:
$ echo "cpu_utilization 20.25" | curl --data-binary @- http://localhost:9091/metrics/job/my_custom_metrics/instance/10.20.0.1:9000/provider/hetzner
# Have a look at pushgateway’s metrics endpoint:
$ curl -L http://localhost:9091/metrics/
# TYPE cpu_utilization untyped
cpu_utlization{instance="10.20.0.1:9000",job="my_custom_metrics",provider="hetzner"} 20.25
# Python example on how we can push metrics to pushgateway:
import requests
job_name='my_custom_metrics'
instance_name='10.20.0.1:9000'
provider='hetzner'
payload_key='cpu_utilization'
payload_value='21.90'
response = requests.post('http://localhost:9091/metrics/job/{j}/instance/{i}/team/{t}'.format(j=job_name, i=instance_name, t=team_name), data='{k} {v}\n'.format(k=payload_key, v=payload_value))
print(response.status_code)
With this method, you can push any custom metrics (bash, lambda function, etc) to pushgateway and allow prometheus to consume that data into it’s time series database.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment