
A Step-by-Step Guide to Installing and Configuring Prometheus on Debian
In today’s complex IT environments, proactive monitoring is no longer a luxury—it’s a necessity. Understanding the performance and health of your servers is crucial for maintaining stability, troubleshooting issues, and ensuring a smooth user experience. Prometheus, a powerful open-source monitoring and alerting toolkit originally built at SoundCloud, has become an industry standard for collecting and analyzing time-series data.
This comprehensive guide will walk you through the entire process of installing and configuring Prometheus on a Debian server. We will cover everything from creating a dedicated user to setting up a systemd service for reliable operation.
Prerequisites
Before we begin, ensure you have the following:
- A server running a recent version of Debian (such as 10, 11, or 12).
- Access to a user account with
sudo
or root privileges.
Step 1: Create a Dedicated System User
For security purposes, it is a best practice to run services like Prometheus under their own dedicated, non-root user accounts. This isolates the service and limits its permissions on the system.
First, create a new system user and group named prometheus
with no home directory or login shell.
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Next, we’ll create the necessary directories for Prometheus to store its configuration and data.
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
Finally, set the ownership of these directories to the prometheus
user and group.
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
Step 2: Download and Install Prometheus
Prometheus is distributed as a pre-compiled binary, which simplifies the installation process.
Download the Latest Version:
Navigate to the official Prometheus downloads page to find the latest stable version for thelinux-amd64
architecture. Copy the link address for the tarball.Download and Extract the Archive:
Usewget
to download the file to your home directory. Replace the URL below with the link you copied.wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz
Once the download is complete, extract the contents of the archive.
tar xvf prometheus-2.53.0.linux-amd64.tar.gz
Install the Binaries:
Change into the newly created directory. You will find two main binary files:prometheus
andpromtool
.cd prometheus-2.53.0.linux-amd64/
Move these binaries to
/usr/local/bin
, a standard location for user-installed executables.sudo mv prometheus /usr/local/bin/ sudo mv promtool /usr/local/bin/
Set the ownership of the binaries to the
prometheus
user.sudo chown prometheus:prometheus /usr/local/bin/prometheus sudo chown prometheus:prometheus /usr/local/bin/promtool
Install Configuration Files:
Move theconsoles
andconsole_libraries
directories, along with the main configuration fileprometheus.yml
, to the/etc/prometheus
directory we created earlier.sudo mv consoles /etc/prometheus sudo mv console_libraries /etc/prometheus sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Ensure the ownership is correctly set for all files in
/etc/prometheus
.sudo chown -R prometheus:prometheus /etc/prometheus
Step 3: Configure Prometheus
The core of Prometheus’s behavior is defined in its configuration file, prometheus.yml
. By default, it is configured to monitor itself, which is a great way to verify that the installation is working correctly.
Let’s review the default configuration file. You can open it with a text editor like nano
:
sudo nano /etc/prometheus/prometheus.yml
The file will look something like this:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
This configuration tells Prometheus to:
scrape_interval: 15s
: Collect metrics from its targets every 15 seconds.job_name: 'prometheus'
: Define a job named “prometheus”.targets: ['localhost:9090']
: The target for this job is Prometheus itself, which exposes its own metrics on port 9090.
No changes are needed for now. We can expand this file later to add more monitoring targets.
Step 4: Create a systemd Service File
To manage Prometheus as a standard system service (allowing it to start on boot and be managed with systemctl
), we need to create a systemd
unit file.
Create a new file at /etc/systemd/system/prometheus.service:
sudo nano /etc/systemd/system/prometheus.service
Paste the following content into the file. This unit file specifies the user to run as and points to the correct configuration and data directories.
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
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
[Install]
WantedBy=multi-user.target
Save and close the file. Now, reload the systemd
daemon to make it aware of the new service.
sudo systemctl daemon-reload
Step 5: Start Prometheus and Verify Operation
With all the pieces in place, it’s time to start the service.
Start and Enable the Service:
Start the Prometheus service and enable it to launch automatically at system startup.sudo systemctl start prometheus sudo systemctl enable prometheus
Check the Status:
Verify that the service is running correctly.sudo systemctl status prometheus
You should see an output indicating that the service is active (running).
Configure Firewall (If Necessary):
If you are using a firewall likeufw
, you must allow traffic on port 9090.sudo ufw allow 9090/tcp
Access the Web UI:
Open your web browser and navigate to your server’s IP address on port 9090:http://YOUR_SERVER_IP:9090
You should now see the Prometheus web interface. To confirm it is scraping its own metrics, navigate to Status > Targets. You should see the
prometheus
job with a state of UP.
Conclusion and Next Steps
Congratulations! You have successfully installed and configured a fully operational Prometheus server on Debian. This setup provides a solid foundation for a robust monitoring system.
From here, your next steps could include:
- Installing Node Exporter: Set up the Prometheus Node Exporter on your servers to collect detailed system-level metrics like CPU, memory, and disk usage.
- Configuring Alertmanager: Set up Alertmanager to handle alerts and notify you via email, Slack, or other channels when metrics cross critical thresholds.
- Visualizing with Grafana: Connect Grafana to your Prometheus instance to create beautiful, powerful, and interactive dashboards for visualizing your metrics.
By investing in a proper monitoring solution, you gain invaluable insights into your infrastructure, enabling you to build more reliable and performant systems.
Source: https://kifarunix.com/install-and-configure-prometheus-on-debian-9/