Alertmanager gửi cảnh báo với Telegram bot

Bài viết này là phần 8 trong 14 phần của serie bài viết Cài đặt Prometheus và Grafana trên Ubuntu 18

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

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.

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ằng chat-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.

alertmanager-gui-canh-bao-voi-telegram-bot Alertmanager gửi cảnh báo với Telegram bot
Alertmanager gửi cảnh báo với telegram bot.

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.

Tiếp tục đọc serie bài viết«« Phần trước: Cài đặt Alertmanager và thiết lập cảnh báo PrometheusPhần tiếp theo: Cách tạo Telegram Bot và get chat ID »»
0 0 votes
Article Rating
Nhấn vào đây để đánh giá bài này!
[Tổng: 0 - Trung bình: 0]

If you appreciate what we share in this blog, you can support us by:
  1. Stay connected to: Facebook | Twitter | Google Plus | YouTube
  2. Subscribe email to recieve new posts from us: Sign up now.
  3. Start your own blog with SSD VPS - Free Let's Encrypt SSL ($2.5/month).
  4. Become a Supporter - Make a contribution via PayPal.
  5. Support us by purchasing Ribbon Lite Child theme being using on this website.

We are thankful for your support.

«« »»
Theo dõi
Thông báo về
guest
1 Comment
cũ nhất
mới nhất được bình chọn nhiều nhất
Inline Feedbacks
View all comments
sakurai
19/11/2020 16:40

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