Last active
November 20, 2024 14:23
-
-
Save devops-school/8b6b9ea784e0f5f0b0089d7b8e643124 to your computer and use it in GitHub Desktop.
Prometheus Pushgateway Installation, Configuration and Using tutorials.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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