1 Alertmanager là gì?
1.1 Tác dụng của Alertmanager
Alertmanager là một thành phần quan trọng trong hệ sinh thái Prometheus, dùng để xử lý các cảnh báo (Alerts) từ Prometheus.
Nó cung cấp các chức năng như nhóm cảnh báo, loại bỏ trùng lặp, chặn đứng, định tuyến và thông báo cảnh báo. Điều này giúp người quản trị có thể phản ứng nhanh chóng và thực hiện các biện pháp cần thiết khi gặp sự cố.
1.2 Sơ đồ quy trình cảnh báo
2 Quy tắc cảnh báo trong Prometheus
2.1 Tệp cấu hình cảnh báo
[root@server01 rule]# cat /data/alertmanager/rule/thong_bao.yml
nhom:
- ten: ThongTinMayChu
quy_tac:
- canh_bao: MayChuMatKetNoi
dieu_kien: lenh_lenh == 0
sau_thoi_gian: 60s
nhan:
muc_do: nguy_cap
mo_ta:
tom_tat: "{{ $labels.instance }} Máy chủ mất kết nối, hãy xử lý ngay"
chi_tiet: "{{ $labels.instance }} đã mất kết nối hơn 1 phút. Vui lòng kiểm tra trạng thái dịch vụ."
nhom:Nhóm
- ten:Tên nhóm cảnh báo trong tệp
quy_tac:Các quy tắc cảnh báo
- canh_bao:Tên cảnh báo
dieu_kien:Điều kiện kích hoạt cảnh báo
sau_thoi_gian:Thời gian chờ trước khi kích hoạt cảnh báo
nhan:Nhãn cảnh báo, dùng để so khớp quy tắc
mo_ta:Mô tả chi tiết về cảnh báo
3 Cấu hình Alertmanager alertmanager.yml
3.1 Các chức năng chính của Alertmanager
Nhóm cảnh báo(Grouping):Gộp các cảnh báo tương tự lại với nhau để giảm số lượng cảnh báo.
Loại bỏ trùng lặp(Deduplication):Nếu cùng một cảnh báo được kích hoạt nhiều lần trong thời gian ngắn, Alertmanager chỉ gửi một thông báo.
Chặn đứng(Inhibition):Khi một cảnh báo ưu tiên cao được kích hoạt, các cảnh báo ưu tiên thấp liên quan sẽ bị chặn.
Định tuyến(Routing):Gửi các loại cảnh báo khác nhau đến những người nhận khác nhau (ví dụ: email, Slack, Webhook).
Thông báo(Notification):Hỗ trợ nhiều phương thức thông báo như email, Slack, PagerDuty, Webhook, v.v.
3.2 Giải thích chi tiết cấu hình Alertmanager
toan_cuc:
thoi_gian_giai_quyet: 5m
smtp_smarthost: 'smtp.duongdan.com:587'
smtp_tu: 'alert@duongdan.com'
smtp_auth_ten_dang_nhap: 'user@duongdan.com'
smtp_auth_mat_khau: 'matkhau'
smtp_hello: "tenmien.com"
smtp_yeu_cau_tls: false
duong_di:
nguoi_nhan_mac_dinh: 'macdinh'
danh_sach_theo_doi: ['canhbao', 'cummay', 'dichvu'] # Dựa vào để phân nhóm
thoi_gian_cho_truoc_khi_gui: 30s # Thời gian chờ trước khi gửi cảnh báo đầu tiên
khoang_cach_gui_moi_canh_bao: 5m # Khoảng cách giữa việc gửi các cảnh báo mới trong cùng một nhóm
khoang_cach_lap_lai: 3h # Khoảng cách giữa việc gửi lại cùng một cảnh báo
duong_di_con:
- dieu_kien_phu_hop:
muc_do: nguy_cap
nguoi_nhan: 'email'
tiep_tuc: true # Tiếp tục tìm kiếm các quy tắc tiếp theo
- dieu_kien_phu_hop:
muc_do: canh_bao
nguoi_nhan: 'slack'
- dieu_kien_phu_hop:
canhbao: MayChuMatKetNoi
nguoi_nhan: 'webhook'
nguoi_nhan:
- ten: 'macdinh'
webhook_configs:
- dia_chi: 'http://webhook.duongdan.com/thongbao'
- ten: 'email'
email_configs:
- den: 'quantri@duongdan.com'
tu: 'alert@duongdan.com'
smarthost: 'smtp.duongdan.com:587'
auth_username: 'user@duongdan.com'
auth_password: 'matkhau'
gui_khi_giai_quyet: true # Gửi thông báo khi cảnh báo được giải quyết
- ten: 'slack'
slack_configs:
- kenh: '#canhbao'
gui_khi_giai_quyet: true
api_url: 'https://hooks.slack.com/services/XXX/YYY/ZZZ'
tieu_de: '{{ .CommonAnnotations.tom_tat }}'
noi_dung: '{{ .CommonAnnotations.chi_tiet }}'
- ten: 'webhook'
webhook_configs:
- dia_chi: 'http://xulycanhbaolocal/notify'
quy_tac_chan_dung:
- nguon_phu_hop:
muc_do: 'nguy_cap'
dich_phu_hop:
muc_do: 'canh_bao'
bang_nhau: ['instance']
3.3 Cấu hình toan_cuc
Cấu hình toàn cục, các tùy chọn cấu hình dưới khối toan_cuc có hiệu lực trên toàn bộ tệp cấu hình nhưng có thể bị ghi đè bởi các cấu hình con ở vị trí khác trong tệp.
toan_cuc:
thoi_gian_giai_quyet: 5m # Chờ 5 phút sau khi cảnh báo được giải quyết trước khi đánh dấu là đã giải quyết
smtp_smarthost: 'smtp.duongdan.com:587' # Địa chỉ máy chủ email
smtp_tu: 'xxx@duongdan.com' # Địa chỉ email gửi cảnh báo
smtp_auth_ten_dang_nhap: 'xxx@duongdan.com' # Tên đăng nhập máy chủ SMTP
smtp_auth_mat_khau: 'matkhau' # Mật khẩu máy chủ SMTP
3.4 Cấu hình duong_di
Cấu hình định tuyến cảnh báo, dùng để định tuyến và phân nhóm cảnh báo, cho phép gửi các nhóm cảnh báo khác nhau đến những người nhận khác nhau.
duong_di:
nguoi_nhan_mac_dinh: 'macdinh'
danh_sach_theo_doi: ['canhbao', 'cummay', 'dichvu']
thoi_gian_cho_truoc_khi_gui: 30s
khoang_cach_gui_moi_canh_bao: 5m
khoang_cach_lap_lai: 3h
3.5 Cấu hình duong_di_con
Cấu hình con của duong_di, có độ ưu tiên cao hơn và cấu hình tương tự duong_di.
duong_di_con:
- dieu_kien_phu_hop:
muc_do: nguy_cap
nguoi_nhan: 'email'
tiep_tuc: true
- dieu_kien_phu_hop:
muc_do: canh_bao
nguoi_nhan: 'slack'
- dieu_kien_phu_hop:
canhbao: MayChuMatKetNoi
nguoi_nhan: 'webhook'
3.6 Cấu hình nguoi_nhan
Cấu hình người nhận cảnh báo, mỗi receiver đều có tên riêng, sau khi định tuyến qua duong_di cần chỉ định một receiver, có thể cấu hình nhiều kiểu người nhận khác nhau.
nguoi_nhan:
- ten: 'macdinh'
webhook_configs:
- dia_chi: 'http://webhook.duongdan.com/thongbao'
3.7 Cấu hình quy_tac_chan_dung
Quy tắc chặn đứng cảnh báo, nhằm giảm số lượng cảnh báo và ngăn chặn tình trạng "bão cảnh báo".
quy_tac_chan_dung:
- nguon_phu_hop:
muc_do: 'nguy_cap'
dich_phu_hop:
muc_do: 'canh_bao'
bang_nhau: ['instance']