Access Hub Agent
Đồng bộ từ mã nguồn lúc 10:57, 03/10/2026
Skip to content

Danh mục chỉ số ​

Nguồn sự thật của tên chỉ số, nhãn cho phép và đặc tính từng chỉ số là internal/catalog/catalog.go (mã Go). Tài liệu này phản chiếu nó và có kiểm thử đồng bộ (internal/catalog/docs_sync_test.go): thêm, đổi tên, đổi nhãn, đơn vị, mặc định hoặc cờ bắt buộc ở một bên mà quên bên kia thì CI đỏ. Collector giữ bản máy đọc được (internal/catalog/metrics.yaml của collector) sinh từ cùng nguồn, thay đổi phải đồng bộ hai bên.

18 phút đọcCập nhật 02/10/2026access-hub-agent, docs/03-metrics-catalog.md

Xem danh mục ngay trên máy: accesshub-agent metrics list và accesshub-agent metrics show <tên> (có trạng thái bật, tắt theo cấu hình hiện tại).

Quy ước ​

  • Chỉ dùng gauge. Tốc độ do agent tính từ bộ đếm, mẫu đầu tiên sau khởi động bị bỏ (xem 10-wire-contract.md, chỉ gauge).
  • Tên: ^[a-z][a-z0-9_]{0,63}$. Trong TSDB có tiền tố ah_, agent gửi tên không có tiền tố.
  • Nhãn hệ thống company_id, server_id do collector gắn, agent không gửi.
  • Đơn vị nằm trong tên (_percent, _bytes, _seconds, _per_sec). Cột Đơn vị chỉ để tham khảo.
  • Nhóm (group) dùng để xem và lọc trong CLI: cpu, memory, disk, net, system, checks, agent.

Chọn chỉ số cần thu thập ​

Có hai lớp, áp dụng lần lượt:

  1. Bật, tắt bộ thu (metrics.cpu.enabled, memory, disk, net, uptime, pressure): tắt cả nhóm chỉ số do bộ thu đó tạo ra.
  2. Danh sách metrics.include và metrics.exclude: chọn từng chỉ số theo tên hoặc mẫu glob (*, ?, [a-z], cú pháp path.Match, khớp toàn tên).
yaml
metrics:
  include: []                  # rỗng: lấy mọi chỉ số mặc định. Khác rỗng: chỉ lấy các chỉ số khớp
  exclude:
    - net_*_drops_per_sec      # bỏ gói rơi
    - mem_slab_bytes
    - psi_*

Quy tắc:

Tình huốngKết quả
include rỗng, exclude rỗngMọi chỉ số mặc định bật (cột Mặc định là bật)
include khác rỗngChỉ các chỉ số khớp include (cộng chỉ số bắt buộc)
Khớp cả include lẫn excludeexclude thắng
exclude trúng chỉ số bắt buộc (nhóm agent)Chỉ số vẫn được gửi, agent ghi cảnh báo metric selection vào log và metrics list in cảnh báo
Mẫu không khớp chỉ số nào, hoặc sai cú pháp globLỗi cấu hình (mã thoát 3), thông báo liệt kê toàn bộ tên hợp lệ
Mọi chỉ số của một bộ thu bị loạiAgent không chạy bộ thu đó (không tốn CPU, không đọc /proc)

Chỉ số bị loại không bao giờ được tạo ra, không vào WAL, không cộng vào agent_dropped_samples_total (đó là bỏ có chủ đích, không phải mất dữ liệu). Chỉ số planned (kế hoạch) có trong danh mục nhưng chưa được phát ra.

Chỉ số bắt buộc là toàn bộ nhóm agent: collector và Access Hub dựa vào chúng để biết agent còn khỏe, độ lệch đồng hồ và mẫu bị bỏ. Lý do thiết kế ở ADR 0006.

Lưu ý: metrics.net.include, metrics.net.exclude (regex chọn giao diện mạng) và metrics.disk.* (chọn mount) là bộ lọc theo nhãn, khác với metrics.include, metrics.exclude (chọn theo tên chỉ số).

Danh mục theo nhóm ​

Cột Mặc định: bật gửi mặc định, kế hoạch đã vào danh mục nhưng chưa phát ra. Cột Biểu đồ dự kiến là chỗ Access Hub dùng chỉ số trên trang Sức khỏe của máy chủ (tham khảo, không ràng buộc hợp đồng). Tắt một chỉ số thì biểu đồ dùng nó sẽ trống.

Nhóm cpu ​

