Nhảy đến nội dung

Nhật ký

Mô-đun «Nhật ký» trong Platform OneEntry cho phép các quản trị viên theo dõi cả hành động của các quản trị viên khác trong hệ thống cũng như hoạt động của API nội dung công khai. Mô-đun bao gồm bốn tab:

TabHiển thị thông tin
Nhật ký hành động của quản trị viênTất cả các hành động của các quản trị viên trong hệ thống: tạo, sửa đổi, xóa thực thể.
Lưu lượng truy cập của quản trị viênPhiên đăng nhập của các quản trị viên: khi nào họ đăng nhập, khi nào họ đăng xuất, từ thiết bị nào.
Thống kê API nội dungBộ đếm các cuộc gọi đến tất cả các điểm cuối công khai của trang web trong các khoảng thời gian khác nhau.
Lỗi API nội dungTất cả các phản hồi 4xx/5xx từ API công khai với chi tiết yêu cầu và stack trace.

Trong giao diện của mô-đun, các tab được đặt tên như sau: Nhật ký Quản trị viên, Nhật ký Truy cập vào Ứng dụng Quản trị viên, Thống kê API Nội dung, Lỗi API Nội dung.

Mỗi tab có sẵn dưới một quyền riêng biệt — xem Quyền cho nhật ký.


Nhật ký hành động của quản trị viên

Tab chính, hiển thị tất cả các hành động của các quản trị viên trong hệ thống. Trước đây nó được gọi đơn giản là «Nhật ký hành động của quản trị viên» — giờ đã được đổi tên thành «Nhật ký hành động của quản trị viên» để phân biệt với các tab mới.

Các phần tử giao diện

Tab bao gồm hai khối:

  • Bộ lọc
  • Danh sách hành động

Bộ lọc

Để lọc các hành động, có các trường sau:

  1. Từ — trường nhập văn bản cho ngày bắt đầu lọc hành động.
  2. Đến — trường nhập văn bản cho ngày kết thúc lọc hành động.
Các trường nhập ngày

Ngày có thể được nhập dưới dạng chuỗi theo định dạng ngày của khu vực của bạn, cũng như chọn ngày cần thiết bằng cách sử dụng lịch xuất hiện khi nhấp vào trường nhập ngày.

  1. ID Quản trị viên — trường nhập số cho mã định danh duy nhất của quản trị viên.
  2. Hành động của người dùng — danh sách thả xuống các hành động của người dùng:
    • Tạo
    • Sửa đổi
    • Xóa
  3. Trạng thái — danh sách thả xuống các trạng thái hành động:
    • Thành công
    • Lỗi
  4. Tên mô-đun — danh sách thả xuống các tên mô-đun:
    • Quản trị viên
    • Bộ thuộc tính
    • Sao lưu
    • Quản lý khối
    • Quản lý sự kiện
    • Cài đặt chung
    • Tải lên tệp
    • Trình chỉnh sửa tệp
    • Quản lý biểu mẫu
    • Địa phương hóa
    • Đánh dấu
    • Menu
    • Mô-đun
    • Quản lý nội dung
    • Sản phẩm
    • Quản lý đơn hàng
    • Cài đặt cơ bản
    • Quản lý thanh toán
    • Quản lý trạng thái sản phẩm
    • NGƯỜI DÙNG
    • Quản lý nhà cung cấp xác thực và người dùng
    • Quản lý mẫu
    • Quản lý mẫu xem trước
  5. ID Ghi chú — trường nhập số cho mã định danh duy nhất của ghi chú.

Dưới khối bộ lọc có hai nút:

  • Xóa dữ liệu — xóa các ghi chú nhật ký hành động của quản trị viên trong khoảng thời gian được chỉ định bởi các trường Từ / Đến (xem Xóa nhật ký thủ công).
  • Đặt lại — đặt lại các bộ lọc đã áp dụng.

Danh sách hành động

Danh sách hành động được trình bày dưới dạng bảng gồm sáu cột:

  1. Hành động của người dùng
  2. Trạng thái
  3. Đăng nhập của người dùng
  4. Tên mô-đun
  5. ID Ghi chú
  6. Ngày và giờ
