Alerts Configuration using Prometheus
To configure alerts in Prometheus based on specific metric thresholds and display those alerts in Grafana, follow these steps:
Step 1: Configure Prometheus Alerts
Edit the Prometheus Configuration: Open your
prometheus.yml
configuration file and add analerting
section along with your alerting rules. For example, you can set up a rule to trigger an alert when CPU usage exceeds 80%.Here’s an example of how to set this up:
global: scrape_interval: 15s # Default scrape interval evaluation_interval: 1m # How often to evaluate rules scrape_configs: - job_name: 'node-app' static_configs: - targets: ['localhost:3000'] rule_files: - "alerts.yml" # Reference to the alerts file
Create an Alerting Rule File: Create a new file named
alerts.yml
in the same directory as yourprometheus.yml
. Add the following alert rule to this file:groups: - name: example_alerts rules: - alert: HighCpuUsage expr: (1 - avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) > 0.8) for: 5m labels: severity: critical annotations: summary: "High CPU Usage" description: "CPU usage is above 80% for more than 5 minutes."
This rule triggers an alert called
HighCpuUsage
if the average CPU usage over the last 5 minutes is greater than 80% for 5 consecutive minutes.Restart Prometheus: After modifying the configuration files, restart Prometheus to apply the changes:
./prometheus --config.file=prometheus.yml
Step 2: Configure Alertmanager (Optional but Recommended)
Although you can configure alerts in Prometheus directly, using Alertmanager allows you to manage and route alerts effectively.
Install Alertmanager: Download Alertmanager from the Prometheus download page and extract it:
wget https://github.com/prometheus/alertmanager/releases/latest/download/alertmanager-<version>.linux-amd64.tar.gz tar xvf alertmanager-<version>.linux-amd64.tar.gz cd alertmanager-<version>.linux-amd64
Configure Alertmanager: Create a configuration file named
alertmanager.yml
with the following content:global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 3h receiver: 'default' receivers: - name: 'default' webhook_configs: - url: 'http://localhost:5000' # Configure your webhook URL or email here
Start Alertmanager: Run Alertmanager with the following command:
./alertmanager --config.file=alertmanager.yml
Modify Prometheus Configuration to Use Alertmanager: Update your
prometheus.yml
to include Alertmanager:alerting: alertmanagers: - static_configs: - targets: - localhost:9093 # Default Alertmanager port
Restart Prometheus Again: Restart Prometheus to apply the new configurations.
Step 3: Display Alerts in Grafana
Access Grafana: Open your web browser and go to
http://localhost:3000
.Add Alerting Data Source: Go to Configuration (gear icon) > Data Sources > Add data source and select Prometheus.
Make sure the HTTP URL is set to your Prometheus server (e.g.,
http://localhost:9090
) and click Save & Test.Create a New Dashboard for Alerts:
Click on the Plus icon (➕) in the left sidebar and select Dashboard.
Click on Add new panel.
Use the following query to fetch alert information:
ALERTS{alertstate="firing"}
Choose Visualization:
Change the visualization type (e.g., table, graph) depending on how you want to display alerts.
Configure the panel settings to include columns such as alertname, severity, summary, and description.
Save the Dashboard: Click the disk icon to save your dashboard.
Step 4: Test Alerts
To test the alert, you can artificially increase the CPU usage of your Node.js application or use a load testing tool to simulate high CPU usage. Once the CPU usage exceeds the defined threshold for the specified duration, the alert should be triggered, and you should see it reflected in your Grafana dashboard.
Conclusion
You have successfully configured Prometheus to trigger alerts based on specific metric thresholds and displayed those alerts in Grafana.
Subscribe to my newsletter
Read articles from Vaibhav Parekh directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Vaibhav Parekh
Vaibhav Parekh
I am a Cloud enthusiast . Delivering continuous learnings through blogs . You have any doubts you can contact me directly don't hesitate . We all have a start and initial days of learning !!