Chỉ sốNhãnĐơn vịMặc địnhBắt buộcNền tảngBiểu đồ dự kiếnÝ nghĩa
cpu_usage_percent%bậtkhôngLinux, WindowsGauge nhanh, Cơ bảnSử dụng CPU tổng (100 trừ idle)
cpu_mode_percentmode%bậtkhôngLinux, WindowsCPU theo chế độTỷ lệ CPU theo chế độ: user, nice, system, idle, iowait, irq, softirq, steal (Linux). Windows chỉ có user, system, idle
cpu_load1-bậtkhôngLinuxTải trung bìnhTải trung bình 1 phút
cpu_load5-bậtkhôngLinuxTải trung bìnhTải trung bình 5 phút
cpu_load15-bậtkhôngLinuxTải trung bìnhTải trung bình 15 phút
load_per_core_5m-bậtkhôngLinuxGauge nhanhcpu_load5 chia số lõi logic
cpu_cores-bậtkhôngLinux, WindowsThông tin máySố lõi logic

Nhóm memory ​

Chỉ sốNhãnĐơn vịMặc địnhBắt buộcNền tảngBiểu đồ dự kiếnÝ nghĩa
mem_total_bytesbytesbậtkhôngLinux, WindowsBộ nhớ xếp chồng, Thông tin máyTổng RAM
mem_used_bytesbytesbậtkhôngLinux, WindowsBộ nhớ xếp chồngRAM đã dùng (tổng trừ khả dụng)
mem_available_bytesbytesbậtkhôngLinux, WindowsBộ nhớ xếp chồngRAM khả dụng (MemAvailable)
mem_used_percent%bậtkhôngLinux, WindowsGauge nhanh, Cơ bảnPhần trăm RAM đã dùng
mem_free_bytesbytesbậtkhôngLinuxBộ nhớ xếp chồngRAM hoàn toàn trống (MemFree)
mem_cached_bytesbytesbậtkhôngLinuxBộ nhớ xếp chồngBộ nhớ đệm tệp (Cached)
mem_buffers_bytesbytesbậtkhôngLinuxBộ nhớ xếp chồngBộ đệm khối (Buffers)
mem_slab_bytesbytesbậtkhôngLinuxBộ nhớ xếp chồngBộ nhớ slab của kernel (Slab)
mem_page_tables_bytesbytesbậtkhôngLinuxBộ nhớ xếp chồngBảng trang (PageTables)
swap_total_bytesbytesbậtkhôngLinux, WindowsThông tin máyTổng swap (Windows: page file)
swap_used_bytesbytesbậtkhôngLinux, WindowsBộ nhớ xếp chồngSwap đã dùng
swap_used_percent%bậtkhôngLinux, WindowsGauge nhanhPhần trăm swap đã dùng
swap_cached_bytesbytesbậtkhôngLinuxBộ nhớ xếp chồngSwap còn nằm trong RAM (SwapCached)

Nhóm disk ​

Chỉ sốNhãnĐơn vịMặc địnhBắt buộcNền tảngBiểu đồ dự kiếnÝ nghĩa
disk_total_bytesmount, fstypebytesbậtkhôngLinux, WindowsThông tin máyDung lượng mount
disk_used_bytesmount, fstypebytesbậtkhôngLinux, WindowsĐĩa theo mountDung lượng đã dùng
disk_used_percentmount, fstype%bậtkhôngLinux, WindowsGauge nhanh, Đĩa theo mount, Cơ bảnPhần trăm dùng theo cách df tính
disk_inodes_used_percentmount, fstype%bậtkhôngLinuxĐĩa theo mountPhần trăm inode đã dùng
disk_read_bytes_per_secdevicebytes/skế hoạchkhôngLinux, WindowsĐĩa I/OThông lượng đọc của đĩa
disk_write_bytes_per_secdevicebytes/skế hoạchkhôngLinux, WindowsĐĩa I/OThông lượng ghi của đĩa
disk_io_util_percentdevice%kế hoạchkhôngLinux, WindowsĐĩa I/OThời gian bận của đĩa

Nhóm net ​

