1. Giới thiệu.
Công việc cảnh báo với Prometheus được chia thành hai phần chính. Các rules cảnh báo trong máy chủ Prometheus sẽ gửi thông báo cảnh báo đến một ứng dụng quản lý cảnh báo được gọi là Alertmanager. Alertmanager sau đó quản lý những thông báo cảnh báo này, bao gồm việc kiểm soát, tổng hợp và gửi thông báo qua các phương thức như email, hệ thống thông báo trực tuyến và các nền tảng như Telegram, email,…
Các bước chính để thiết lập cảnh báo và thông báo như sau:
- Thiết lập và cấu hình Alertmanager.
- Cấu hình Prometheus để trò chuyện với Alertmanager.
- Tạo các rules cảnh báo trong Prometheus.
2. Alertmanage là gì?
2.1. Nhóm (Grouping).
Grouping nhằm phân loại các thông báo cảnh báo có tính chất tương tự thành một thông báo cảnh báo duy nhất. Điều này đặc biệt hữu ích trong trường hợp sự cố lớn khi nhiều hệ thống gặp sự cố cùng một lúc và hàng trăm đến hàng nghìn thông báo cảnh báo có thể kích hoạt đồng thời.
Khi xảy ra một vụ chia tách mạng, có hàng chục hoặc hàng trăm phiên bản của dịch vụ đang chạy trong cụm của bạn. Một nửa các phiên bản dịch vụ của bạn không thể kết nối với cơ sở dữ liệu. Rules cảnh báo trong Prometheus được cấu hình để gửi thông báo cảnh báo cho mỗi phiên bản dịch vụ nếu nó không thể giao tiếp với cơ sở dữ liệu. Kết quả là hàng trăm thông báo cảnh báo được gửi đến Alertmanager.
Bạn có thể cấu hình Alertmanager để nhóm các thông báo cảnh báo bằng cách sử dụng các thông tin như tên cụm (cluster) và tên cảnh báo (alertname) để gửi một thông báo cảnh báo duy nhất.
2.2. Kiểm soát (Inhibition).
Kiểm soát là một khái niệm để tắt thông báo cho một số cảnh báo nếu một số cảnh báo khác đang hoạt động.
Ví dụ một cảnh báo đang hoạt động thông báo rằng toàn bộ cụm không thể tiếp cận được. Alertmanager có thể được cấu hình để tắt tất cả các thông báo cảnh báo khác liên quan đến cụm này nếu cảnh báo cụ thể đó đang hoạt động. Điều này ngăn chặn thông báo cho hàng trăm hoặc hàng nghìn thông báo cảnh báo khác không liên quan đến vấn đề thực tế.
Các kiểm soát sẽ được cấu hình thông qua tệp cấu hình của Alertmanager.
2.3. Tắt tiếng (Silences).
Silences là cách đơn giản để tắt thông báo cảnh báo trong một khoảng thời gian cụ thể. Một Silences được cấu hình dựa trên các matchers, giống như cây định tuyến (routing tree). Các thông báo cảnh báo đến sẽ được kiểm tra xem chúng có khớp với tất cả các matchers (sự tương đồng hoặc biểu thức chính quy) của một Silences đang hoạt động hay không. Nếu chúng khớp, không có thông báo nào sẽ được gửi đi cho thông báo đó.
Silences được cấu hình trong giao diện web của Alertmanager.
2.4. Hành vi của ứng dụng (Client behavior).
Alertmanager có các yêu cầu đặc biệt đối với hành vi của ứng dụng của nó. Những yêu cầu này chỉ quan trọng đối với các trường hợp sử dụng nâng cao, trong đó Prometheus không được sử dụng để gửi thông báo cảnh báo.
2.4. Khả năng chịu lỗi (High Availability).
Alertmanager hỗ trợ cấu hình để tạo một cụm có khả năng sẵn có cao (high availability).
Điều này có thể được cấu hình bằng cách sử dụng các cờ –cluster-*.
Lưu ý quan trọng là không nên cân bằng tải lưu lượng giữa Prometheus và các Alertmanager của nó, mà thay vào đó, chỉ định Prometheus đến danh sách tất cả các Alertmanager.