Skip to main content

Metrics

JuiceFS provided a Prometheus API for each file system, this page only contains some of the mostly used metrics. For the full metrics list, visit JuiceFS console, navigate to the "Monitor" page, and click "Prometheus API".

tip

Some of the metrics come with multiple subnodes, and are omitted in this section. e.g. juicefs_fuse_ops_lookupjuicefs_fuse_ops_open are all included in juicefs_fuse_ops_<name>.

On the other hand, metrics introduced in this chapter all start with the juicefs_ prefix, this is different in on-prem Grafana data source, for example:

  • juicefs_trash_size is called jfs_stat_trash_size
  • juicefs_operationDuration is called mount_operationDuration

So when you encounter trouble searching for the desired metrics, strip the prefix or suffix and try again.

File system

Labels

NameDescription
namefile system name

Metrics

NameDescriptionUnit
juicefs_sizesize of filesbyte
juicefs_inodesnumber of inodes
juicefs_trash_sizesize of files in Trashbyte
juicefs_trash_filesnumber of files in Trash

Client

Labels

NameDescription
namefile system name
hostclient hostname
ipclient IP address
mountpointpath of mount point

Metrics

Operating system

NameDescriptionUnit
juicefs_uptimeuptimesecond
juicefs_cpuusageoverall CPU usage timemicrosecond
juicefs_memusagecurrent RSS memory usagebyte
juicefs_heapSysTotal memory allocated to the client process, same as Sysbyte
juicefs_heapInuseSame as HeapInusebyte
juicefs_handlesNumber of file handlers (descriptors)
juicefs_threadsNumber of threads in the client process, see ThreadCreateProfile
juicefs_goroutinesNumber of goroutines in the client process
juicefs_gcPauseSame as PauseTotalNsnanosecond

Metadata service

NameDescriptionUnit
juicefs_metaDurationDuration of Metadata requestsmicrosecond
juicefs_metaRequestNumber of Metadata requests
juicefs_metaSum of all meta metrics, not very useful
juicefs_meta_operationsNumber of metadata operations
juicefs_meta_bytes_sentMetadata requests sent trafficbyte
juicefs_meta_bytes_receivedMetadata requests received trafficbyte
juicefs_meta_packets_sentMetadata requests sent packets
juicefs_meta_packets_receivedMetadata requests received packets
juicefs_meta_reconnectsNumber of metadata service reconnects
juicefs_meta_usec_pingPing latency between client and metadata servicemicrosecond
juicefs_meta_dircacheNumber of client memory metadata cache operations
juicefs_meta_dircache_<name>Number of different types of client memory metadata cache operations
juicefs_meta_dircache0_dirsNumber of directories in the client memory metadata cache
juicefs_meta_dircache0_inodesNumber of inodes in the client memory metadata cache

File access

NameDescriptionUnit
juicefs_read_bytesTotal read bytes, different from juicefs_get_bytes, this is counted in the file system levelbyte
juicefs_write_bytesTotal write bytes, different from juicefs_put_bytes, this is counted in the file system levelbyte
juicefs_operationsNumber of file operations
juicefs_operationDurationFile operation latency
juicefs_fuse_opsNumber of file operations, roughly the same as juicefs_operations, but counted by summing up all different operation types
juicefs_fuse_ops_<name>Number of single file operations, e.g. getattrlookupopen
juicefs_openfilesNumber of opened files
juicefs_bgjobsNumber of currently running background jobs
juicefs_bgjobs_compactNumber of currently running compaction in background jobs
juicefs_bgjobs_deleteNumber of currently running Trash deletion in background jobs
juicefs_compactsNumber of successful compactions
juicefs_compact_bytesCompaction trafficbyte

Buffer

NameDescriptionUnit
juicefs_totalBufferUsedUsed buffer sizebyte
juicefs_readBufferUsedUsed read buffer sizebyte

Local cache

NameDescriptionUnit
juicefs_blockcache_blocksNumber of cache blocks
juicefs_blockcache_bytesSize of cache blocksbyte
juicefs_blockcache_hitsNumber of cache block hits
juicefs_blockcache_hitBytesBytes of cache block hitsbyte
juicefs_blockcache_missNumber of missed cache block hits
juicefs_blockcache_missBytesSize of missed cache block hitsbyte
juicefs_blockcache_evictNumber of cache block evictions
juicefs_blockcache_evictBytesSize of cache block evictionsbyte
juicefs_blockcache_evictDurDuration of cache block evictionsmicrosecond
juicefs_blockcache_readDurationDuration of cache block readsmicrosecond
juicefs_blockcache_writeNumber of cache block writes
juicefs_blockcache_writeBytesSize of cache block writesbyte
juicefs_blockcache_writeDurationDuration of cache block writesmicrosecond
juicefs_symlink_cacheSum of symbolic link cache related metrics, not very useful
juicefs_symlink_cache_<name>Metrics of different types of symbolic link cache operations