Sắp xếp

Đối với mỗi cột, có thể sắp xếp dữ liệu bằng cách nhấp vào tiêu đề cột. Nhấp lần đầu tiên sẽ sắp xếp theo thứ tự giảm dần, nhấp lần thứ hai sẽ sắp xếp theo thứ tự tăng dần, nhấp lần thứ ba sẽ đặt lại sắp xếp.

Kiểm toán tính khả dụng của khối

Mỗi chuyển đổi tính khả dụng của khối (toggle "hiện/không hiện" trong admin khối) sẽ tự động được ghi lại trong Nhật ký hành động của quản trị viên. Có thể thấy ai là quản trị viên và khi nào đã thay đổi trạng thái của một khối cụ thể.

ℹ️Trước đây thao tác này không được ghi lại

Chuyển đổi tính khả dụng của khối không được ghi lại trong nhật ký — không thể xác định ai và khi nào đã ẩn/hiện khối. Bây giờ điều này đã có, và thao tác được hiển thị trong danh sách chung với loại "Quản lý khối".


Lưu lượng truy cập của quản trị viên (Nhật ký Truy cập Quản trị viên)

Tab «Lưu lượng truy cập của quản trị viên» hiển thị mỗi lần đăng nhập và đăng xuất của quản trị viên trong hệ thống như một ghi chú riêng biệt. Bây giờ có thể ngay lập tức thấy ai và khi nào đã vào admin — mà không cần truy cập vào Grafana/Loki. Hữu ích cho việc kiểm toán (đặc biệt cho các đội lớn với nhiều quản trị viên).

Các trường trong bảng

Bảng bao gồm sáu cột:

CộtÝ nghĩa
Đăng nhậptên đăng nhập của quản trị viên
IPđịa chỉ IP mà quản trị viên đã đăng nhập
Thời gian đăng nhậpngày và giờ đăng nhập
Thời gian đăng xuấtngày và giờ đăng xuất (đối với phiên còn mở — trống)
Thời gianthời gian của phiên (đối với phiên hoạt động — từ đăng nhập đến thời điểm hiện tại)
Lý dolý do đóng phiên: logout (tự nhấn "Đăng xuất") hoặc admin_revoked (quản trị viên khác đã buộc phải kết thúc phiên, chẳng hạn qua logoutAll)
Sắp xếp

Cũng như trong Nhật ký hành động của quản trị viên, bất kỳ cột nào cũng có thể được sắp xếp bằng cách nhấp vào tiêu đề của nó.

ℹ️Hết hạn token và làm mới

Hết hạn token (expired) và tái xác thực (refresh) không được ghi lại dưới dạng một ghi chú riêng biệt — phiên đó chỉ được đánh dấu là đã đóng một cách lười biếng, khi nó thực sự không còn được sử dụng.

Bộ lọc

  • Từ / đến — khoảng thời gian (các trường nhập ngày với lịch).
  • ID Quản trị viên — trường số để lọc theo quản trị viên cụ thể.
  • Trạng thái Phiên — danh sách thả xuống trạng thái phiên: Tất cả / Đang hoạt động / Đã đóng.

Nút «Xóa dữ liệu»

Xóa các ghi chú về các phiên trong khoảng thời gian được chỉ định bởi các trường Từ / Đến. Khi nhấp vào, một hộp thoại xác nhận sẽ mở ra:

Xác nhận hành động — Xóa tất cả các phiên đã đóng trong khoảng thời gian đã chỉ định? Hành động này không thể hoàn tác. Các phiên đang hoạt động sẽ vẫn còn.

Chỉ xóa các phiên đã đóng. Các phiên đang hoạt động (với xác thực mở) sẽ không bị ảnh hưởng — đây là biện pháp bảo vệ chống lại việc "giết" đồng nghiệp đang làm việc.


Thống kê API nội dung

Tab «Thống kê API nội dung» hiển thị bộ đếm các cuộc gọi đến tất cả các điểm cuối công khai của trang web (storefront API) trong các khoảng thời gian khác nhau — 1 giờ, 24 giờ, 7 ngày.

