On this short tutorial, we will show you how how to install Prometheus on Debian 11 operating system.
Introduction
Prometheus is an open-source systems for event monitoring and alerting. Prometheus collects and stores its metrics as time series data, i.e. metrics information is stored with the timestamp at which it was recorded, alongside optional key-value pairs called labels. Prometheus was developed at SoundCloud starting in 2012. On this article we will learn how to install Prometheus on Debian 11 operating system.
Prometheus Installation Guide on Debian 11
Prerequisites
- An updated Debian 11 operating system with root or user account with sudo privilege.
- Sufficient space and good internet connection.
Prometheus installation steps
On this section, we will discuss how to install Promeutheus on a Debian 11 operating system. The installation will be consist of several steps, as described below :
- Create Prometheus group and user system
- Create new directory for Prometheus data
- Download and Extract Prometheus binary files
- Create Prometheus Configuration file
- Create Prometheus systemd service unit file
- Accessing Prometheus Web Interface
Detailed explanation of each item will be explained in the following sub-chapters.
1. Create Prometheus group and user system
The first step on installing Prometheus monitoring tools on Debian 11 is to create a new group and user system for holding application data and privilege, where the applications will be running rely on this user. To create a new group and user, we will use the following command line :
$ sudo groupadd --system prometheus $ sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Output :
ramansah@otodiginet:~$ sudo groupadd --system prometheus [sudo] password for ramansah: ramansah@otodiginet:~$ sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Check the result on /etc/passwd file, as shown below :
:~$ more /etc/passwd|grep prometheus
Output :
ramansah@otodiginet:~$ more /etc/passwd|grep prometheus prometheus:x:998:998::/home/prometheus:/sbin/nologin
2. Create New Directory for Prometheus Data
On this stage, we will create a new directory for Prometheus data and configuration files. For this purpose we will use mkdir command line as shown below.
ramansah@otodiginet:~$ sudo mkdir /var/lib/prometheus ramansah@otodiginet:~$ for i in rules rules.d files_sd; do sudo mkdir -p /etc/prometheus/${i}; done
3. Download and Extract Prometheus binary files
Now we will download Prometheus archive and extract it to get binary files. We will download the release from Prometheus releases Github page.
$ sudo apt-get update $ mkdir -p /tmp/prometheus && cd /tmp/prometheus $ curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -
Output :
ramansah@otodiginet:~$ mkdir -p /tmp/prometheus && cd /tmp/prometheus ramansah@otodiginet:/tmp/prometheus$ curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi - ramansah@otodiginet:/tmp/prometheus$ ls -ltr total 70924 -rw-r--r-- 1 ramansah ramansah 72625617 Oct 1 08:42 prometheus-2.30.2.linux-amd64.tar.gz
Then we will extract it by using tar command line :
$ tar xvf prometheus*.tar.gz
Output :
ramansah@otodiginet:/tmp/prometheus$ tar xvf prometheus*.tar.gz prometheus-2.30.2.linux-amd64/ prometheus-2.30.2.linux-amd64/consoles/ prometheus-2.30.2.linux-amd64/consoles/index.html.example prometheus-2.30.2.linux-amd64/consoles/node-cpu.html prometheus-2.30.2.linux-amd64/consoles/node-disk.html prometheus-2.30.2.linux-amd64/consoles/node-overview.html prometheus-2.30.2.linux-amd64/consoles/node.html prometheus-2.30.2.linux-amd64/consoles/prometheus-overview.html prometheus-2.30.2.linux-amd64/consoles/prometheus.html prometheus-2.30.2.linux-amd64/console_libraries/ prometheus-2.30.2.linux-amd64/console_libraries/menu.lib prometheus-2.30.2.linux-amd64/console_libraries/prom.lib prometheus-2.30.2.linux-amd64/prometheus.yml prometheus-2.30.2.linux-amd64/LICENSE prometheus-2.30.2.linux-amd64/NOTICE prometheus-2.30.2.linux-amd64/prometheus prometheus-2.30.2.linux-amd64/promtool
Then we will move promtheus.yml, consoles and console_libraries file to /etc/promotheus :
ramansah@otodiginet:/tmp/prometheus/prometheus-2.30.2.linux-amd64$ sudo mv prometheus.yml /etc/prometheus/prometheus.yml ramansah@otodiginet:/tmp/prometheus/prometheus-2.30.2.linux-amd64$ sudo mv consoles/ console_libraries/ /etc/prometheus/
4. Create Prometheus Configuration File
The default configuration file looks similar to below.
ramansah@otodiginet:~$ cat /etc/prometheus/prometheus.yml # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["localhost:9090"]
5. Create Prometheus systemd Service Unit File
On this stage, we will create a systemd service unit file for Prometheus. We will create a new file called as /etc/systemd/system/prometheus.service, with the following entry:
[Unit] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0:9090 \ --web.external-url= SyslogIdentifier=prometheus Restart=always [Install] WantedBy=multi-user.target
Then we will changes the files mode and restart Promotheus service with the following command lines :
$ for i in rules rules.d files_sd; do sudo chown -R prometheus:prometheus /etc/prometheus/${i}; $ for i in rules rules.d files_sd; do sudo chmod -R 775 /etc/prometheus/${i}; sudo chown -R prometheus:prometheus /var/lib/prometheus/
Output :
ramansah@otodiginet:~$ for i in rules rules.d files_sd; do sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done [sudo] password for ramansah: ramansah@otodiginet:~$ for i in rules rules.d files_sd; do sudo chmod -R 775 /etc/prometheus/${i}; done ramansah@otodiginet:~$ sudo chown -R prometheus:prometheus /var/lib/prometheus/
Reload Prometheus service by submitting command lines :
$ sudo systemctl daemon-reload $ sudo systemctl start prometheus $ systemctl status prometheus
Output :
ramansah@otodiginet:~$ sudo systemctl daemon-reload ramansah@otodiginet:~$ sudo systemctl start prometheus ramansah@otodiginet:~$ systemctl status prometheus ● prometheus.service - Prometheus Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2021-10-05 04:26:08 EDT; 3min 4s ago Docs: https://prometheus.io/docs/introduction/overview/ Main PID: 8471 (prometheus) Tasks: 8 (limit: 4623) Memory: 70.3M CPU: 269ms CGroup: /system.slice/prometheus.service └─8471 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/pro>
We also can verify Prometheus version by submitting command line :
$ prometheus --version
Output :
ramansah@otodiginet:~$ prometheus --version prometheus, version 2.30.2 (branch: HEAD, revision: b30db03f35651888e34ac101a06e25d27d15b476) build user: root@80d1e84a93dd build date: 20211001-12:26:58 go version: go1.17.1 platform: linux/amd64
6. Accessing Prometheus Web Interface
After all are configured, then we will test Prometheus service by accessing its web porta. The Prometheus web can be accessed on URL : http://<server_name_or_ip_address>:9090, as shown below:
Conclusion
On this short tutorial, we have shown you how to install Prometheus monitoring tools on Debian 11 operating system. I hope this tutorial we be helpful.