Chỉ sốNhãnĐơn vịMặc địnhBắt buộcNền tảngBiểu đồ dự kiếnÝ nghĩa
net_rx_bytes_per_secifacebytes/sbậtkhôngLinux, WindowsMạng (byte), Cơ bảnByte nhận mỗi giây
net_tx_bytes_per_secifacebytes/sbậtkhôngLinux, WindowsMạng (byte), Cơ bảnByte gửi mỗi giây
net_rx_packets_per_seciface1/sbậtkhôngLinux, WindowsMạng (gói)Gói nhận mỗi giây
net_tx_packets_per_seciface1/sbậtkhôngLinux, WindowsMạng (gói)Gói gửi mỗi giây
net_rx_errors_per_seciface1/sbậtkhôngLinux, WindowsMạng (lỗi)Lỗi nhận mỗi giây
net_tx_errors_per_seciface1/sbậtkhôngLinux, WindowsMạng (lỗi)Lỗi gửi mỗi giây
net_rx_drops_per_seciface1/sbậtkhôngLinux, WindowsMạng (rơi)Gói nhận bị rơi mỗi giây
net_tx_drops_per_seciface1/sbậtkhôngLinux, WindowsMạng (rơi)Gói gửi bị rơi mỗi giây

Nhóm system ​

Chỉ sốNhãnĐơn vịMặc địnhBắt buộcNền tảngBiểu đồ dự kiếnÝ nghĩa
uptime_secondssbậtkhôngLinux, WindowsThông tin máyThời gian từ lần khởi động cuối
boot_time_secondssbậtkhôngLinux, WindowsThông tin máyThời điểm khởi động (epoch)
procs_total-bậtkhôngLinux-Tổng số tiến trình, không chi tiết
open_fds_percent%kế hoạchkhôngLinux-Phần trăm mô tả tệp mở toàn hệ thống
psi_cpu_some_percent%bậtkhôngLinuxÁp lực PSIÁp lực CPU (PSI some, trung bình 10 giây): phần thời gian có tác vụ phải chờ CPU
psi_memory_some_percent%bậtkhôngLinuxÁp lực PSIÁp lực bộ nhớ (PSI some, trung bình 10 giây)
psi_io_some_percent%bậtkhôngLinuxÁp lực PSIÁp lực I/O (PSI some, trung bình 10 giây)

Nhóm checks ​

Chỉ sốNhãnĐơn vịMặc địnhBắt buộcNền tảngBiểu đồ dự kiếnÝ nghĩa
service_upname0/1bậtkhôngLinux, Windows-1 nếu dịch vụ đang chạy
port_upport, proto0/1bậtkhôngLinux, Windows-1 nếu có tiến trình lắng nghe cổng
tcp_connect_uptarget0/1bậtkhôngLinux, Windows-1 nếu kết nối TCP thành công
tcp_connect_secondstargetsbậtkhôngLinux, Windows-Thời gian kết nối TCP
http_uptarget0/1bậtkhôngLinux, Windows-1 nếu HTTP trả mã mong đợi
http_duration_secondstargetsbậtkhôngLinux, Windows-Thời gian phản hồi HTTP
http_status_codetarget-bậtkhôngLinux, Windows-Mã trạng thái HTTP gần nhất
cert_days_lefttargetdaysbậtkhôngLinux, Windows-Số ngày còn lại của chứng chỉ TLS

Nhóm agent ​

Chỉ sốNhãnĐơn vịMặc địnhBắt buộcNền tảngBiểu đồ dự kiếnÝ nghĩa
agent_cpu_percent%bậtcóLinux, Windows-CPU agent dùng
agent_rss_bytesbytesbậtcóLinux, Windows-RSS của agent
agent_goroutines-bậtcóLinux, Windows-Số goroutine
agent_wal_bytesbytesbậtcóLinux, Windows-Dung lượng WAL hiện tại
agent_wal_batches-bậtcóLinux, Windows-Số lô chờ trong WAL
agent_send_failures_total-bậtcóLinux, Windows-Tổng số lần gửi lỗi (gauge tích lũy trong đời tiến trình)
agent_dropped_samples_total-bậtcóLinux, Windows-Mẫu bị bỏ do WAL đầy hoặc vượt giới hạn
agent_collect_duration_secondssbậtcóLinux, Windows-Thời gian một chu kỳ thu thập
agent_collector_errorscollector-bậtcóLinux, Windows-Số bộ thu lỗi ở chu kỳ vừa rồi
agent_clock_skew_secondssbậtcóLinux, Windows-Độ lệch đồng hồ so với collector
agent_infoversion, proto, os-bậtcóLinux, Windows-Luôn bằng 1, nhãn version, proto, os

Chỉ số ở nhóm checks chỉ có khi quản trị viên khai báo check tương ứng. Giá trị nhãn name, target, port lấy từ định nghĩa check (danh sách hữu hạn, không phát sinh tự do).

Ngân sách series mỗi máy ​