Hiển thị thông tin

  • Danh sách tất cả các điểm cuối công khai (GET /api/content/...) — tự động thu thập từ mã, không cần duy trì thủ công.
  • Bộ đếm bên cạnh mỗi điểm cuối — số lần nó được gọi trong khoảng thời gian đã chọn.
  • Các con số được lấy từ Prometheus metrics tập trung của nginx-ingress, chịu trách nhiệm cho lưu lượng của chúng tôi. Không có bộ đếm riêng biệt nào trong cơ sở dữ liệu của dự án.

Các phần tử giao diện

  • Khoảng thời gian — danh sách thả xuống khoảng thời gian: Giờ vừa qua / 24 Giờ vừa qua / 7 Ngày vừa qua (mặc định là 24 Giờ vừa qua).
  • Làm mới — nút làm mới dữ liệu một cách cưỡng bức.

Dữ liệu được trình bày dưới dạng bảng gồm bốn cột:

CộtÝ nghĩa
Đường dẫnđường dẫn của điểm cuối (/api/content/...)
Phương thứcphương thức HTTP (GET, POST, …)
Mô tảmô tả ngắn gọn về điểm cuối
Yêu cầusố lượng cuộc gọi trong khoảng thời gian đã chọn

Ở đầu trang có một banner thông tin:

Tự động xóa không áp dụng — Dữ liệu được đọc theo thời gian thực từ Prometheus, thời gian lưu giữ được cấu hình ở cấp hạ tầng giám sát. Tab này không lưu trữ dữ liệu trong cơ sở dữ liệu CMS.

⚠️Chỉ số tạm thời không khả dụng

Nếu Prometheus không khả dụng, một cảnh báo sẽ xuất hiện trên bảng "Chỉ số tạm thời không khả dụng. Tất cả các điểm cuối được hiển thị với số đếm bằng không." — danh sách các điểm cuối vẫn được hiển thị, nhưng với bộ đếm 0.

⚠️Thời gian lưu giữ dữ liệu

Dữ liệu được lưu trữ trong Prometheus với thời gian lưu giữ ở cấp hạ tầng (thường là 30 ngày). Để phân tích lâu dài hơn, cần phải lưu trữ một cách độc lập. Banner thông tin ở đầu trang cảnh báo về điều này.

Tại sao cần thiết

Marketing và sản phẩm có thể thấy các tính năng của storefront API thực sự được sử dụng, và những tính năng nào là không còn hoạt động. Cũng tiện để theo dõi "mọi thứ có hoạt động không" — sự giảm đột ngột trong các cuộc gọi đến một điểm cuối thường cho thấy có vấn đề ở phía front-end.

ℹ️Bộ nhớ cache

Phản hồi được lưu vào bộ nhớ cache trong 60 giây trong Redis — để không phải gọi Prometheus mỗi khi nhấn "Làm mới".


Lỗi API nội dung

Tab «Lỗi API nội dung» hiển thị tất cả các phản hồi 4xx/5xx mà API công khai đã phát ra trong khoảng thời gian. Các nhà phát triển, những người tích hợp ứng dụng khách với API của chúng tôi, giờ đây không cần truy cập vào nhật ký máy chủ — tất cả các lỗi của các yêu cầu của họ đều được thấy ngay trong admin.

Hiển thị thông tin

Mỗi ghi chú là một lỗi HTTP riêng biệt. Bảng bao gồm năm cột:

CộtÝ nghĩa
Thời giandấu thời gian của lỗi
Trạng tháitrạng thái HTTP (4xx / 5xx)
Phương thứcphương thức yêu cầu (GET, POST, …)
Đường dẫnđường dẫn (/api/content/...)
Thông điệpvăn bản lỗi

Nếu trong khoảng thời gian đã chọn không có lỗi nào, thay vì bảng sẽ hiển thị thông báo "Không có lỗi nào được ghi lại cho khoảng thời gian đã chọn".

Trường «Chi tiết» mở ra màn hình chi tiết với:

  • Nội dung yêu cầu (không có thông tin nhạy cảm — mật khẩu, token, tiêu đề xác thực được che giấu)
  • Query — các tham số của chuỗi yêu cầu
  • Headers
  • Stack trace — mở rộng (tối đa 8 KB)

