这是整理的 vmagent 和 node_exporter 所有指标的完整解读,以纯文本形式呈现。 --- # vmagent 和 node_exporter 指标全集详解 ## 一、Go 运行时指标 (go_*) 监控 vmagent 应用程序本身的健康状况,由 Go 运行时内置暴露。 * `go_cgo_calls_count`: 当前进程发出的 cgo 调用总数。 * `go_cpu_count`: 当前进程可使用的 CPU 核心数。 * `go_gc_cpu_seconds_total`: GC 所消耗的 CPU 时间总量。 * `go_gc_duration_seconds`: GC 暂停时间的分布情况(摘要指标)。 * `go_gc_duration_seconds_count`: GC 周期发生的总次数。 * `go_gc_duration_seconds_sum`: GC 暂停总耗时。 * `go_gc_forced_count`: 被强制触发的 GC 周期数(如手动或运行时强制)。 * `go_gc_gogc_percent`: 当前 GOGC 环境变量的值(设置触发GC的内存增长百分比)。 * `go_gc_gomemlimit_bytes`: 当前 GOMEMLIMIT 环境变量的值(Go运行时内存软限制)。 * `go_gc_mark_assist_cpu_seconds_total`: 后台标记期间,应用程序 Goroutine 协助 GC 所花费的 CPU 时间。 * `go_gc_pauses_seconds_bucket`: GC 暂停时间的直方图桶。 * `go_gomaxprocs`: 当前 GOMAXPROCS 的值(可同时执行的最大CPU数)。 * `go_goroutines`: 当前存在的 Goroutine 数量。**关键指标**:数值异常高可能意味着 Goroutine 泄漏。 * `go_info`: Go 版本信息(标签:`version`)。 * `go_info_ext`: 扩展的 Go 信息。 * `go_memlimit_bytes`: 系统内存限制。 * `go_memstats_alloc_bytes`: 当前分配给进程堆对象的字节数。**关键指标**:当前内存使用量。 * `go_memstats_alloc_bytes_total`: 累计分配的堆字节总量(只会增加)。 * `go_memstats_buck_hash_sys_bytes`: 用于剖析桶哈希表的操作系统内存大小。 * `go_memstats_frees_total`: 累计释放的堆对象总数。 * `go_memstats_gc_cpu_fraction`: GC 消耗的 CPU 时间占总 CPU 时间的比例。 * `go_memstats_gc_sys_bytes`: GC 元数据占用的系统内存大小。 * `go_memstats_heap_alloc_bytes`: 同 `go_memstats_alloc_bytes`。 * `go_memstats_heap_idle_bytes`: 空闲(可重用)的堆内存字节数。 * `go_memstats_heap_inuse_bytes`: 正在使用的堆内存字节数。 * `go_memstats_heap_objects`: 当前分配的堆对象数量。 * `go_memstats_heap_released_bytes`: 已交还给操作系统的空闲堆内存字节数。 * `go_memstats_heap_sys_bytes`: 从操作系统申请的堆内存总字节数。 * `go_memstats_last_gc_time_seconds`: 最后一次 GC 完成时的 Unix 时间戳。 * `go_memstats_lookups_total`: 运行时进行的指针查找总数。 * `go_memstats_mallocs_total`: 累计分配的堆对象总数。 * `go_memstats_mcache_inuse_bytes`: 正在使用的 mcache 结构字节数。 * `go_memstats_mcache_sys_bytes`: 从操作系统申请的 mcache 结构字节数。 * `go_memstats_mspan_inuse_bytes`: 正在使用的 mspan 结构字节数。 * `go_memstats_mspan_sys_bytes`: 从操作系统申请的 mspan 结构字节数。 * `go_memstats_next_gc_bytes`: 下一次 GC 将触发的堆内存大小目标值。 * `go_memstats_other_sys_bytes`: 其他系统分配的内存字节数。 * `go_memstats_stack_inuse_bytes`: 正在使用的栈内存字节数。 * `go_memstats_stack_sys_bytes`: 从操作系统申请的栈内存字节数。 * `go_memstats_sys_bytes`: 从操作系统申请的总内存字节数。 * `go_mutex_wait_seconds_total`: Goroutines 在互斥锁上阻塞的总时间。 * `go_scavenge_cpu_seconds_total`: 内存清理器(将内存归还OS)消耗的CPU时间。 * `go_sched_gomaxprocs_threads`: 当前存在的操作系统线程数(用于执行Goroutine)。 * `go_sched_latencies_seconds_bucket`: Goroutine 调度延迟的直方图桶。 * `go_threads`: 由运行时创建的操作系统线程数。 * `go_mutex_wait_seconds_total`: Goroutine 在互斥锁上等待的总时间。 ## 二、Node Exporter 系统指标 (node_*) 由 node_exporter 收集的底层操作系统和硬件指标。 ### 1. 系统信息 * `node_boot_time_seconds`: 系统启动时间(Unix 时间戳)。 * `node_os_info`: 操作系统信息(标签:`id`, `version_id`, `name` 等)。 * `node_os_version`: 操作系统版本。 * `node_uname_info`: 系统内核信息(标签:`machine`, `nodename`, `release`, `sysname`, `version`)。 ### 2. CPU * `node_context_switches_total`: 系统上下文切换总次数。 * `node_cpu_seconds_total`: **关键指标**。每种模式(`mode`标签:user, system, idle, iowait, irq, etc.)下消耗的CPU时间。用于计算CPU利用率。 * `node_cpu_frequency_hertz`: 当前CPU频率。 * `node_cpu_frequency_max_hertz`: CPU最大频率。 * `node_cpu_frequency_min_hertz`: CPU最小频率。 * `node_cpu_online`: CPU核心是否在线(1=在线,0=离线)。 * `node_cpu_guest_seconds_total`: 运行虚拟机所消耗的CPU时间。 * `node_cpu_core_throttles_total`: CPU核心被节流(降频)的总次数。 * `node_cpu_package_throttles_total`: CPU封装被节流的总次数。 * `node_cpu_scaling_frequency_hertz`: CPU当前缩放频率。 * `node_cpu_scaling_frequency_max_hertz`: CPU最大缩放频率。 * `node_cpu_scaling_frequency_min_hertz`: CPU最小缩放频率。 * `node_cpu_scaling_governor`: 当前CPU频率调节器策略。 ### 3. 内存 * `node_memory_MemTotal_bytes`: 总物理内存大小。 * `node_memory_MemFree_bytes`: 空闲内存大小。 * `node_memory_MemAvailable_bytes`: **关键指标**。可用内存估算(比Free更准确,包含可回收的缓存)。 * `node_memory_Buffers_bytes`: 用作缓冲区的内存。 * `node_memory_Cached_bytes`: 用作页面缓存的内存。 * `node_memory_SwapTotal_bytes`: 总交换空间大小。 * `node_memory_SwapFree_bytes`: 空闲交换空间大小。 * `node_memory_SwapCached_bytes`: 被换出但又被换回的内存,仍留在交换区。 * `node_memory_Active_bytes`: 活跃内存大小。 * `node_memory_Inactive_bytes`: 非活跃内存大小。 * `node_memory_Active_anon_bytes`: 活跃的匿名映射内存。 * `node_memory_Inactive_anon_bytes`: 非活跃的匿名映射内存。 * `node_memory_Active_file_bytes`: 活跃的文件缓存内存。 * `node_memory_Inactive_file_bytes`: 非活跃的文件缓存内存。 * `node_memory_Dirty_bytes`: 等待写回磁盘的内存。 * `node_memory_Writeback_bytes`: 正在写回磁盘的内存。 * `node_memory_AnonPages_bytes`: 匿名页映射的内存。 * `node_memory_Mapped_bytes`: 文件映射的内存。 * `node_memory_Shmem_bytes`: 共享内存大小。 * `node_memory_Slab_bytes`: 内核Slab分配器使用的内存。 * `node_memory_SReclaimable_bytes`: 可回收的Slab内存。 * `node_memory_SUnreclaim_bytes`: 不可回收的Slab内存。 * `node_memory_PageTables_bytes`: 页表占用的内存。 * `node_memory_HugePages_Total`: 大页总数。 * `node_memory_HugePages_Free`: 空闲大页数。 * `node_memory_Hugepagesize_bytes`: 大页大小。 * `node_memory_HardwareCorrupted_bytes`: 硬件损坏的内存大小。 * `node_memory_VmallocTotal_bytes`: vmalloc地址空间总大小。 * `node_memory_VmallocUsed_bytes`: 已使用的vmalloc地址空间大小。 * `node_memory_Committed_AS_bytes`: 已提交的地址空间大小(分配承诺)。 * `node_memory_CommitLimit_bytes`: 总可分配内存限制。 ### 4. 磁盘 I/O * `node_disk_read_bytes_total`: **关键指标**。从磁盘读取的总字节数。用于计算读吞吐量。 * `node_disk_written_bytes_total`: **关键指标**。写入磁盘的总字节数。用于计算写吞吐量。 * `node_disk_reads_completed_total`: **关键指标**。成功完成的读I/O操作次数。用于计算读IOPS。 * `node_disk_writes_completed_total`: **关键指标**。成功完成的写I/O操作次数。用于计算写IOPS。 * `node_disk_read_time_seconds_total`: **关键指标**。所有读操作花费的总时间。用于计算平均读延迟。 * `node_disk_write_time_seconds_total`: **关键指标**。所有写操作花费的总时间。用于计算平均写延迟。 * `node_disk_io_time_seconds_total`: **关键指标**。磁盘忙于处理I/O请求的总时间。用于计算磁盘利用率(%)。 * `node_disk_io_time_weighted_seconds_total`: 加权I/O时间,类似于 `iostat` 的 `await`。 * `node_disk_io_now`: 当前正在进行的I/O操作数。 * `node_disk_reads_merged_total`: 被合并的读操作次数。 * `node_disk_writes_merged_total`: 被合并的写操作次数。 * `node_disk_discards_completed_total`: 完成的discard(TRIM)操作次数(SSD)。 * `node_disk_discarded_sectors_total`: 被discard的扇区总数(SSD)。 * `node_disk_discard_time_seconds_total`: discard操作花费的总时间。 * `node_disk_info`: 磁盘设备信息(标签:`device`, `model`, `serial`等)。 ### 5. 文件系统 * `node_filesystem_size_bytes`: 文件系统总大小。 * `node_filesystem_free_bytes`: 文件系统空闲空间大小。 * `node_filesystem_avail_bytes`: **关键指标**。用户可用的空闲空间大小(考虑保留块)。 * `node_filesystem_files`: 文件系统总inode数。 * `node_filesystem_files_free`: 文件系统空闲inode数。 * `node_filesystem_readonly`: 文件系统是否为只读(1=是,0=否)。 * `node_filesystem_device_error`: 检查文件系统时是否发生设备错误(1=是,0=否)。 * `node_filesystem_mount_info`: 挂载点信息(标签丰富)。 * `node_filesystem_purgeable_bytes`: (macOS)可清除的字节数。 ### 6. 网络 * `node_network_receive_bytes_total`: **关键指标**。网络接口接收的总字节数。用于计算入向流量。 * `node_network_transmit_bytes_total`: **关键指标**。网络接口发送的总字节数。用于计算出向流量。 * `node_network_receive_packets_total`: 接收的数据包总数。 * `node_network_transmit_packets_total`: 发送的数据包总数。 * `node_network_receive_errs_total`: 接收时发生的错误总数。 * `node_network_transmit_errs_total`: 发送时发生的错误总数。 * `node_network_receive_drop_total`: 接收时丢弃的数据包总数。 * `node_network_transmit_drop_total`: 发送时丢弃的数据包总数。 * `node_network_receive_fifo_total`: 接收FIFO缓冲区错误数。 * `node_network_transmit_fifo_total`: 发送FIFO缓冲区错误数。 * `node_network_up`: 网络接口是否启用(1=up,0=down)。 * `node_network_speed_bytes`: 网络接口速度(字节/秒)。 * `node_network_info`: 网络接口信息(标签:`address`, `broadcast`, `device`等)。 * `node_netstat_Tcp_CurrEstab`: 当前已建立的TCP连接数。 * `node_netstat_Tcp_ActiveOpens`: 主动打开的TCP连接数。 * `netstat_Tcp_PassiveOpens`: 被动打开的TCP连接数。 * `node_netstat_Tcp_RetransSegs`: TCP重传的段数。 * `node_netstat_Tcp_InErrs`: 接收的TCP错误数。 * `node_netstat_Tcp_OutRsts`: 发送的TCP RST包数。 * `node_netstat_Udp_InDatagrams`: 接收的UDP数据报数。 * `node_netstat_Udp_OutDatagrams`: 发送的UDP数据报数。 * `node_netstat_Udp_InErrors`: 接收UDP时发生的错误数。 * `node_arp_entries`: ARP表条目数。 ### 7. 其他系统指标 * `node_load1`, `node_load5`, `node_load15`: **关键指标**。系统平均负载(1分钟,5分钟,15分钟)。 * `node_time_seconds`: 当前系统时间(Unix时间戳)。 * `node_timex_*`: 系统时间同步(NTP)状态相关指标。 * `node_procs_running`: 正在运行的进程数。 * `node_procs_blocked`: 被阻塞(等待I/O)的进程数。 * `node_forks_total`: 系统创建的总进程数。 * `node_intr_total`: 系统中断总数。 * `node_filefd_allocated`: 已分配的文件描述符数。 * `node_filefd_maximum`: 最大可分配的文件描述符数。 * `node_vmstat_*`: 从 `/proc/vmstat` 获取的虚拟内存统计信息(分页、交换等)。 * `node_sockstat_*`: 套接字统计信息(TCP/UDP使用情况等)。 * `node_nf_conntrack_entries`: 当前conntrack表条目数。 * `node_nf_conntrack_entries_limit`: conntrack表最大条目数。 * `node_thermal_zone_temp`: thermal zone温度(摄氏度)。 * `node_hwmon_temp_celsius`: 硬件传感器温度(摄氏度)。 * `node_hwmon_temp_crit_alarm_celsius`: 温度临界警报。 * `node_edac_*`: 错误检测与纠正(EDAC)内存错误计数。 * `node_rapl_*`: Running Average Power Limit (RAPL) 能源消耗指标。 ## 三、进程指标 (process_*) 监控 vmagent 自身进程的资源使用情况。 * `process_cpu_seconds_total`: 进程消耗的总CPU时间(用户+系统)。 * `process_cpu_seconds_user_total`: 进程在用户态消耗的CPU时间。 * `process_cpu_seconds_system_total`: 进程在内核态消耗的CPU时间。 * `process_resident_memory_bytes`: **关键指标**。进程驻留物理内存大小(RSS)。 * `process_virtual_memory_bytes`: 进程虚拟内存大小(VSZ)。 * `process_virtual_memory_max_bytes`: 进程可用的最大虚拟内存地址空间限制。 * `process_open_fds`: **关键指标**。进程当前打开的文件描述符数。 * `process_max_fds`: 进程允许打开的最大文件描述符数。 * `process_major_pagefaults_total`: 进程发生的主要缺页错误数(需要磁盘I/O)。 * `process_minor_pagefaults_total`: 进程发生的次要缺页错误数(无需磁盘I/O)。 * `process_start_time_seconds`: 进程启动时间(Unix时间戳)。 * `process_io_read_bytes_total`: 进程通过read syscall读取的总字节数。 * `process_io_written_bytes_total`: 进程通过write syscall写入的总字节数。 * `process_io_storage_read_bytes_total`: 从存储设备读取的实际字节数(可能包含缓存)。 * `process_io_storage_written_bytes_total`: 写入存储设备