Skip to main content

监控项说明

JuiceFS 为每个文件系统提供一个 Prometheus API,本章仅罗列和介绍部分常用监控指标,完整列表请访问控制台,在「监控」页面点击「Prometheus API」,直接查看接口数据。

提示

部分指标由于子项众多,并未完整列出,比如 juicefs_fuse_ops_lookupjuicefs_fuse_ops_open 就统一收录在 juicefs_fuse_ops_<name>

另外,本章介绍的指标全部冠以 juicefs_ 前缀,在私有部署的 Grafana 中并没有这个统一前缀,比如:

  • juicefs_trash_size 叫作 jfs_stat_trash_size
  • juicefs_operationDuration 叫作 mount_operationDuration

因此,如果你关心的指标没搜到,试试掐头去尾重新搜索其中的部分关键字。

文件系统

标签

名称说明
name文件系统名

指标

名称说明单位
juicefs_size文件系统大小字节
juicefs_inodesinodes 数量
juicefs_trash_size回收站文件大小字节
juicefs_trash_files回收站文件数量

客户端

标签

名称说明
name文件系统名
host客户端所在主机名
ip客户端所在主机 IP 地址
mountpoint挂载点路径

指标

操作系统

名称说明单位
juicefs_uptime运行时长
juicefs_cpuusage累计 CPU 使用时间微秒
juicefs_memusage当前占用 RSS 内存量字节
juicefs_heapSysGo 申请的内存总量,同 Sys字节
juicefs_heapInuseHeapInuse字节
juicefs_handles客户端持有文件句柄数
juicefs_threads客户端 Go 线程数量,详见 ThreadCreateProfile
juicefs_goroutines客户端 Go 协程数量
juicefs_gcPausePauseTotalNs纳秒

元数据服务

名称说明单位
juicefs_metaDuration元数据服务请求延迟微秒
juicefs_metaRequest元数据服务请求数
juicefs_metameta 前缀的指标汇总,不单独参考
juicefs_meta_operations元数据操作量
juicefs_meta_bytes_sent元数据服务请求发送流量字节
juicefs_meta_bytes_received元数据服务请求接受流量字节
juicefs_meta_packets_sent元数据服务请求包发送流量
juicefs_meta_packets_received元数据服务请求包接受流量
juicefs_meta_reconnects元数据服务重连次数
juicefs_meta_usec_ping元数据服务 ping 延迟微秒
juicefs_meta_dircache客户端内存元数据缓存的操作总量
juicefs_meta_dircache_<name>客户端内存元数据缓存的各种操作
juicefs_meta_dircache0_dirs客户端内存元数据缓存的目录数量
juicefs_meta_dircache0_inodes客户端内存元数据缓存的 inodes 数量

文件操作

名称说明单位
juicefs_read_bytes读取总量,与 juicefs_get_bytes 不同,这是文件操作层级的统计字节
juicefs_write_bytes写入总量,与 juicefs_put_bytes 不同,这是文件操作层级的统计字节
juicefs_operations文件操作总量
juicefs_operationDuration文件操作延迟
juicefs_fuse_ops文件操作总量(分类再汇总统计,与 juicefs_operations 有少量差别)
juicefs_fuse_ops_<name>单个文件操作的计数,例如 getattrlookupopen
juicefs_openfiles打开的文件数
juicefs_bgjobs正在运行的后台任务
juicefs_bgjobs_compact正在运行的后台任务中,碎片合并任务数
juicefs_bgjobs_delete正在运行的后台任务中,回收站文件删除任务数
juicefs_compacts累计碎片合并次数
juicefs_compact_bytes累计碎片合并上传流量字节

缓冲区

名称说明单位
juicefs_totalBufferUsed读写缓冲区已使用大小字节
juicefs_readBufferUsed读缓冲区已使用大小字节

本地缓存

名称说明单位
juicefs_blockcache_blocks缓存块的总个数
juicefs_blockcache_bytes缓存块的总大小字节
juicefs_blockcache_hits命中缓存块的总次数
juicefs_blockcache_hitBytes命中缓存块的总大小字节
juicefs_blockcache_miss没有命中缓存块的总次数
juicefs_blockcache_missBytes没有命中缓存块的总大小字节
juicefs_blockcache_evict淘汰缓存块的总次数
juicefs_blockcache_evictBytes淘汰缓存块的总大小字节
juicefs_blockcache_evictDur淘汰缓存块的时间微秒
juicefs_blockcache_readDuration读缓存块的延迟微秒
juicefs_blockcache_write写缓存块的总次数
juicefs_blockcache_writeBytes写缓存块的总大小字节
juicefs_blockcache_writeDuration写缓存块的延迟微秒
juicefs_symlink_cache软链缓存指标汇总,一般不单独参考
juicefs_symlink_cache_<name>各种具体的软链缓存操作指标

