Tracking error real time với Sentry
Phần 2 — Install Sentry với Docker
Updated: 22/6/2021
Tại sao phải tự cài Sentry ý hả? Vì mặc dù Sentry.io có cung cấp dịch vụ cloud nhưng gói free chỉ có 5k event 1 tháng. Và với cái dự án mà không có nhiều ngân sách + code lởm khởm bắn exception như lá rụng mùa thu này thì chỉ có cách là tự cài Sentry mà dùng thôi 😭.
Requirements
- Docker 19.03.6+
- Compose 1.24.1+
- 4 CPU Cores
- 8 GB RAM
- 20 GB Free Disk Space
Install
Đầu tiên là clone cái repo này về: https://github.com/getsentry/onpremise
(ở thời điểm viết bài này là 21.5.1). Trong này mình sẽ cần chú ý 2 file thôi:
sentry/config.yml
: dùng để config mail, slack.install.sh
: dùng để cài đặt sentry
Config mail
Sentry có 1 cái hơi dở là không cho admin tạo account. Thế nên để mọi người trong team có tài khoản riêng thì mình phải config mail cho Sentry, dùng để gửi mail invite về cho member. Trong cái file config.yml, tìm đến đoạn Mail Server, điền các thông tin sau:
1
2
3
4
5
6
7
8
9
10
11
12
###############
# Mail Server #
###############
mail.backend: 'smtp' # Use dummy if you want to disable email entirely
mail.host: '<YOUR_MAIL_HOST>'
mail.port: <YOUR_MAIL_PORT>
mail.username: '<YOUR_MAIL_ADDRESS>'
mail.password: '<YOUR_MAIL_PASSWORD>'
# mail.use-tls: false
# The email address to send on behalf of
mail.from: 'sentry@yourdomai.com'
Install and Run
1
2
$ sh ./install.sh
$ docker-compose up -d
Sau bước này thì chúng ta đã có thể truy cập Sentry ở địa chỉ
Create member account
Để invite member vào sentry, vào Setting
> Team
> Add Member
> Invite Members
. Điển mail, role và team rồi bấm send là được
Vậy nếu đã config mail ở trên và làm theo các thao tác ở trên mà member trong team vẫn không nhận được mail thì sao? Nghe vô lý nhưng mình đã bị như vậy thật đấy 🤣. Sau 1 hồi (khá lâu) ngồi mò thì phát hiện ra sentry có support tạo account qua cli.
Vào container docker chạy sentry nhé
1
$ docker exec -it <CONTAINER_NAME> bash
Tạo account:
1
$ sentry createuser
Điền mail với password là xong nhé.
OK cài xong nhé 😘. Cài xong thì làm gì? Thì tích hợp vào code thôi. Let’s go.