docker-compose.yml: Service is up and running.
version: '3'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
volumes:
- ./prometheus/conf:/etc/prometheus
# - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./alertmanager/alert_rules.yml:/alertmanager/alert.rules.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
ports:
- 9093:9093
volumes:
- ./alertmanager/:/etc/alertmanager/
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
- '--storage.path=/alertmanager'
prometheus.yml: Prometheus config file with targets and alerts target sets. The alertmanager target url is working fine.
global:
scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
- 10.10.5.14:9093
scheme: http
timeout: 10s
api_version: v1
rule_files:
- "/alertmanager/alert.rules:/alertmanager/alert.rules"
scrape_configs:
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- "google.com"
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
alert.rules: Standard alert rule.
groups:
- name: example
rules:
# Alert for any instance that is unreachable for >1 minutes.
- alert: InstanceDown
expr: up == 0
for: 1m
alertmanager.yml: Code to send alerts via gmail smtp.
route:
group_by: [Alertname]
# Send all notifications to me.
receiver: email-me
receivers:
- name: email-me
email_configs:
- to: anyemail.com
from: senderlogin@gmail.com
smarthost: smtp.gmail.com:587
auth_username: "senderlogin@gmail.com"
auth_identity: "senderlogin@gmail.com"
auth_password: "password"
Problem: All containers are working but there are no rule in prometheus rules. And the letters do not come accordingly either. I can’t understand what I missed. Any hints are welcome. Thanks. enter image description here enter image description here
Alertmanager is not on localhost from the view of the prometheus container, the networking is namespaced in containers so you need to contact alertmanager using DNS discovery to find the current container IP. With compose, DNS is automatically configured for the service name, in this case alertmanager
:
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093