logbrew login.
Vấn đề và lần xảy ra
Danh sách vấn đề trả về bản tóm tắt của nhóm, không phải sự kiện đầy đủ. Đọc các trường sau trước khi mở chi tiết:
Số lần xảy ra không phải là số người dùng bị ảnh hưởng. Số lượng và thời điểm áp
dụng cho phạm vi được trả về, không phải cho toàn bộ lịch sử lỗi. Bộ lọc
--since hoặc --until giới hạn các lần xảy ra mà LogBrew đếm. Khi báo cáo một
con số, nêu kèm các bộ lọc đã tạo ra con số đó.
Giá trị trạng thái
archived trước đây gọi là ignored. Hai tên này chọn cùng các vấn đề, và cả
hai đều được chấp nhận làm đầu vào. logbrew read, logbrew issues và API
phiên bản 2 và 3 hiển thị archived. API phiên bản 1 (mặc định), luồng theo dõi
trực tiếp và phản hồi điều tra vấn đề hiển thị ignored. Bảng điều khiển hiển thị các trạng
thái là Chưa giải quyết, Đã giải quyết và Đã lưu trữ.
Trạng thái áp dụng cho cả vấn đề, không phải cho từng lần xảy ra. Mức độ nghiêm trọng
cho biết mức khẩn cấp, còn trạng thái ghi lại quyết định. Giữ hai khái niệm này
tách biệt. Một vấn đề critical có thể chuyển sang resolved sau khi bản sửa
được xác minh. Vấn đề archived vẫn giữ mức độ nghiêm trọng đã ghi nhận.
LogBrew không tự động mở lại vấn đề đã giải quyết. Khi có lần xảy ra mới sau khi
giải quyết, kết quả điều tra báo lifecycle.effective_status là regressed.
status vẫn là resolved cho đến khi có người mở lại vấn đề.
Mức ưu tiên
Mức ưu tiên quyết định thứ tự nhóm triage các vấn đề:
Mỗi vấn đề có một mức ưu tiên. Nếu không ai đặt, mức ưu tiên đi theo mức độ
nghiêm trọng của vấn đề:
error và critical là high, warning là medium,
và info là low. Khi một quy tắc vấn đề đổi mức độ nghiêm trọng, mức ưu tiên
đi theo triage.effective_severity. Khi đó priority_source là derived. Khi
một người đặt mức ưu tiên, giá trị đó được giữ cố định và priority_source là
manual.
Để liệt kê các vấn đề cần xem trước:
Giao vấn đề
Giao vấn đề để cho biết ai phụ trách bước tiếp theo. Mỗi vấn đề có 0 hoặc 1 người phụ trách: một tài khoản hoặc một nhóm.1
Tìm người có thể được giao
assignees gồm mọi tài khoản có quyền đọc dự án, với user_id, name và
email. teams gồm mọi nhóm thuộc tổ chức của dự án, với team_id,
slug và name. Bạn không thể giao cho tài khoản không có quyền đọc dự
án, hoặc cho nhóm thuộc tổ chức khác.2
Giao vấn đề
me thay cho user ID để giao vấn đề cho chính bạn. Dùng
logbrew issues unassign "<issue_id>" --json để bỏ giao. Thêm --project
để thay đổi tối đa 100 vấn đề của một dự án.3
Đọc các vấn đề của bạn
--assignee my_teams để xem các vấn đề của những nhóm bạn tham gia,
--assignee "team:<team_id>" để xem một nhóm, và --assignee none để
tìm các vấn đề chưa ai phụ trách.--assignee none. Nếu thành viên đó được cấp lại quyền, các vấn đề
sẽ hiển thị lại thành viên đó, trừ khi trong thời gian đó có người đã đổi hoặc
bỏ giao.
Tìm chủ sở hữu của vấn đề
suggested_assignee. Mỗi chủ sở hữu có một source:
inputs đếm các đường dẫn khung ngăn xếp, module, mẫu route, tag và quy tắc mà
LogBrew đã kiểm tra. Nếu danh sách trống và inputs không có đường dẫn nào, vấn
đề chưa có bằng chứng để so khớp. Điều đó không có nghĩa là vấn đề không có chủ
sở hữu.
Viết quy tắc sở hữu trong một tệp văn bản, mỗi dòng một quy tắc:
path khớp với phần cuối của đường dẫn khung ngăn xếp, nên
src/payments/** khớp với các khung nằm dưới bất kỳ thư mục triển khai nào. *
khớp với mọi đoạn văn bản. Chủ sở hữu là email của tài khoản hoặc #team-slug.
Quy tắc khớp nằm sau cùng được xếp trước. Sau đó gửi các quy tắc, một tệp
CODEOWNERS của GitHub, hoặc cả hai:
@org/team-slug chỉ nhóm có slug
đó. Quy tắc nêu một tài khoản không có quyền truy cập dự án hoặc một nhóm không
tồn tại sẽ thất bại với 422. Chủ sở hữu trong CODEOWNERS không khớp với ai sẽ
nằm trong unresolved_owners. Gửi tệp trống để xóa nội dung đã lưu của tệp đó.
Đọc lịch sử vấn đề
first_seen. Tài khoản đã mất quyền truy cập dự án chỉ còn hiển thị ID.
Dùng --limit và các giá trị next_cursor để đọc thêm.
Đọc hộp thư đến
unread đếm các lượt giao sau mốc đã đọc của bạn.
logbrew inbox read dời mốc đã đọc đến thời điểm hiện tại. LogBrew không gửi
email cho các lượt giao này. Hộp thư đến chỉ hiển thị các dự án mà bạn đang có
quyền đọc.
Quy trình đề xuất
1
Liệt kê vấn đề chưa giải quyết trong một phạm vi
2
Đọc chi tiết vấn đề
3
Điều tra một lần xảy ra
subject.project_id, event.occurred_at, bản phát hành và môi trường với
phạm vi của bạn. Lần xảy ra được đề xuất có thể cũ hơn lần mới nhất. Làm
theo Điều tra một vấn đề để xem xét đầy
đủ bằng chứng.4
Chỉ theo bằng chứng trace khi khả dụng
Chỉ đọc trace khi Lần đọc trace không có bộ lọc thời gian. Nếu trạng thái là
correlations.trace.status là available. Dùng trace ID
trong phản hồi. Không bao giờ tự đặt ra trace ID.not_linked,
tiếp tục với bằng chứng từ vấn đề.5
Xác minh lần triển khai ứng viên
Dùng lần xảy ra đã điều tra làm mốc. Lấy ID lần triển khai từ bằng chứng
triển khai hoặc từ quy trình phát hành của bạn.Không thấy tái diễn trong khoảng thời gian quan sát không chứng minh rằng
lỗi đã được sửa vĩnh viễn. Nếu
status là insufficient_traffic hoặc
unavailable, giữ vấn đề ở unresolved. Làm theo bước tiếp theo được trả
về.6
Đổi trạng thái, mức ưu tiên hoặc người phụ trách
Chạy một lệnh. Các lệnh này không hỏi xác nhận, nên kiểm tra ID vấn đề
trước.Khi không có
--project, mỗi lệnh nhận 1 ID vấn đề. Kiểm tra mã thoát và
các giá trị status, priority và assignee được trả về. Nếu không có
kết quả, đọc lại vấn đề trước lần thay đổi tiếp theo.Các script cũ có thể dùng logbrew set issue "<issue_id>" resolved và các
lệnh tắt resolve, ignore và reopen. ignore đặt trạng thái
archived.Thay đổi nhiều vấn đề cùng lúc
Thêm--project để thay đổi tối đa 100 vấn đề của một dự án trong một lệnh:
Mỗi mục có
issue_id, outcome và issue. issue là vấn đề ở trạng thái hiện
tại, hoặc null với not_found. Bạn có thể chạy lại cùng lệnh sau khi gặp lỗi
mạng. Các vấn đề đã thay đổi sẽ hiển thị unchanged. Với hơn 100 vấn đề, chạy
thêm lệnh. Với kết quả not_found, chép lại ID từ danh sách vấn đề của dự án
đó. Xem
Cập nhật hàng loạt vấn đề để
biết yêu cầu API.
Chọn trạng thái tiếp theo
- Giữ
unresolvedkhi lỗi vẫn đang xảy ra hoặc bản sửa chưa được xác minh. Thiếu trace không phải là lý do để lưu trữ vấn đề. - Đặt
resolvedsau khi nhóm chấp nhận bằng chứng của bản sửa. Bản sửa đề xuất không phải là bằng chứng. - Đặt
archivedcho một tình trạng đã được chấp nhận hoặc một tín hiệu chỉ dùng để thử nghiệm. Quyết định này áp dụng cho mọi lần xảy ra của vấn đề. Lệnh không có trường lý do, nên ghi lý do vào hồ sơ công việc của nhóm. - Mở lại bằng
unresolvedkhi có lần xảy ra mới sau khi đã giải quyết.lifecycle.regression.first_reappeared_occurrencexác định lần xảy ra đó. So sánh nó với lần xảy ra đã dùng khi giải quyết. Không tạo một vấn đề khác.
Bàn giao kết quả điều tra
Đưa cho người tiếp theo các tham chiếu, không đưa toàn bộ sự kiện thô:- ID vấn đề, trạng thái, mức ưu tiên, người phụ trách và mức độ nghiêm trọng.
- Dự án, dịch vụ, môi trường và bản phát hành.
- Thời điểm lần đầu xuất hiện, thời điểm lần cuối xuất hiện và số lần xảy ra.
- ID lần xảy ra đã chọn và
occurrence_selection.reason. fix.status,cause.statusvàprovenancecủa chúng.- Trạng thái trace và trace ID, nếu có.
- Trạng thái tái hiện và bằng chứng còn thiếu.
- Kết quả xác minh lần triển khai ứng viên.
- Bước tiếp theo mà phản hồi trả về.
Xử lý lỗi CLI
Kiểm tra mã thoát của tiến trình trước khi phân tích kết quả. Khi thành công, JSON được ghi ra standard output. Lỗi phân tích cú pháp thoát với mã2. Lỗi khi
chạy thoát với mã 1. Lỗi JSON được ghi ra standard error và chứa ok: false,
error, message và next. Hiển thị next như một gợi ý. Không tự động chạy
nó.
Ví dụ, logbrew issues archive "<issue_id_1>" "<issue_id_2>" --json thiếu
--project. Lệnh thoát với mã 2 trước khi gửi yêu cầu, kèm lỗi
invalid_issue_command.
Khi API từ chối yêu cầu, error là api_error. Đọc status để biết mã trạng
thái HTTP và api_code để biết mã lỗi API.
Phản hồi thất bại không chứng minh rằng thay đổi trạng thái, mức ưu tiên hoặc
người phụ trách không có tác dụng. Đọc lại vấn đề trước khi thử lại.
Thế nào là một vấn đề hữu ích
- Tiêu đề rõ ràng và thông điệp dễ đọc.
- Fingerprint ổn định.
- Khung ngăn xếp (stack frame), khi có.
- Ngữ cảnh bản phát hành, môi trường và dịch vụ.
- Ngữ cảnh trace, khi được ghi nhận cùng lần xảy ra.
- Các thuộc tính nhỏ, liên quan, không phải toàn bộ payload.
