Bài toán
Nếu bạn là system admin, có cách nào để khi hệ thống gặp sự cố, server sẽ tự bắn message về cho chúng ta qua email, telegram… để chúng xử lý ngay lập tức thay vì chờ người dùng báo rồi mới vào xử lý – đối với các hệ thống lớn như Banking, chứng khoán thì deplay vài phút cũng đã gây ra tổn thất nghiêm trọng.
Kịch bản ví dụ ở đây, hệ thống mình có một số thành phần quan trọng:
| Dịch vụ | Trạng thái | Ghi chú |
| Postgre database (port: 5432) | Down | |
| RabbitMQ | Down | |
| Backend 01 (NestJS) | Down | |
| Backend 02 (Laravel) | Down |
Hướng giải quyết
Với nhu cầu cơ bản như trên thì anh em có thể hoàn toàn có thể tự code được. Tuy nhiên, tự code một là tốn thời gian, 2 là chắc hẳn sẽ có bug cần thời gian mới ổn định.
Ngược lại, đã có rất nhiều tool chuyên nghiệp giải quyết rất tốt vấn đề này, mà đã là tool chuyên nghiệp thì lại có rất nhiều tính năng khó mà sử dụng hết, nên ở đây mình chi đưa ra lý do tại sao mình dùng các tool này.
| Tên tool | Tính năng sử dụng chính |
| Prometheus | – Thu thập metrics từ server/app/container – Trigger alert khi có sự cố – Đặc biệt mạnh với Query |
| Node Exporter | Dùng để lấy metrics của OS/server (CPU, RAM, Disk…) |
| Cadvisor | Monitor dành cho container Docker. Nếu không triển khai qua docker có thể bỏ service này |
| Blackbox | Check website/API uptime |
| AlertManager | Trình gửi cảnh báo (ở đây mình đang dùng email & telegram) |
| Grafana | Monitor giúp hiển thị dashboard, vẽ Chart… lấy data source từ các nguồn như Prometheus, Node Exporter… |

Cài đặt và cấu hình
Combo các công cụ này bản chất chỉ là tool có sẵn, việc sử dụng và cài đặt cũng tương đối dễ dàng. Thời buổi này chỉ cần prompt cho AI theo đúng các nhu cầu trên là chúng ta sẽ có file docker compose để setup rồi.
Dưới đây là một script mình đã đóng gói, anh em chỉ cần chọn option, code sẽ sinh đầy đủ các file docker compose để triển khai ngay. Mình cũng đang sử dụng script này với các production của công ty.
https://github.com/buiducduy111/DevOpsWatcher
Hướng dẫn tạo Bot Telegram
1. Vào app telegram, nhắn tin với “BotFather” để tạo bot mới, BotFather sẽ yêu cầu bạn nhập tên Bot và sau đó sẽ tự tạo Bot và cho bạn một token có dạng <xxxxx:yyyyyy> (ví dụ: 210841:AAFLxasfdwjfnwqjf)

Tiếp theo, lấy chat ID, chat ID có thể là chat giữa bạn và bot, hoặc bạn add bot vào 1 group. Ví dụ ở đây mình sẽ add bot này vào 1 group để nó thông báo, hãy nhắn ít nhất 1 tin ở group đó để Bot có data chat id.
Truy cập api:
https://api.telegram.org/bot<BOT_TOKEN>/getUpdates
Reponse trả về có dạng:

Group chat ID sẽ có dạng số âm, Person chat ID sẽ là số dương.
Như vậy bạn đã có đầy đủ BOT_TOKEN và CHAT_ID để cấu hình.
Kiểm thử
Bây giờ mình sẽ stop thủ công một trong các Service xem hệ thống sẽ báo gì về telegram

Chúc anh em thành công!