ToiVietBlog - Bài này ta sẽ thiết lập Alertmanager gửi cảnh báo với Telegram bot. Hệ thống monitor chỉ thật sự hữu ích chỉ khi nó có thể gửi cảnh báo cho bạn. Đơn giản là bởi vì bạn không thể 24/7/365 nhìn vào màn hình monitor được. Và thậm chí bạn cũng không thể nhìn hết được toàn bộ dashboard.
Cài đặt Golang trên Ubuntu 18
Ta sẽ sử dụng một Telegram bot mã nguồn mở có link repository tại đây.
Lưu ý rằng bot này sử dụng Golang có phiên bản lớn hơn go1.10, phiên bản repository của Ubuntu server 18.04 là go1.10.
Vì vậy, ta cần cài đặt Golang go1.13 từ source. Tải phần mềm và giải nén.
apt install make -y wget https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz tar -xvf go1.13.3.linux-amd64.tar.gz && rm -f go1.13.3.linux-amd64.tar.gz
Export biến môi trường cho go.
mv go /usr/local export GOROOT=/usr/local/go
Chuyển file go version cũ thành file backup. Tạo link file go với version mới.
mv /usr/bin/go /usr/bin/go.bk ln -s /usr/local/go/bin/go /usr/bin/go
Bạn kiểm tra phiên bản go với lệnh sau.
go version
Cài đặt Alertmanager Telegram bot
Recommended Reading: Cài đặt Alertmanager và thiết lập cảnh báo Prometheus
Bây giờ, ta sẽ tải mã nguồn Telegram bot về server.
go get github.com/inCaller/prometheus_bot
Di chuyển vào thư mục mã nguồn và build.
cd go/src/github.com/inCaller/prometheus_bot/ make clean make
Chuyển file thực thi binary vào local.
mv prometheus_bot /usr/local/bin/telegrambot
Tạo thư mục cấu hình telegrambot. Copy các file cấu hình cần thiết.
mkdir /etc/telegrambot mv testdata /etc/telegrambot/ cp /etc/telegrambot/testdata/template.tmpl /etc/telegrambot/template.tmpl
Tạo file config.yaml
.
nano /etc/telegrambot/config.yaml
Bạn sửa cho nội dung như sau.
telegram_token: "Bot-Token" template_path: "/etc/telegrambot/template.tmpl" time_zone: "Asia/Ho_Chi_Minh" split_token: "|" time_outdata: "02/01/2006 15:04:05" split_msg_byte: 10000
Trong file trên, bạn cần đổi nội dung Bot-Token
với token telegram bot của bạn.
Recommended Reading: Cách tạo Telegram Bot và get chat ID
Tạo user cho dịch vụ telegrambot.
useradd -rs /bin/false telegrambot chown telegrambot:telegrambot /usr/local/bin/telegrambot chown -R telegrambot:telegrambot /etc/telegrambot/*
Tạo file systemd cho dịch vụ telegrambot.
nano /etc/systemd/system/telegrambot.service
Copy nội dung dưới đây vào file và lưu lại.
[Unit] Description=Prometheus Telegram Bot Service Wants=network-online.target After=network-online.target [Service] Type=simple User=telegrambot Group=telegrambot ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/telegrambot \ -c /etc/telegrambot/config.yaml \ -l ":9087" \ -t /etc/telegrambot/template.tmpl SyslogIdentifier=telegrambot Restart=always [Install] WantedBy=multi-user.target
Reload daemon và khởi động dịch vụ telegrambot. Dịch vụ sẽ chạy cổng 9087.
systemctl daemon-reload systemctl enable telegrambot.service systemctl start telegrambot.service
Thiết lập Alertmanager gửi alert tới Telegram bot
bạn mở file alertmanager.yml.
nano /etc/alertmanager/alertmanager.yml
Bạn thiết lập file trông như dưới đây.
global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 5m receiver: 'web.hook' receivers: - name: 'web.hook' webhook_configs: - url: 'http://127.0.0.1:9087/alert/-123456789' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
Trong nội dung có 2 dòng bạn cần phải sửa.
- repeat_interval: 5m: thời gian giữa các lần gửi alert, ở đây mình thiết lập 5 phút gửi alert một lần.
- url: ‘http://127.0.0.1:9087/alert/-123456789’: bạn cần thay
123456789
bằngchat-ID
room chat Telegram của bạn.
Bây giờ, reload các dịch vụ.
service prometheus reload service alertmanager reload service telegrambot reload
Kết quả bạn sẽ nhận được tin nhắn Telegram trông như sau.

Kết luận
Vậy là mình đã hướng dẫn các bạn từng bước để cài đặt Alertmanager Telegram bot thành công. Việc bây giờ, bạn chỉ cần định nghĩa các rule cần thiết cho Prometheus. Mỗi khi rule match với sự kiện monitor nào đó trong hệ thống, bạn sẽ nhận được tin nhắn cảnh báo.
If you appreciate what we share in this blog, you can support us by:
- Stay connected to: Facebook | Twitter | Google Plus | YouTube
- Subscribe email to recieve new posts from us: Sign up now.
- Start your own blog with SSD VPS - Free Let's Encrypt SSL ($2.5/month).
- Become a Supporter - Make a contribution via PayPal.
- Support us by purchasing Ribbon Lite Child theme being using on this website.
We are thankful for your support.
Hi anh Dũng,
Nhờ anh chỉ giúp mình file template.tmpl hiện không có ở link
https://github.com/inCaller/prometheus_bot
nên mình không thể cấu hình tiếp được.
cảm ơn anh Dũng nhiều