NguồnSeriesGiới hạn cứng
cpu14 (1 tổng, 8 chế độ, 3 tải, 1 tải mỗi lõi, 1 số lõi)
memory13 (4 RAM, 5 chi tiết, 4 swap)
disk4 mỗi mount40 mount = 160
net8 mỗi giao diện (byte, gói, lỗi, rơi, mỗi chiều)20 giao diện = 160
uptime3
pressure3 (chỉ khi kernel có PSI)
agentkhoảng 1116 được giữ chỗ riêng
checks1 đến 3 mỗi check50 check

Máy điển hình (2 mount, 2 giao diện, không check): khoảng 68 series. Giới hạn chung limits.max_series mặc định 500, vượt thì cắt từ cuối và agent_* vẫn được giữ chỗ. Muốn giảm cardinality thì exclude các chỉ số ít dùng (ví dụ net_*_drops_per_sec, net_*_packets_per_sec, mem_slab_bytes).

Bộ lọc mặc định ​

Đối tượngBỏGiữ
Hệ thống tệptmpfs, devtmpfs, overlay, squashfs, proc, sysfs, cgroup, nsfs, mount dưới /var/lib/docker, /var/lib/containers, /snap, /runext2/3/4, xfs, btrfs, zfs, nfs* (cấu hình), vfat trên /boot
WindowsỔ đĩa quang, ổ mạng chưa kết nốiỔ cố định (DRIVE_FIXED), cấu hình ổ mạng
Giao diện mạnglo, veth*, docker*, br-*, virbr*, cali*, flannel*, tunl*, vxlan*Còn lại. Cấu hình net.include, net.exclude theo regex
Thiết bị đĩaloop*, ram*, dm-* (tùy chọn), sr*sd*, nvme*, vd*, xvd*

Cấu hình cho phép quản trị viên thêm, bớt. Danh sách lọc là nguồn chủ yếu kiểm soát cardinality (xem collector 04-data-model).

Nguồn dữ liệu ​

Linux ​

Chỉ sốNguồn
CPU/proc/stat (hiệu hai lần đọc), /proc/loadavg
RAM, swap/proc/meminfo (MemAvailable, MemFree, Cached, Buffers, Slab, PageTables, SwapCached)
Áp lực (PSI)/proc/pressure/cpu, /proc/pressure/memory, /proc/pressure/io, dòng some, giá trị avg10. Kernel không có PSI (trước 4.20, hoặc tắt) thì không có chỉ số, không báo lỗi
Đĩa/proc/self/mountinfo (danh sách mount), statfs(2) (dung lượng, inode), /proc/diskstats (I/O)
Mạng/proc/net/dev (hiệu hai lần đọc: byte, gói, lỗi, rơi)
Uptime/proc/uptime, /proc/stat (btime)
Tiến trìnhĐếm thư mục số trong /proc (không đọc cmdline)
FD/proc/sys/fs/file-nr
Dịch vụsystemd qua D-Bus hoặc systemctl is-active (GĐ 2)
Port/proc/net/tcp, /proc/net/tcp6, /proc/net/udp (trạng thái LISTEN)

Container hoặc cgroup v2 không được xử lý ở giai đoạn này (ngoài phạm vi).

Windows ​

Theo ADR 0007 bộ thu Windows chỉ dùng API trực tiếp, không dùng PDH nên không phụ thuộc ngôn ngữ hiển thị và không cần nhóm Performance Monitor Users.

Chỉ sốNguồn
CPUGetSystemTimes (idle, kernel gồm idle, user). system = kernel trừ idle
Số lõiruntime.NumCPU
RAM, page fileGlobalMemoryStatusEx. Page file là ước lượng: kích thước = giới hạn commit trừ RAM, mức dùng = commit vượt phần RAM đang dùng, chặn vào [0, kích thước]
ĐĩaGetLogicalDrives, GetDriveType (cố định, tháo rời, mạng), GetVolumeInformation (fstype), GetDiskFreeSpaceEx. Nhãn mount là C:. Ổ quang và volume gắn vào thư mục bị bỏ
MạngGetIfTable2 (bộ đếm 64 bit). Nhãn iface là tên kết nối. Bỏ loopback, tunnel, giao diện không Up, tên trùng lấy cái đầu
UptimeGetTickCount64
AgentGetProcessTimes (CPU), K32GetProcessMemoryInfo (working set làm RSS)
Dịch vụService Control Manager (OpenSCManager quyền connect, OpenService quyền query, QueryServiceStatus). Dịch vụ không tồn tại thì service_up = 0
PortGetExtendedTcpTable (listener, IPv4 và IPv6), GetExtendedUdpTable