Bộ lọc

  • Từ / đến — khoảng thời gian (các trường nhập ngày với lịch).
  • Trạng thái HTTP — danh sách thả xuống các trạng thái. Có thể chọn nhóm (4xx - Bên phía khách hàng, 5xx - Bên phía máy chủ) hoặc mã cụ thể: 400, 401, 403, 404, 422, 500, 502, 503.
  • Đường dẫn — trường văn bản để lọc theo đường dẫn (ví dụ, /api/content/blocks/*).

Nút «Xóa dữ liệu»

Xóa các ghi chú về lỗi trong khoảng thời gian được chỉ định bởi các trường Từ / Đến. Nếu không có khoảng thời gian được chỉ định — xóa tất cả các lỗi.

Bảo mật — bộ lọc

Bộ lọc tự động loại bỏ dữ liệu nhạy cảm. Các trường password, token, authorization, api_key, x-app-token, cookie, set-cookie (không phân biệt chữ hoa chữ thường) được thay thế bằng ***. Nội dung lớn được cắt xuống còn 2 KB.

Kiến trúc

Các lỗi được ghi qua hàng đợi nhẹ Bull, để việc ghi vào nhật ký không làm chậm quá trình xử lý yêu cầu. Nếu hàng đợi bị đầy (hơn 1000 nhiệm vụ đang chờ) — các lỗi mới sẽ bị loại bỏ một cách im lặng, để không "đè bẹp" Redis.


Xóa nhật ký thủ công

Các ghi chú nhật ký được xóa thủ công — trên mỗi tab, nơi lưu trữ dữ liệu trong cơ sở dữ liệu, có nút «Xóa dữ liệu»:

TabXóa cái gì
Nhật ký hành động của quản trị viêncác ghi chú hành động của quản trị viên trong khoảng thời gian đã chọn
Lưu lượng truy cập của quản trị viênchỉ các phiên đã đóng trong khoảng thời gian đã chọn
Lỗi API nội dungcác ghi chú về lỗi trong khoảng thời gian đã chọn

Khoảng thời gian xóa được chỉ định bởi các trường Từ / Đến trong bộ lọc của tab. Nếu không có khoảng thời gian được chỉ định — xóa tất cả các ghi chú của loại tương ứng. Trước khi xóa luôn hiển thị hộp thoại xác nhận «Xác nhận hành động», thao tác không thể hoàn tác.

ℹ️Các phiên đang hoạt động không bị ảnh hưởng

Nút «Xóa dữ liệu» trên tab «Lưu lượng truy cập của quản trị viên» không xóa các phiên đang hoạt động của các quản trị viên — ngay cả khi chỉ định khoảng thời gian bao trùm thời điểm hiện tại, phiên mở của đồng nghiệp đang làm việc sẽ không bị xóa. Chỉ xóa các phiên đã đóng.

ℹ️Tab «Thống kê API nội dung» không có chức năng xóa

Dữ liệu thống kê được đọc theo thời gian thực từ Prometheus và không được lưu trữ trong cơ sở dữ liệu CMS, vì vậy không có nút «Xóa dữ liệu» trên tab này — điều này được thông báo bởi banner «Tự động xóa không áp dụng».


Quyền cho nhật ký

Mỗi tab của nhật ký có sẵn dưới một quyền riêng biệt trong cây quyền:

TabQuyền
Nhật ký hành động của quản trị viênjournal.viewAdminActions (quyền hiện có, không thay đổi)
Lưu lượng truy cập của quản trị viênjournal.viewAdminAccess (quyền mới)
Thống kê API nội dungjournal.viewContentApiStats (quyền mới)
Lỗi API nội dungjournal.viewContentApiErrors (quyền mới)
💡Di chuyển seed khi cập nhật

Khi cập nhật hệ thống, cả hai quyền mới (journal.viewContentApiStats, journal.viewContentApiErrors) đã được cấp tự động cho tất cả các quản trị viên hiện có có quyền admins.get — thông qua di chuyển seed. Không có gì bị hỏng cho các vai trò hiện tại.