Tạo app Slack để track error
slack
2
webhook
2
logging
7
White

minhphong306 viết ngày 23/09/2018

Tham gia kipalog đã lâu nhưng đây là lần đầu em viết bài trên này. Có gì sai sót mong được các bác chỉ giáo :D

Vừa rồi thấy ông anh trong công ty làm 1 con app để log lỗi về Slack. Trông cũng trực quan và thú vị hơn đọc mail. Tranh thủ tớ tạt qua la liếm và về viết 1 bài.

Cơ chế hoạt động

Cơ chế khá đơn giản: Slack cho ta tạo app trong workspace. Từ app này tạo ra 1 đường dẫn webhook tới 1 channel. Khi bắn 1 post request theo định dạng của Slack yêu cầu thì Slack sẽ gửi tin nhắn đến cho channel ấy

alt text

Thực hiện

Tạo slack app

Đầu tiên, ta cần tạo slack app. Truy cập vào trang chủ Slack API: https://api.slack.com/, click vào Start building. Một hộp thoại hiện ra như hình dưới.

alt text

Bạn điền tên app mà bạn muốn tạo + chọn workspace cho app rồi bấm submit.

Màn hình tiếp theo này Slack liệt kê ra khá nhiều tính năng. Ở phạm vi bài này, chúng ta chỉ tạo 1 con bot để log error đơn giản. Do vậy chỉ dùng tới tính năng Incoming webhook. Bạn click vào Incoming webhook
alt text

Bạn sẽ được chuyển tới màn hình bên dưới. Gạt thanh trạng thái để bật active incoming webhook.
alt text

Kéo xuống dưới, click vào Add new webhook to workspace. Bạn được chuyển tới trang Authorize. Tại đây, chọn channel mà bạn muốn nhắn tin tới sau đó click authorize
alt text

Lúc này Slack sẽ generate ra cho bạn 1 URL webhook để bạn có thể gửi message.
alt text

Thử sử dụng postman để test:
alt text

Về cơ bản thì tới đây bạn đã có thể tạo cho mình 1 con app đơn giản để log error. Lúc nào gặp lỗi thì tạo 1 POST request bắn vào cái URL kia message lỗi (lỗi do thằng nào, dòng bao nhiêu, chi tiết tin nhắn lỗi là gì,... blah... blah) rất trực quan. Đỡ phải đọc đống log trong cmd muốn lòi con mắt :facepalm:
Tuy nhiên thì bạn có thể tham khảo thêm phần định dạng tin nhắn và mention phía dưới để việc log error fun hơn nữa :))

Định dạng tin nhắn

Để tin nhắn trông sinh động, dễ nhìn hơn thì bạn có thể sử dụng format tin nhắn trong slack. Tớ hay sử dụng định dạng tin nhắn như này để log lỗi:

{
    "attachments": [
        {
            "fallback": "Required plain-text summary of the attachment.",
            "color": "#36a64f",
            "pretext": "Error when get sexy girl from API",
            "author_name": "From: minhphong306 API",
            "author_link": "http://flickr.com/bobby/",
            "author_icon": "http://static.minhphong306.com/images/daicaphong/me.jpg",
            "title": "Open error detail",
            "title_link": "https://api.slack.com/",
            "text": "See error detail",
            "fields": [
                {
                    "title": "Priority",
                    "value": "High",
                    "short": false
                }
            ],
            "image_url": "http://my-website.com/path/to/image.jpg",
            "thumb_url": "http://example.com/path/to/thumb.png",
            "footer": "Slack API",
            "footer_icon": "https://platform.slack-edge.com/img/default_application_icon.png",
            "ts": 1537641882
        }
    ]
}

Tin nhắn của bạn trông như này
alt text

Bạn có thể đọc thêm ở đây để custom thêm các định dạng khác thú vị và phù hợp hơn:

https://api.slack.com/docs/message-formatting

Mention trong slack

Thi thoảng, để tập trung làm việc thì tớ chỉ bật thông báo đối với các tin nhắn có mention. Thế nên thi thoảng tớ bị miss một số lỗi fatal :( . Để khắc phục tình trạng này thì ta sử dụng chức năng mention thông qua user id với các lỗi fatal.

Để lấy ID của 1 người, đầu tiên click vào View Profile -> More Action -> Coppy MemberID để lấy ID

alt text

Để tự lấy ID của chính bạn thì tớ đếch biết lấy thế nào nữa, nên cách dễ nhất là nhờ thằng khác coppy cái ID của bạn rồi gửi lại cho bạn cho nó nhanh :v

Thêm mention ID của người này vào trong slack ta sử dụng <@user_id>.
Như vậy với ID là UC0CE05JP thì message của tớ trông như này

{
    "attachments": [
        {
            "fallback": "Required plain-text summary of the attachment.",
            "color": "#36a64f",
            "pretext": "Đại ca <@UC0CE05JP> ơi, có phốt rồi :facepalm:",
            "author_name": "From: minhphong306 API",
            "author_link": "http://flickr.com/bobby/",
            "author_icon": "http://static.minhphong306.com/images/daicaphong/me.jpg",
            "title": "Open error detail",
            "title_link": "https://api.slack.com/",
            "text": "See error detail",
            "fields": [
                {
                    "title": "Priority",
                    "value": "High",
                    "short": false
                }
            ],
            "image_url": "http://my-website.com/path/to/image.jpg",
            "thumb_url": "http://example.com/path/to/thumb.png",
            "footer": "Slack API",
            "footer_icon": "https://platform.slack-edge.com/img/default_application_icon.png",
            "ts": 1537641882
        }
    ]
}

Và kết quả trông như này:
alt text

Good luck ^^

Nguồn bài viết từ blog của tớ: https://minhphong306.wordpress.com/2018/09/22/huong-dan-su-dung-slack-de-log-error/

minhphong306 23-09-2018

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

minhphong306

3 bài viết.
6 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
6 6
Thi thoảng muốn mở 1 trang đã bookmark ở tab mới thì tớ phải làm 2 thao tác: click phải chuột open in new tab. Thi thoảng click nhầm lại phải back...
minhphong306 viết 11 tháng trước
6 6
White
2 1
Tình cờ có 1 task động tới thay thế bằng regex, thấy hay ho xịn xò nên em note lại vài dòng. Hi vọng sẽ có ích cho các bác TL;DR Sử dụng regex để...
minhphong306 viết 11 tháng trước
2 1
Bài viết liên quan
White
24 0
(Ảnh) Slow query là gì? Khi các câu query chậm hơn một thời gian nhất định tùy theo bạn định nghĩa, ví dụ chậm hơn 50ms, thì các câu query đó đư...
Triet Pham viết 2 năm trước
24 0
White
36 21
Bối cảnh Một trong những vấn đề công ty mình gặp phải đó là việc theo dõi thời gian đi làm và ra về của các nhân viên trong công ty. Bởi vì văn p...
Le Van Hoang viết 4 năm trước
36 21
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
3 bài viết.
6 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!