分布式缓存

在缓存组中,读数据和写数据都会存在「发送方」和「接收方」的对应指标,下方也称作「服务端」、「客户端」。需要注意,这里的「服务端」指的是缓存组架构中,负责提供缓存服务的那一方,「客户端」指代读取数据的一方。在一个缓存组中,服务端和客户端可能是同一批 JuiceFS 客户端,但如果将缓存组单独部署成「独立缓存集群」,这时候客户端不对外共享自身的缓存数据,那么服务端和客户端就是分离的两批 JuiceFS 客户端。

比方说通过缓存组读取文件时,成员节点既会从其他成员接收数据,也会把自身的缓存数据共享、发送给其他成员。

分布式缓存监控指标中存在着两组互相对照的指标,分别对应不同的应用场景:

  • remotecache_getremotecache_send:客户端的读、服务端的发送
  • remotecache_putremotecache_receive:客户端往分布式缓存写数据、服务端收到的写数据。对于分布式缓存组而言,缓存写请求来自于开启 --fill-group-cache 选项时,客户端的写请求贡献,或者分布式缓存发生节点间数据均衡

cache group metrics

可想而知,正常情况下,如果对所有缓存组成员(同样包含 --no-sharing 节点)的监控指标进行求和,那么 remotecache_sendBytes 的大小应该与 remotecache_getBytes 大致相等。如果发现 remotecache_sendBytes 远大于 remotecache_getBytes,则代表收发存在异常,这时需要关注 remotecache_errors 指标,并且关注客户端日志,定位异常的来源。

名称说明单位
juicefs_remotecache_errors缓存组客户端所有请求的失败数
juicefs_remotecache_get缓存组客户端读数据的请求数
juicefs_remotecache_getBytes缓存组客户端读请求的数据大小字节
juicefs_remotecache_getDuration缓存组客户端读请求延迟微秒
juicefs_remotecache_send缓存组服务端发送数据的请求数
juicefs_remotecache_sendBytes缓存组服务端发送数据的大小字节
juicefs_remotecache_sendDuration缓存组服务端发送数据的延迟,该延迟包含读取本地缓存的延迟(juicefs_blockcache_readDuration)。如果本地缓存没有命中,那么也包含对象存储的请求时间(juicefs_objectDuration_get),如果对象存储响应慢或者存在限速,都会导致该指标增大微秒
juicefs_remotecache_put缓存组客户端写数据的请求数
juicefs_remotecache_putBytes缓存组客户端写请求的数据大小字节
juicefs_remotecache_putDuration缓存组客户端写请求延迟微秒
juicefs_remotecache_receive缓存组服务端接收数据的请求数
juicefs_remotecache_receiveBytes缓存组服务端接收数据的大小字节
juicefs_remotecache_recvDuration缓存组服务端接收数据的延迟微秒

对象存储

名称说明单位
juicefs_object对象存储总请求数
juicefs_object_get对象存储 GetObject 请求数
juicefs_object_put对象存储 PutObject 请求数
juicefs_object_delete对象存储 DeleteObject 请求数
juicefs_object_copy对象存储 CopyObject 请求数
juicefs_object_head对象存储 HeadObject 请求数
juicefs_object_list对象存储 ListObjects 请求数
juicefs_objectDuration对象存储所有请求延迟微秒
juicefs_objectDuration_get对象存储 GetObject 请求延迟微秒
juicefs_objectDuration_getDelay对象存储 GetObject 请求的程序内的排队等待时间,包括因为客户端令牌限速或者--max-downloads 过低导致并发拥堵微秒
juicefs_objectDuration_put对象存储 PutObject 请求延迟微秒
juicefs_objectDuration_putDelay对象存储 PutObject 请求延迟,包含程序内的排队等待时间,包括因为客户端令牌限速或者--max-uploads 过低导致并发拥堵微秒
juicefs_objectDuration_delete对象存储 DeleteObject 请求延迟微秒
juicefs_object_error对象存储请求失败数
juicefs_get_bytes对象存储读取总量字节
juicefs_put_bytes对象存储写入总量字节

数据同步

名称说明单位
juicefs_sync_scanned从源端扫描的所有对象数量
juicefs_sync_handled已经处理过的来自源端的对象数量
juicefs_sync_pending等待同步的对象数量
juicefs_sync_copied已经同步过的对象数量
juicefs_sync_copied_bytes已经同步过的数据总大小字节
juicefs_sync_skipped同步时被跳过的对象数量
juicefs_sync_failed同步时失败的对象数量
juicefs_sync_deleted同步时被删除的对象数量
juicefs_sync_checked同步时校验过 checksum 的对象数量
juicefs_sync_checked_bytes同步时校验过 checksum 的数据总大小字节