🏷️ Tag chi phí và budget alert: kiểm soát trước khi hoá đơn về

By Better Wise

Kiểm soát bắt đầu từ trước khi hoá đơn xuất hiện

Ở module trước bạn đã học đọc hoá đơn: bóc line item, nhìn usage, phát hiện phí bất thường và right-sizing để cắt phần đã tiêu. Nhưng hoá đơn luôn về sau, thường 30 ngày, khi tiền đã bị trừ khỏi thẻ. Bài này là phần ngược lại: gắn tag để biết tiền chảy vào đâu, và đặt budget alert để biết trước khi vượt ngưỡng.

Sau bài này bạn sẽ:

  • Đặt được bộ tag tối thiểu cho một project nhỏ, không sa vào 12 cái tag rồi bỏ dở.
  • Viết được quy ước giá trị tag để báo cáo không bị tách dòng.
  • Cấu hình được budget alert nhiều tầng, có cả ngưỡng theo forecast.
  • Nhận ra nhóm chi phí untagged và biết khi nào nó đáng lo.

Tag chi phí: biến một con số thành danh sách có tên

Hoá đơn $640 không tag chỉ nói với bạn: Compute $380, Storage $120, Data transfer $140. Bạn không biết $380 compute đó là prod hay ba môi trường dev đã bị bỏ quên từ tháng trước. Tag không làm giảm tiền. Tag làm cho việc giảm tiền trở nên khả thi.

Một điểm beginner hay sốc: tag không áp dụng hồi tố. Tài nguyên tạo từ tháng 1, bạn gắn tag tháng 3, thì báo cáo tháng 2 vẫn không có tag đó. Trên AWS, sau khi gắn bạn còn phải kích hoạt cost allocation tags và chờ thường trong vòng 24 giờ tag mới xuất hiện trong báo cáo. GCP gọi là labels, Azure gọi là tags, nguyên tắc giống nhau: gắn càng sớm càng tốt.

Bộ tag tối thiểu cho một project nhỏ

Tag Ví dụ giá trị Trả lời câu hỏi
project meo-app Tiền của sản phẩm nào?
env prod, staging, dev Môi trường nào?
owner [email protected] Ai chịu trách nhiệm?
component web, worker, db Phần nào của hệ thống? (tuỳ chọn)

Bắt đầu bằng ba tag đầu. component chỉ thêm khi bạn đã gắn tag đều tay, vì mỗi tag thêm vào là một tag có thể bị bỏ sót. Bộ tag tối thiểu là ba tag: _____.

Quy ước giá trị tag quan trọng hơn số lượng tag

Báo cáo chi phí group by so khớp chuỗi ký tự. Vì thế Prod, prod và production sẽ thành ba dòng riêng, và phép cộng của bạn sai. Quy ước nên là: chữ thường, không dấu, không khoảng trắng, dùng gạch nối, và chỉ chọn trong một danh sách đóng.

Ví dụ xấu: env=Prod, env=prod , env=production, env=Production-EU. Ví dụ tốt: env=prod, env=staging, env=dev.

Với owner, dùng email hoặc tên team, đừng dùng tên riêng kiểu An. Sáu tháng sau bạn cần biết ping ai.

Budget alert: nhiều tầng, có forecast, gửi đúng chỗ

Cấu hình một ngưỡng 100% là cấu hình để biết tin xấu muộn. Cách đặt an toàn:

  • Theo tag hoặc theo project, không theo account. Alert theo account quá thô vì một account gộp nhiều project.
  • Nhiều tầng: 50% để nhắc, 80% để hành động, 100% để dừng lại, và một trần cứng khoảng 120% để gọi người.
  • Có alert theo forecast. Ngưỡng dựa trên dự báo cuối kỳ báo bạn trước nhiều ngày; ngưỡng actual chỉ báo sau khi tiền đã tiêu.
  • Gửi vào kênh chung (Slack, email nhóm) chứ không chỉ một người, để alert không chết khi người đó nghỉ phép.
  • Ngưỡng phải dựa trên baseline của chính project, lấy trung bình 2 đến 3 tháng gần nhất, không dựa vào cảm giác.

Một alert theo ngưỡng dự báo giúp bạn biết trước khi tiền bị tiêu, đó là lý do nên đặt song song với alert theo _____.

Ví dụ làm việc: đặt ngân sách cho project meo-app

Baseline tháng trước: prod $140, staging $30, dev $10, tổng $180. Bạn đặt tổng $200 và ba ngân sách con theo env:

project: meo-app
period: monthly
total_budget: 200 USD

sub_budgets:
  - tag: env=prod     budget: 150 USD
  - tag: env=staging  budget: 40 USD
  - tag: env=dev      budget: 20 USD

