Hướng dẫn cấu hình Prometheus tích hợp cảnh báo qua Email – Phần 4

Ở những phần trước, tôi đã có các bài viết hướng dẫn các bạn việc cài đặt Prometheus server và thu thập các metric từ các client như CentOS, Windows. Ở bài viết này tôi sẽ giới thiệu một thành phần cảnh báo của Prometheus server và cấu hình cảnh báo tới người quản trị qua email.

Xem lại bài viết trước ở đây

1. Cài đặt Alert Manager

Alerting với Prometheus được chia làm hai phần. Alerting rules trong Prometheus server gửi alerts tới Alertmanager. Alertmanager sẽ quản lý việc cảnh báo, bao gồm silencing, inhibition, aggregation và gửi cảnh báo qua các phương thức như email, on-call notification systems, and chat platforms.

Các bước chính để set up alert và notifications là:

  • Setup và configure Alertmanager
  • Configure Prometheus để nói chuyện với Alertmanager
  • Tạo alerting rules trong Prometheus

Thực hiện theo các bước sau đâu để tích hợp vào Promethues server (đã hướng dẫn cài đặt và cấu hình ở nhưng phần trước)

Bước 1: Cài đặt Alert Manager

  • Cài đặt wget để tải gói
yum install wget -y
useradd --no-create-home --shell /bin/false alertmanager
cd /opt
wget https://github.com/prometheus/alertmanager/releases/download/v0.22.0-rc.1/alertmanager-0.22.0-rc.1.linux-amd64.tar.gz

tar xvf alertmanager-0.22.0-rc.1.linux-amd64.tar.gz

mv alertmanager-0.22.0-rc.1.linux-amd64/alertmanager /usr/local/bin/
mv alertmanager-0.22.0-rc.1.linux-amd64/amtool /usr/local/bin/

chown alertmanager:alertmanager /usr/local/bin/alertmanager
chown alertmanager:alertmanager /usr/local/bin/amtool

rm -rf alertmanager-0.22.0-rc.1.linux-amd64*
cd -

mkdir /etc/alertmanager
chown alertmanager:alertmanager /etc/alertmanager

Bước 2: Sửa file /etc/alertmanager/alertmanager.yml (Nếu file chưa có thì có thể tạo mới)

global:
  smtp_smarthost: 'smtp.domain.com:587'
  smtp_from: '[email protected]'
  smtp_auth_username: 'username'
  smtp_auth_password: 'password'



route:
  group_by: [alertname, datacenter, app]
  receiver: 'group-1'

receivers:
  - name: 'group-1'
    email_configs:
    - to: '[email protected]'

Chỉnh sửa smtp_auth_usernamesmtp_auth_password cho phù hợp.

Cấp quyền cho file cấu hình:

chown alertmanager:alertmanager /etc/alertmanager/alertmanager.yml

Giải thích: Một file cấu hình Alert Manager thường sẽ có 3 phần chính được đặt trong file định dạng yaml “/etc/alertmanager/alertmanager.yml”

  • global: chứa các biến global thông tin của email dùng để gửi mail cảnh báo như: tên email, username, password, máy chủ gửi mail (ví dụ máy chủ gửi thư của Gmail là smtp.gmail.com:587, của BizFly Cloud là smtp.bizflycloud.vn:587)
  • route: định nghĩa các group và nhóm người nhận muốn nhận cảnh báo
  • receivers: định nghĩa một nhóm người nhận group-1, liệt kê các địa chỉ email muốn nhận cảnh báo

Bước 3: Khởi chạy Alertmanager dưới systemd

  • Tạo file /etc/systemd/system/alertmanager.service có nội dung sau
[Unit]
Description=Alertmanager
Wants=network-online.target
After=network-online.target

[Service]
User=alertmanager
Group=alertmanager
Type=simple
WorkingDirectory=/etc/alertmanager/
ExecStart=/usr/local/bin/alertmanager --config.file=/etc/alertmanager/alertmanager.yml --web.external-url http://172.16.72.172:9093

[Install]
WantedBy=multi-user.target

Trong đó --web.external-url là địa chỉ ip và port của Alertmanager

  • Khởi động service
systemctl daemon-reload
systemctl enable alertmanager
systemctl status alertmanager

Bước 4: Tạo rule alert trên Promethus server

  • Tạo một file chứa rules để cảnh báo
touch /etc/prometheus/alert.rules.yml
  • Phân quyền cho file mới tạo
chown prometheus:prometheus /etc/prometheus/alert.rules.yml
  • Thêm rule vào file mới tạo để hệ thống cảnh báo mỗi khi có một node down (Prometheus không scrape được metric up từ các node client) sau 10s
groups:
- name: Instances
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 10s
    labels:
      severity: page
    # Prometheus templates apply here in the annotation and label fields of the alert.
    annotations:
      description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 10 s.'
      summary: 'Instance {{ $labels.instance }} down'
  • Check syntax cho file
[root@prometheus ~]# /usr/local/bin/promtool check rules /etc/prometheus/alert.rules.yml
Checking /etc/prometheus/alert.rules.yml
  SUCCESS: 1 rules found

Bước 5: Khai báo service Alertmanager với Prometheus

  • Thêm các dòng dưới đây vào file /etc/prometheus/prometheus.yml trên Prometheus server
rule_files:
  - alert.rules.yml

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 172.16.72.172:9093
  • Khởi động lại Prometheus server:
systemctl restart prometheus

Bước 6: Kiểm thử

Thử tắt node CentOS 7 đợi 10s nếu có mail gửi về email đã cấu hình ở Bước 2 là cấu hình thành công. Email cos nội dung tương tự như sau

Ngoài ra, thông tin về alert và các rules còn có thể xem được ở trên web interface của Prometheus. Truy cập vào trang http://172.16.72.171:9090/alerts

Ở đây bạn có thể thấy được các alerts đang được thực hiện cảnh báo tới người quản trị

Phần tiếp theo tôi sẽ hướng dẫn các bạn cấu hình Alertmanager cảnh báo qua Slack.

1 thought on “Hướng dẫn cấu hình Prometheus tích hợp cảnh báo qua Email – Phần 4”

Leave a Comment