Ghi log dung cach de debug production nhanh

Production bao loi luc 2 gio sang. Ban mo log ra va thay hang nghin dong vo nghia, hoac tram trong khong co gi. Ca hai deu khien ban debug hang gio. Bai nay chi cach ghi log de khi su co xay ra, ban tim ra nguyen nhan trong vai phut. Trong tam: chon level dung, log co cau truc, va lan vet mot request xuyen suot he thong.

Log de lam gi

Log khong phai de “cho chac”. No phuc vu ba muc dich cu the: tai hien lai chuoi su kien dan den loi, canh bao truoc khi he thong sap gay, va do luong hanh vi that su cua nguoi dung. Moi dong log khong phuc vu mot trong ba muc dich do chi la rac lam nhieu tin hieu.

Chon dung log level

Level bi dung sai la nguyen nhan pho bien khien log vo dung. Quy uoc thuc te:

Level Khi nao dung
ERROR Mot viec dang le phai thanh cong da that bai va can nguoi xu ly. Vi du: khong ghi duoc don hang vao DB.
WARN Bat thuong nhung he thong tu xu ly duoc. Vi du: retry lan 2 thanh cong, cache miss cao bat thuong.
INFO Su kien nghiep vu quan trong: user dang ky, thanh toan thanh cong. It, co chon loc.
DEBUG Chi tiet ky thuat de dieu tra, thuong tat o production.

Loi kinh dien: log ERROR cho moi ngoai le, ke ca cai da bat va xu ly binh thuong. Ket qua la dashboard ngap ERROR gia, va ERROR that bi chim.

Log co cau truc, khong phai cau van xuoi

So sanh hai cach ghi cung mot su kien. Cach cu: User 12345 khong thanh toan duoc don 987 vi the het han. Cach co cau truc: mot ban ghi JSON voi cac truong event=payment_failed, user_id=12345, order_id=987, reason=card_expired.

Su khac biet: log co cau truc cho phep ban truy van. Ban loc tat ca payment_failed co reason=card_expired trong 1 gio qua bang mot cau query, thay vi grep chuoi van ban va doan. Voi he thong that, day la khac biet giua vai phut va vai gio.

Correlation ID: soi day xuyen suot request

Trong he thong nhieu service, mot request cua nguoi dung di qua API gateway, service don hang, service thanh toan. Neu moi service log rieng, ban khong the noi cac dong lai voi nhau.

Giai phap: sinh mot correlation ID (hoac trace ID) o diem vao dau tien, truyen no qua moi service, va gan vao moi dong log. Khi debug, ban loc theo mot ID va thay toan bo hanh trinh cua dung request do, theo dung thu tu, xuyen qua moi service.

Vi du thuc te

Khach bao “toi bam mua nhung bao loi”. Khong co correlation ID, ban phai doan khach la ai, thoi diem nao, roi grep mo mam qua log cua tung service.

Co correlation ID, ban xin ma loi hien tren man hinh (chinh la trace ID), dan vao he thong log, va thay ngay: gateway nhan request luc 14:03:01, service don hang tao don OK, service thanh toan goi cong ben ngoai va bi timeout sau 5s. Nguyen nhan goc lo ro trong 30 giay.

Loi thuong gap va cach sua

Log thong tin nhay cam

Mat khau, so the, token khong bao gio duoc ghi vao log. Che (mask) o tang ghi log. Day khong chi la ky thuat ma con la nghia vu bao ve du lieu.

Log trong vong lap nong

Mot dong log trong vong lap chay trieu lan se lam ngap dia va lam cham he thong. Log ket qua tong hop, khong log tung buoc lap.

Nuot ngoai le roi log chung chung

catch (e) { log("co loi") } vut mat stack trace va ngu canh. Luon log kem doi tuong loi day du.

Chi log khi that bai

Khong co log duong thanh cong thi ban khong biet dau la “binh thuong” de so sanh khi co su co. Log cot moc quan trong ca luc thanh cong (o muc INFO, chon loc).

Checklist ghi log

  • Moi dong log phuc vu tai hien su co, canh bao, hoac do luong — neu khong, bo.
  • Level dung: ERROR chi cho viec that su can nguoi xu ly.
  • Log co cau truc (key-value/JSON), khong nhet du lieu vao cau van.
  • Co correlation ID xuyen suot cac service.
  • Khong log mat khau, token, so the — da mask o tang ghi log.
  • Khong log trong vong lap nong.
  • Log kem stack trace day du khi bat ngoai le.

Ket luan

Log tot la khoan dau tu tra lai vao dung luc ban can nhat: giua dem, khi production dang chay. Buoc tiep theo: mo mot loi ERROR gan nhat trong he thong cua ban va tu hoi — chi voi dong log nay, minh co du hieu chuyen gi da xay ra khong? Neu khong, do la cho can bo sung ngu canh.

Cau hoi thuong gap

Nen luu log bao lau?

Tuy nhu cau va chi phi. Nguyen tac thuc te: log chi tiet giu ngan (vai tuan) de debug, log nghiep vu tong hop giu lau hon. Luu y cac rang buoc phap ly ve du lieu ca nhan neu log co chua.

Log nhieu co lam cham ung dung khong?

Co, neu ghi dong bo va qua nhieu. Giai phap: ghi log bat dong bo (async), gioi han DEBUG o production, va tranh log trong duong nong.

Log vao file hay gui len he thong tap trung?

Voi mot may thi file la du. Voi nhieu service/nhieu may, ban can he thong log tap trung de truy van xuyen suot — neu khong, correlation ID mat phan lon gia tri.

Khac nhau giua log, metric va tracing?

Log ghi su kien roi rac. Metric la con so tong hop theo thoi gian (vi du so request/giay). Tracing lan vet mot request qua nhieu service. Ba thu bo tro nhau; log la diem khoi dau thuong dung nhat.

Tham khao

  • OpenTelemetry — chuan mo cho tracing, metric va log (opentelemetry.io).
  • Tai lieu framework logging ban dang dung (vi du Serilog cho .NET, SLF4J/Logback cho Java, structlog cho Python).

Similar Posts