[Monitoring 6] Prometheus-Grafana-Exporter – Alert Manager
Alertmanager là một thành phần quan trọng trong bộ công cụ giám sát Prometheus, giúp quản lý các cảnh báo (alerts) được tạo ra từ Prometheus. Dưới đây là một số điểm chính về Alertmanager:
Chức Năng Chính
- Nhóm Cảnh Báo: Alertmanager có khả năng nhóm các cảnh báo tương tự lại với nhau để giảm thiểu số lượng thông báo được gửi đi. Điều này giúp quản lý thông báo hiệu quả hơn.
- Xử Lý Cảnh Báo: Nó có thể nhận các cảnh báo từ Prometheus và xử lý chúng theo các quy tắc đã định trước, như gửi thông báo khi có cảnh báo hoặc tắt cảnh báo sau khi sự cố đã được khắc phục.
- Gửi Thông Báo: Alertmanager hỗ trợ gửi cảnh báo đến nhiều kênh khác nhau như email, Slack, PagerDuty, hoặc các hệ thống thông báo khác thông qua webhook.
Không dài dòng nữa, chúng ta sẽ đi cài đặt dịch vụ này, và ở bài viết này,mình sẽ demo cảnh báo qua Telegram
Bước 1 – Khởi tạo user:
useradd --no-create-home --shell /bin/false alertmanager
Bước 2 – Cài đặt bộ cài alertmanager
Chúng ta sẽ vào đây xem bản cập nhật mới nhất, thời điểm này mình thấy bản mới nhất là 0.27.0 phát hành 28/2/2024.
+ Link releases
https://github.com/prometheus/alertmanager/releases
Tiến hành tải về
cd /mnt wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz tar xzf alertmanager-0.27.0.linux-amd64.tar.gz mv alertmanager-0.27.0.linux-amd64/alertmanager /usr/local/bin/ mv alertmanager-0.27.0.linux-amd64/amtool /usr/local/bin/ chown alertmanager:alertmanager /usr/local/bin/alertmanager chown alertmanager:alertmanager /usr/local/bin/amtool mkdir /etc/alertmanager chown alertmanager:alertmanager /etc/alertmanager
Bước 3 – Cấu hình Alertmanager
vi /etc/alertmanager/alertmanager.yml
Thêm vào:
global: resolve_timeout: 5m route: group_by: ['alertname'] group_interval: 5m repeat_interval: 60m receiver: 'telegram' receivers: - name: 'telegram' telegram_configs: - chat_id: -7732xxx35 bot_token: '5625825246:AxxxPgtDTh_p6OgXVcMRTE6OOAKPqGuc'
Giải thích:
global: resolve_timeout: 5m
- resolve_timeout: Đây là thời gian tối đa mà Alertmanager sẽ đợi trước khi coi một cảnh báo là đã được giải quyết. Nếu cảnh báo không được kích hoạt lại trong khoảng thời gian này, nó sẽ được đánh dấu là đã được giải quyết.
route: group_by: ['alertname'] group_interval: 5m repeat_interval: 60m receiver: 'telegram'
- group_by: Đây là danh sách các nhãn mà Alertmanager sẽ sử dụng để nhóm các cảnh báo. Trong trường hợp này, các cảnh báo sẽ được nhóm lại với nhau dựa trên tên cảnh báo (alertname).
- group_interval: Thời gian giữa các thông báo cảnh báo trong cùng một nhóm. Nếu có nhiều cảnh báo trong cùng một nhóm, Alertmanager sẽ không gửi thông báo mới cho đến khi hết thời gian 5 phút này.
- repeat_interval: Thời gian tối đa giữa các thông báo lặp lại cho cùng một cảnh báo. Nếu cảnh báo vẫn còn kích hoạt sau 60 phút, Alertmanager sẽ gửi thông báo lại.
- receiver: Đây là tên của receiver mà cảnh báo sẽ được gửi đến. Trong trường hợp này, tất cả các cảnh báo sẽ được gửi đến receiver có tên là telegram.
receivers: - name: 'telegram' telegram_configs: - chat_id: -773xxxx235 bot_token: '5625825246:AAF0yZSPgtxxxxXVcMRTE6OOAKPqGuc'
- receivers: Đây là danh sách các receiver mà Alertmanager có thể sử dụng để gửi thông báo. Mỗi receiver có thể có nhiều cấu hình khác nhau.
- name: Tên của receiver, ở đây là telegram.
- telegram_configs: Cấu hình cụ thể cho việc gửi thông báo qua Telegram.
- chat_id: Đây là ID của chat (hoặc nhóm chat) mà thông báo sẽ được gửi đến. Giá trị -7732xxxx235 cho biết đây là một nhóm chat.
- bot_token: Đây là token của bot Telegram mà bạn đã tạo để gửi thông báo. Token này cần được bảo mật, vì nó cho phép bot gửi tin nhắn đến chat được chỉ định.
Bước 4 – Tạo file systemd
mkdir /var/lib/alertmanager chown -R alertmanager:alertmanager /var/lib/alertmanager
Tạo file systemd
[Unit]
Description=Alertmanager
Wants=network-online.target
After=network-online.target
[Service]
User=alertmanager
Group=alertmanager
Restart=always
Type=simple
WorkingDirectory=/etc/alertmanager/
ExecStart=/usr/local/bin/alertmanager \
--config.file=/etc/alertmanager/alertmanager.yml \
--storage.path=/var/lib/alertmanager \
--cluster.listen-address=0.0.0.0:9094 \
--cluster.advertise-address=$YOUR_IP:9095
[Install]
WantedBy=multi-user.target
Kiểm tra config Alert-manager
amtool check-config /etc/alertmanager/alertmanager.yml
Bước 5 – Khởi tạo dịch vụ
systemctl daemon-reload systemctl start alertmanager.service systemctl enable alertmanager.service systemctl status alertmanager.service
Kiểm tra log Alert manager
journalctl -u alertmanager -f
Bước 6 – Cấu hình trên Prometheus Server
Tạo tệp
vi /etc/prometheus/alert_rules.yml
Ở đây mình chỉ tạo demo về thông báo ổ đĩa, bạn có thể thêm các alert khác như DISCONNECT , CPU, RAM, NETWORK…
Hình ảnh chỉ mang tính chất minh họa
Ví dụ:
groups: - name: NodeExporterLINUX Alerts rules: - alert: LowDiskSpace expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) < 0.3 for: 5m labels: severity: warning annotations: summary: "Low Disk Space on /" description: "Available space on / is less than 30%."
Sau đó chỉnh lại tệp prometheus.yml, trước tiên phân lại quyền sử dụng file alert_rules.yml
chown prometheus:prometheus /etc/prometheus/alert_rules.yml
Bên trên bạn có thể thêm nhiều rules, ở đây mình chỉ có 1 file rules cho Node Exporter Linux
Khởi động lại prometheus
systemctl restart prometheus
Truy cập vào http://YOUR_IP:9090/alerts
Xem cảnh báo tại telegram
Hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com
Chúc các bạn thành công.