Manual Install

Installing Prometheus manually is accomplished by following the steps outlined on this page. The recommended approach is to install Prometheus using a Linux package. See the Linux Package documentation for details.

Prerequisites

Version

Prometheus version 2.47.2 or newer.

Create User and Group

Create a Prometheus user and group. This user will be used to execute the Prometheus process.

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

Download Release

Download the v2.47.2 release.

curl -L \
    -o prometheus.tar.gz \
    https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz

Extract the archive to your working directory.

mkdir prometheus
tar -xf prometheus.tar.gz --strip-components=1 -C prometheus

Binary Installation

Install binaries to /usr/bin.

sudo cp prometheus/prometheus /usr/bin/prometheus
sudo cp prometheus/promtool /usr/bin/promtool

Configuration

Configure the Prometheus configuration directories and files.

sudo mkdir /etc/prometheus

sudo touch \
    /etc/prometheus/prometheus.yml \
    /etc/prometheus/rules.yml \
    /etc/prometheus/web.yml

sudo chmod 0750 /etc/prometheus
sudo chmod 0600 /etc/prometheus/prometheus.yml
sudo chmod 0600 /etc/prometheus/rules.yml
sudo chmod 0600 /etc/prometheus/web.yml
sudo chown -R prometheus:prometheus /etc/prometheus

Configure the Prometheus storage directories and files.

sudo mkdir /var/lib/prometheus
sudo mkdir /var/lib/prometheus/tsdb

sudo mv prometheus/console_libraries /var/lib/prometheus
sudo mv prometheus/consoles /var/lib/prometheus

sudo chmod 0750 /var/lib/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus

Populate prometheus.yml.

sudo tee /etc/prometheus/prometheus.yml <<'EOF'
scrape_configs: []
rule_files: [/etc/prometheus/rules.yml]
EOF

Populate rules.yml.

sudo tee /etc/prometheus/rules.yml <<'EOF'
groups:
- name: configuration-rollups
  interval: 1m
  rules:
  - record: bindplane_agent_measurements:rollup:rate:1m
    expr: sum without (agent) (rate(bindplane_agent_measurements{}[1m9s999ms] offset 10s))
- name: 5m-configuration-rollups
  interval: 5m
  rules:
  - record: bindplane_agent_measurements:rollup:rate:5m
    expr: sum without (agent) (rate(bindplane_agent_measurements:1m{}[5m59s999ms] offset 10s))
- name: 1h-configuration-rollups
  interval: 1h
  rules:
  - record: bindplane_agent_measurements:rollup:rate:1h
    expr: sum without (agent) (rate(bindplane_agent_measurements:15m{}[1h14m59s999ms] offset 10s))
EOF

Leave web.yml alone for now. See the TLS section for details on how to secure communication between Bindplane and Prometheus.

Systemd Service

Create the Systemd service.

sudo touch /usr/lib/systemd/system/prometheus.service
sudo chmod 0640 /usr/lib/systemd/system/prometheus.service

sudo tee /usr/lib/systemd/system/prometheus.service <<'EOF'
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--web.config.file /etc/prometheus/web.yml \
--storage.tsdb.retention.time 2d \
--web.enable-remote-write-receiver \
--web.listen-address :9090 \
--storage.tsdb.path /var/lib/prometheus/tsdb \
--web.console.templates=/var/lib/prometheus/consoles \
--web.console.libraries=/var/lib/prometheus/console_libraries

[Install]
WantedBy=multi-user.target
EOF

Enable and start Prometheus.

sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus

Validate

You can validate that Prometheus is running with the following curl command.

curl -v -s localhost:9090/metrics

Last updated

Was this helpful?