Distributed cache

In the cache group, there will be corresponding metrics for "sender" and "receiver" for reading data and writing data, also called "server" and "client" in later descriptions, note that the phrase "server" in this context refers to the party serving the cache blocks in the cache group, and the phrase "client" stands for the party receiving the cache blocks. In a cache group, servers and clients can actually be the same set of JuiceFS clients, but if the cache group is deployed as a dedicated cache cluster, then in this architecture, clients do not share their cache, hence servers and clients are two separate sets of JuiceFS clients.

For example, when reading files through a cache group, member nodes will not only receive data from other members, but also share and send their own cache data to other members.

There are two sets of mutually contrasting metrics in distributed cache metrics, corresponding to different application scenarios:

  • remotecache_get and remotecache_send: correspond to the scenario where the client reads data from the distributed cache
  • remotecache_receive and remotecache_put: correspond to the scenario where the client writes data to the distributed cache (the --fill-group-cache option needs to be enabled), or the scenario of balancing data in the distributed cache.

cache group metrics

Therefore, under normal circumstances, if you sum up metrics of all cache group members (including --no-sharing clients), the size of remotecache_sendBytes should be roughly equal to remotecache_getBytes. If it is found that remotecache_sendBytes is much larger that remotecache_getBytes, it means that there are errors during data transfer, check remotecache_errors metric and client logs for causes.

NameDescriptionUnit
juicefs_remotecache_errorsNumber of all failed distributed cache requests
juicefs_remotecache_getNumber of requests for cache group client to read data
juicefs_remotecache_getBytesSize of cache group client read requestbyte
juicefs_remotecache_getDurationLatency of cache group client read requestmicrosecond
juicefs_remotecache_sendNumber of requests for data sent by the cache group server
juicefs_remotecache_sendBytesSize of the data sent by the cache group serverbyte
juicefs_remotecache_sendDurationLatency of the cache group server send requests, including the latency in reading the local cache (juicefs_blockcache_readDuration). If there is no hit in the local cache, it also includes the request time of the object storage (juicefs_objectDuration_get). If the object storage response is slow or there is a speed limit, this metric will increase.microsecond
juicefs_remotecache_putNumber of requests for cache group client to write data
juicefs_remotecache_putBytesSize of cache group client write requestbyte
juicefs_remotecache_putDurationLatency of cache group client write requestmicrosecond
juicefs_remotecache_receiveNumber of received write requests for the cache group server
juicefs_remotecache_receiveBytesSize of the data received by the cache group serverbyte
juicefs_remotecache_recvDurationLatency of the write requests received for cache group servermicrosecond

Object storage

NameDescriptionUnit
juicefs_objectNumber of total object storage requests
juicefs_object_getNumber of GetObject requests
juicefs_object_putNumber of PutObject requests
juicefs_object_deleteNumber of DeleteObject requests
juicefs_object_copyNumber of CopyObject requests
juicefs_object_headNumber of HeadObject requests
juicefs_object_listNumber of ListObjects requests
juicefs_objectDurationDuration of all object storage requestsmicrosecond
juicefs_objectDuration_getDuration of GetObject requestsmicrosecond
juicefs_objectDuration_getDelayGetObject requests wait, wait is caused by client token speed control or congestion caused by low --max-downloadsmicrosecond
juicefs_objectDuration_putDuration of PutObject requestsmicrosecond
juicefs_objectDuration_putDelayPutObject requests wait, wait is caused by client token speed control or congestion caused by low --max-uploadsmicrosecond
juicefs_objectDuration_deleteDuration of DeleteObject requestsmicrosecond
juicefs_object_errorNumber of object storage requests failures
juicefs_get_bytesSize of GET requestsbyte
juicefs_put_bytesSize of PUT requestsbyte

Data synchronization

NameDescriptionUnit
juicefs_sync_scannedNumber of all objects scanned from the source
juicefs_sync_handledNumber of objects from the source that have been processed
juicefs_sync_pendingNumber of objects waiting to be synchronized
juicefs_sync_copiedNumber of objects that have been synchronized
juicefs_sync_copied_bytesTotal size of data that has been synchronizedbyte
juicefs_sync_skippedNumber of objects that skipped during synchronization
juicefs_sync_failedNumber of objects that failed during synchronization
juicefs_sync_deletedNumber of objects that deleted during synchronization
juicefs_sync_checkedNumber of objects that have been verified by checksum during synchronization
juicefs_sync_checked_bytesTotal size of data that has been verified by checksum during synchronizationbyte