Chưa có trên Windows: tải trung bình (cpu_load*, load_per_core_5m), procs_total, inode, I/O đĩa, và các chỉ số bộ nhớ chi tiết của Linux. I/O đĩa và page file chính xác sẽ cần PDH (ADR 0004), làm sau.

Công thức chính ​

Chỉ sốCông thức
cpu_usage_percent100 * (1 - Δidle / Δtotal), giữ trong [0, 100]. Mặc định (include_iowait_in_usage: false) iowait được tính là idle (CPU đang chờ đĩa không bị coi là bận). Đặt true để tính iowait là bận. cpu_mode_percent{mode=iowait} luôn cho thấy phần chờ đĩa
mem_used_bytesMemTotal - MemAvailable
cpu_mode_percent{mode}100 * Δmode / Δtotal, đủ 8 chế độ nên tổng các chế độ bằng 100 (dùng được cho biểu đồ xếp chồng). user không gồm nice, system không gồm irq, softirq
psi_*_some_percentGiá trị avg10 của dòng some (phần trăm thời gian ít nhất một tác vụ phải chờ tài nguyên, trung bình 10 giây)
disk_used_percentused / (used + available_to_nonroot) theo cách df tính (không tính phần dự trữ root)
net_*_per_secΔbộ đếm / Δt (byte, gói, lỗi, rơi), Δt từ đồng hồ đơn điệu, bộ đếm quay vòng được xử lý
load_per_core_5mcpu_load5 / cpu_cores

Quy tắc thêm chỉ số mới ​

  1. Thêm một dòng vào internal/catalog/catalog.go (nhóm, đơn vị, nhãn, bộ thu, nền tảng, mặc định, mô tả vi và en). Danh sách nhãn trắng của engine tự sinh từ đó.
  2. Thêm dòng tương ứng vào bảng nhóm ở trên (kiểm thử đồng bộ sẽ báo nếu lệch).
  3. Đánh giá tác động cardinality (tối đa bao nhiêu series mỗi máy) và cập nhật bảng ngân sách series.
  4. Cập nhật metrics.yaml của collector, danh sách nhãn trắng, rollup, và series allow-list bên Access Hub nếu trang Sức khỏe cần vẽ.
  5. Thêm kiểm thử fixture cho từng nền tảng.
  6. Ghi nhật ký thay đổi và phiên bản catalog (catalog_version trong agent_info).

Hành vi triển khai (Linux) ​

  • Mẫu đầu tiên của mọi chỉ số dạng tốc độ (cpu_usage_percent, cpu_mode_percent, net_*_per_sec, agent_cpu_percent) bị bỏ, chu kỳ thứ hai mới có giá trị. Bộ đếm 32 bit quay vòng được cộng bù, bộ đếm 64 bit giảm được coi là reset và bỏ mẫu. Tốc độ vượt 1e12/s bị loại.
  • procs_total, uptime_seconds, boot_time_seconds do bộ thu uptime tạo ra, nên tắt metrics.uptime cũng tắt procs_total.
  • Kernel cũ không có MemAvailable (trước 3.14): dùng MemFree + Buffers + Cached.
  • Đĩa: tối đa 40 mount (4 series mỗi mount), mount bind trùng thiết bị chỉ báo một lần. Mạng: tối đa 20 giao diện (8 series mỗi giao diện), sắp theo tên. disk_io_* chưa có (GĐ 2).
  • Bộ lọc mặc định: hệ thống tệp ảo và nfs*, cifs... bị loại, mount dưới /var/lib/docker, /var/lib/containers, /snap, /run, /sys, /proc, /dev bị loại. include_fstypes không rỗng thay thế toàn bộ danh sách mặc định, exclude_fstypes và exclude_mounts luôn thắng. Giao diện: net.include không rỗng thay thế danh sách loại mặc định, net.exclude luôn thắng.
  • Nhãn tĩnh (labels) trùng nhãn dành riêng bị bỏ khi gửi, giá trị nhãn cắt còn 128 byte.
  • Khi vượt limits.max_series, các chỉ số thường bị cắt từ cuối, chỉ số agent_* được giữ chỗ riêng (tối đa 16 series).
Trang này có giúp được bạn không?
Sửa trang này

Nội dung đồng bộ từ kho mã access-hub-agent lúc 10:57, 03/10/2026. Khi tài liệu và mã khác nhau, mã thắng.