alerts:
  - name: meo-50
    type: actual
    threshold: 50%        # 100 USD
    channels: [slack#cost-alerts]
  - name: meo-80
    type: actual
    threshold: 80%        # 160 USD
    channels: [slack#cost-alerts, email owner]
  - name: meo-forecast-100
    type: forecast
    threshold: 100%       # dự báo vượt 200 USD
    channels: [email owner, email lead]
  - name: meo-120
    type: actual
    threshold: 120%       # 240 USD
    channels: [pager, email lead]

Chuyện xảy ra: ngày 12 chạm $100, kênh Slack nhận tin, chưa ai làm gì. Ngày 19 chạm $160, owner mở báo cáo group by env, thấy staging đã $38 trong khi prod phẳng. Nguyên nhân là một load test để quên chạy ba ngày. Tắt trong 5 phút. Tổng thiệt hại khoảng $20 thay vì $150.

Điểm mấu chốt: nhờ tag env mà tìm ra trong 5 phút. Không có tag, bạn phải mở từng line item của cả tháng.

Nhóm untagged: chỗ khoản phí bỏ sót hay trốn

Luôn tạo một view hoặc nhóm riêng cho chi phí không khớp tag nào. Quy tắc kinh nghiệm: untagged vượt khoảng 10% hoá đơn là có vấn đề, thường là tài nguyên tạo tay hoặc tag drift (deploy mới không mang tag). Có bạn từng tìm ra một NAT gateway $45 mỗi tháng chỉ vì nó nằm trong nhóm untagged. Mọi tài nguyên thiếu tag nên được gom vào nhóm _____ và kiểm tra định kỳ.

Chặn từ đầu thay vì dọn sau

Bật tag policy bắt buộc tag khi tạo tài nguyên, và khai báo default tags trong IaC (ví dụ default_tags của Terraform). Như vậy tài nguyên mới sinh ra đã có tag, bạn không phải đi vá. Với AWS, nhớ kích hoạt cost allocation tags, nếu không tag có gắn mà báo cáo vẫn trống. Việc kích hoạt này có thể mất tới _____ trước khi tag xuất hiện trong báo cáo.

Mẹo và lỗi hay gặp khi gắn tag, đặt ngưỡng

  • Đừng đặt 12 tag ngay. Ba tag gắn đều trong ba tháng tốt hơn mười hai tag bỏ dở trong ba tuần.
  • Đừng đặt alert bằng một ngưỡng duy nhất. Một ngưỡng 100% gần như luôn đến sau khi tiền đã đi.
  • Đừng gửi alert cho một cá nhân. Gửi vào kênh chung, kèm tên owner trong nội dung.
  • Đừng quên alert không tự tắt tài nguyên. Nó chỉ là chuông. Phải có quy tắc: ai nhận, xem gì trong 24 giờ, tắt gì.
  • Đừng bỏ qua ngân sách con theo env. Staging tăng vọt trong khi prod phẳng là tín hiệu sớm rất rẻ để bắt.
  • Quy tắc kinh nghiệm: ngân sách = baseline trung bình 3 tháng × 1.15, và ngưỡng cảnh báo đầu tiên ở 50% ngân sách đó.

Chốt lại và bước tiếp theo

  • Tag tối thiểu: project, env, owner, viết thường, không dấu, danh sách đóng.
  • Tag không hồi tố, nên gắn từ đầu bằng tag policy và default tags trong IaC.
  • Budget alert nên có nhiều tầng (50/80/100/120%), có ngưỡng forecast, và đi vào kênh chung.
  • Gom chi phí untagged vào một nhóm và theo dõi tỉ lệ của nó trên tổng hoá đơn.

Bài sau mở rộng sang một loại chi phí mới rất dễ mất kiểm soát: chi phí token khi gọi AI API. Bộ tag project và component bạn vừa đặt sẽ là thứ giúp tách phần chi phí đó ra khỏi compute.

Front: Tag chi phí có áp dụng hồi tố cho tài nguyên tạo trước đó không? Back: Không. Tag chỉ xuất hiện trong báo cáo từ thời điểm kích hoạt, và có thể mất tới 24 giờ mới thấy.

Front: Bộ tag tối thiểu cho một project nhỏ gồm những tag nào? Back: project, env, owner. Thêm component hoặc cost-center chỉ khi đã gắn đều tay.

Front: Vì sao giá trị tag phải viết thường, không dấu, không khoảng trắng? Back: Báo cáo group by so khớp chuỗi, nên Prod và prod thành hai dòng riêng và làm sai phép cộng.

Front: Budget alert có tự tắt tài nguyên khi vượt ngân sách không? Back: Không. Alert chỉ thông báo, cần quy tắc và người trực để xử lý.

Front: Vì sao nên có alert theo forecast bên cạnh alert theo actual? Back: Forecast báo trước khi tiền đã tiêu hết, actual chỉ báo sau khi đã vượt ngưỡng.

Front: Bốn tầng ngưỡng cảnh báo thường dùng là gì? Back: 50 phần trăm để nhắc, 80 phần trăm để hành động, 100 phần trăm để dừng lại, 120 phần trăm làm trần cứng.

Front: Nên gắn budget alert theo account hay theo tag? Back: Theo tag hoặc theo project, vì một account thường gộp nhiều project nên alert theo account quá thô.

Front: Ngân sách con theo env dùng để làm gì? Back: Bắt môi trường lệch chuẩn, ví dụ staging tăng vọt trong khi prod phẳng.

Front: Nhóm untagged là gì và ngưỡng đáng lo? Back: Phần chi phí không khớp tag nào; vượt khoảng 10 phần trăm hoá đơn là có tài nguyên bị bỏ quên.

Front: Tag drift là gì? Back: Tài nguyên mới được tạo mà thiếu tag, thường do deploy tay hoặc IaC không có default tags.

Front: Cách chặn thiếu tag ngay từ đầu? Back: Bật tag policy bắt buộc tag khi tạo tài nguyên và khai báo default_tags trong IaC.

Front: Vì sao gửi alert vào kênh chung thay vì một cá nhân? Back: Tránh alert chết khi người đó nghỉ phép hoặc rời công ty.

Front: Lấy gì làm baseline để đặt ngân sách? Back: Chi phí trung bình 2 đến 3 tháng gần nhất của chính project, nhân khoảng 1.15.