监控指标概述
Goosefs 监控指标记录了客户端、集群、Master 节点、 Worker 节点、进程的运行状态。
1. 按照统计维度,监控指标可以分成以下四大类:
Gauge:记录一个事件的瞬时数值,该数值可增可减,一般用来反映系统运行状态。
Meter:统计事件频率,即固定时间周期内事件的发生次数,如每分钟、每5分钟,每15分钟内的请求数。
Counter:统计事件发生的总次数,与 Gauge 不同的点在于该数值只增不减,一般用来记录访问请求次数等数据。
Timer:统计事件的频率和分布情况,该指标可以认为 Histogram 指标和 Meter 指标的结合,Histogram 指标用于统计耗时分布,Meter 指标用于统计 QPS;如果需要同时统计频率和耗时的时候可以使用该指标。
注意
2. 按照数据采集来源,监控指标可以分为以下两大类:
集群状态指标:集群状态指标包括了 Cluster、Master 和 Worker 维度的监控数据,这些监控指标可以反应整个集群及集群下的每个节点的运行状态。这类指标的记录格式如下:
Master.[metricName].[tag1].[tag2]...[Worker_ip].[metricName].[tag1].[tag2]...
进程处理指标:进程处理指标用于详细记录集群中的请求次数、延迟、CPU 消耗、RPC 调用次数等信息,这类指标可以推送到第三方监控工具中展示。这类指标的记录格式如下:
[processType].[metricName].[tag1].[tag2]...[hostName]
Cluster 监控指标
GooseFS 集群化部署时,客户端和 Worker 节点会周期性地通过心跳将监控指标发送到 Master 节点,可以通过 goosefs.master.worker.heartbeat.interval 和 goosefs.user.metrics.heartbeat.interval 分别设置 Worker 节点和客户端监控指标的心跳周期。
Cluster 级别的监控指标列表如下:
指标名称 | 指标类型 | 指标描述 |
Cluster.BytesReadDomain | COUNTER | GooseFS集群Worker节点的总DomainSocket读流量数值。 |
Cluster.BytesReadDomainThroughput | GAUGE | GooseFS集群Worker节点的总DomainSocket读带宽数值。 |
Cluster.BytesReadLocal | COUNTER | GooseFS集群客户端节点的总本地短路读流量数值。 |
Cluster.BytesReadLocalThroughput | GAUGE | GooseFS集群客户端节点的总本地短路读吞吐数值。 |
Cluster.BytesReadPerUfs | COUNTER | GooseFS集群Worker节点从某个指定的底层存储读数据的流量数值。 |
Cluster.BytesReadRemote | COUNTER | GooseFS集群Worker节点的总Remote读流量数值,该数值等于只包含GooseFS集群的缓存读流量和从底层存储读流量,不包含短路读流量及DomainSocket读流量。 |
Cluster.BytesReadRemoteThroughput | GAUGE | GooseFS集群Worker节点的总Remote读带宽数值,该数值等于只包含GooseFS集群的缓存读带宽和从底层存储读带宽,不包含短路读带宽及DomainSocket读带宽。 |
Cluster.BytesReadUfsAll | COUNTER | GooseFS集群Worker节点从所有底层存储读数据的流量数值。 |
Cluster.BytesReadUfsThroughput | GAUGE | GooseFS集群Worker节点从所有底层存储读数据的吞吐数值。 |
Cluster.BytesWrittenDomain | COUNTER | GooseFS集群Worker节点的总DomainSocket写流量数值。 |
Cluster.BytesWrittenDomainThroughput | GAUGE | GooseFS集群Worker节点的总DomainSocket写带宽数值。 |
Cluster.BytesWrittenLocal | COUNTER | GooseFS集群Worker节点的总本地短路写流量数值。 |
Cluster.BytesWrittenLocalThroughput | GAUGE | GooseFS集群Worker节点的总本地短路写吞吐数值。 |
Cluster.BytesWrittenPerUfs | COUNTER | GooseFS集群Worker节点往某个指定的底层存储写数据的流量数值。 |
Cluster.BytesWrittenRemote | COUNTER | GooseFS集群Worker节点的总Remote写流量数值,该数值等于只包含GooseFS集群的写缓存流量和往底层存储写数据流量,不包含短路写流量及DomainSocket写流量。 |
Cluster.BytesWrittenRemoteThroughput | GAUGE | GooseFS集群Worker节点的总Remote写吞吐数值,该数值等于只包含GooseFS集群的写缓存吞吐和往底层存储写数据吞吐,不包含短路写吞吐及DomainSocket写吞吐。 |
Cluster.BytesWrittenUfsAll | COUNTER | GooseFS集群Worker节点从所有底层存储写数据的流量数值。 |
Cluster.BytesWrittenUfsThroughput | GAUGE | GooseFS集群Worker节点从所有底层存储写数据的吞吐数值。 |
Cluster.CapacityFree | GAUGE | GooseFS集群Worker节点的总可用缓存容量数值。 |
Cluster.CapacityTotal | GAUGE | GooseFS集群Worker节点的总缓存容量数值。 |
Cluster.CapacityUsed | GAUGE | GooseFS集群Worker节点的总已用缓存容量数值。 |
Cluster.RootUfsCapacityFree | GAUGE | GooseFS集群远端存储的总可用容量数值。 |
Cluster.RootUfsCapacityTotal | GAUGE | GooseFS集群远端存储的总容量数值。 |
Cluster.RootUfsCapacityUsed | GAUGE | GooseFS集群远端存储的总已用容量数值。 |
Cluster.Workers | GAUGE | GooseFS集群的总Worker节点数量。 |
Master 监控指标
Master 监控指标有两大类,其一是默认指标,Master 运行过程中会默认记录这些指标;其二是动态监控指标。默认的 Master 监控指标如下:
指标名称 | 指标类型 | 指标描述 |
Master.CompleteFileOps | COUNTER | CompleteFile操作的总请求次数。 |
Master.CreateDirectoryOps | COUNTER | CreateDirectory操作的总请求次数。 |
Master.CreateFileOps | COUNTER | CreateFile操作的总请求次数。 |
Master.DeletePathOps | COUNTER | Delete操作的总请求次数。 |
Master.DirectoriesCreated | COUNTER | CreateDirectory操作的总成功请求次数。 |
Master.EdgeCacheEvictions | GAUGE | 已清理的元数据EdgeCache。EdgeCache负责管理元数据从(parentId,childName)到childId的映射。 |
Master.EdgeCacheHits | GAUGE | 已命中的元数据EdgeCache。 EdgeCache负责管理元数据从(parentId,childName)到childId的映射。 |
Master.EdgeCacheLoadTimes | GAUGE | 元数据EdgeCache的加载次数。 EdgeCache负责管理元数据从(parentId,childName)到childId的映射。 |
Master.EdgeCacheMisses | GAUGE | 未命中的元数据EdgeCache。EdgeCache负责管理元数据从(parentId,childName)到childId的映射。 |
Master.EdgeCacheSize | GAUGE | 元数据EdgeCache的总大小。 EdgeCache负责管理元数据从(parentId,childName)到childId的映射。 |
Master.EdgeLockPoolSize | GAUGE | Master节点EdgeLockPool的大小。 |
Master.FileBlockInfosGot | COUNTER | GetFileBlockInfo操作的总请求次数 |
Master.FileInfosGot | COUNTER | GetFileInfo操作的总成功请求次数。 |
Master.FilesCompleted | COUNTER | CompleteFile的总成功请求次数。 |
Master.FilesCreated | COUNTER | CreateFile的总成功请求次数。 |
Master.FilesFreed | COUNTER | FreeFile的总成功请求次数。 |
Master.FilesPersisted | COUNTER | 已持久化到底层存储的总文件数。 |
Master.FilesPinned | GAUGE | 当前已锁定的缓存文件数。 |
Master.FreeFileOps | COUNTER | FreeFile操作的总请求次数。 |
Master.GetFileBlockInfoOps | COUNTER | GetFileBlockInfo的总请求次数。 |
Master.GetFileInfoOps | COUNTER | GetFileInfo的总请求次数。 |
Master.GetNewBlockOps | COUNTER | GetNewBlock的总请求次数。 |
Master.InodeCacheEvictions | GAUGE | 元数据缓存中inodes的总淘汰次数。 |
Master.InodeCacheHits | GAUGE | 元数据缓存中inodes的总命中次数。 |
Master.InodeCacheLoadTimes | GAUGE | 元数据缓存中inodes的总加载次数。 |
Master.InodeCacheMisses | GAUGE | 元数据缓存中inodes的总Miss次数。 |
Master.InodeCacheSize | GAUGE | 已缓存的Inodes总数。 |
Master.InodeLockPoolSize | GAUGE | Master inode 的lock pool大小。 |
Master.JournalFlushFailure | COUNTER | journal flush 的总失败次数。 |
Master.JournalFlushTimer | TIMER | journal flush 的计时器统计次数。 |
Master.JournalGainPrimacyTimer | TIMER | journal gain primacy 的计时器统计次数。 |
Master.LastBackupEntriesCount | GAUGE | 元数据备份的元数据日志中所记录的元数据条目总数。该参数用于记录元数据的备份情况,并在需要时作为恢复节点的参考。 |
Master.LastBackupRestoreCount | GAUGE | 元数据恢复时记录的元数据条目总数。该参数用于记录元数据的恢复情况。 |
Master.LastBackupRestoreTimeMs | GAUGE | 元数据恢复的处理时长。 |
Master.LastBackupTimeMs | GAUGE | 元数据备份的处理时长。 |
Master.ListingCacheSize | GAUGE | Master节点的listing cache大小。 |
Master.MountOps | COUNTER | Mount操作的总请求次数。 |
Master.NewBlocksGot | COUNTER | GetNewBlock操作的总成功请求次数。 |
Master.PathsDeleted | COUNTER | Delete操作的总成功请求次数。 |
Master.PathsMounted | COUNTER | Mount操作的总成功请求次数。 |
Master.PathsRenamed | COUNTER | Rename操作的总成功请求次数。 |
Master.PathsUnmounted | COUNTER | Unmount操作的总成功请求次数。 |
Master.RenamePathOps | COUNTER | Rename操作的总请求次数。 |
Master.SetAclOps | COUNTER | SetAcl操作的总请求次数。 |
Master.SetAttributeOps | COUNTER | SetAttribute的总请求次数。 |
Master.TotalPaths | GAUGE | GooseFS命名空间中的总文件和目录数量。 |
Master.UfsJournalCatchupTimer | TIMER | GooseFS底层存储的journal catchup计时统计次数。 |
Master.UfsJournalFailureRecoverTimer | TIMER | GooseFS底层存储的journal failure recover计时统计次数。 |
Master.UfsJournalInitialReplayTimeMs | GAUGE | GooseFS底层存储的journal initial replay处理时长。 |
Master.UnmountOps | COUNTER | Unmount操作的总请求次数。 |
动态指标如下:
指标名称 | 指标类型 | 指标描述 |
Master.CapacityTotalTier | GAUGE | GooseFS各缓存层级的容量大小。 |
Master.CapacityUsedTier | GAUGE | GooseFS各缓存层级的已用容量大小。 |
Master.CapacityFreeTier | GAUGE | GooseFS各缓存层级的可用容量大小。 |
Master.UfsSessionCount-Ufs: | COUNTER | GooseFS 当前已打开的 UFS 会话数量。 |
Master.PerUfsOp.UFS: | TIMER | GooseFS 主 Master 节点对 UFS 的所有操作数量。 |
Worker 监控指标
Worker 监控指标有两大类,其一是默认指标,Worker 运行过程中会默认记录这些指标;其二是动态监控指标。默认的 Worker 监控指标如下:
指标名称 | 指标类型 | 指标描述 |
Worker.AsyncCacheDuplicateRequests | COUNTER | 指定Worker节点收到的重复异步缓存请求的总数。 |
Worker.AsyncCacheFailedBlocks | COUNTER | 指定Worker节点异步缓存失败的block数量。 |
Worker.AsyncCacheRemoteBlocks | COUNTER | 需要从远端资源中异步缓存的block数量。 |
Worker.AsyncCacheRequests | COUNTER | 指定Worker节点收到的异步缓存请求总数。 |
Worker.AsyncCacheSucceededBlocks | COUNTER | 指定Worker节点收到的成功的异步缓存请求总数。 |
Worker.AsyncCacheUfsBlocks | COUNTER | 需要从本地资源中异步缓存的block数量。 |
Worker.BlockRemoverBlocksToRemovedCount | COUNTER | 指定Worker节点被asynchronous block remover清理的block数量。 |
Worker.BlockRemoverRemovingBlocksSize | GAUGE | 指定Worker节点正在被asynchronous block remover清理的block数量。 |
Worker.BlockRemoverTryRemoveBlocksSize | GAUGE | 指定Worker节点已经被asynchronous block remover清理的block数量。 |
Worker.BlockRemoverTryRemoveCount | COUNTER | 指定Worker节点即将被asynchronous block remover清理的block数量。 |
Worker.BlocksAccessed | COUNTER | 指定Worker节点所有数据块被访问的总次数。 |
Worker.BlocksCached | GAUGE | 指定Worker节点中缓存的数据块总数。 |
Worker.BlocksCancelled | COUNTER | 指定Worker节点中释放的临时数据块总数。 |
Worker.BlocksDeleted | COUNTER | 指定Worker节点中被外部请求删除的数据块总数。 |
Worker.BlocksEvicted | COUNTER | 指定Worker节点中淘汰的数据块总数。 |
Worker.BlocksLost | COUNTER | 指定Worker节点中丢失的数据块总数,包含。 |
Worker.BlocksPromoted | COUNTER | 指定Worker节点中数据块转移到不同缓存层的次数。 |
Worker.BytesReadDomain | COUNTER | 指定Worker节点中被domain read的总读流量。 |
Worker.BytesReadDomainThroughput | METER | 指定Worker节点中被domain read的总读带宽。 |
Worker.BytesReadPerUfs | COUNTER | 指定Worker节点从底层存储中读取文件的流量数值。 |
Worker.BytesReadRemote | COUNTER | 指定Worker节点的Remote读流量数值,该数值等于只包含该节点的读缓存流量和从底层存储读数据流量,不包含短路读流量及DomainSocket的读流量。 |
Worker.BytesReadRemoteThroughput | METER | 指定Worker节点的Remote读吞吐数值,该数值等于只包含该节点的读缓存吞吐和从底层存储读数据吞吐,不包含短路读吞吐及DomainSocket的读吞吐。 |
Worker.BytesReadUfsThroughput | METER | 指定Worker节点从所有底层存储中读数据吞吐数值。 |
Worker.BytesWrittenDomain | COUNTER | 指定Worker节点中,通过Domain socket方式写入GooseFS的写流量数值。 |
Worker.BytesWrittenDomainThroughput | METER | 指定Worker节点中,通过Domain socket方式写入GooseFS的写吞吐数值。 |
Worker.BytesWrittenPerUfs | COUNTER | 指定Worker节点往指定底层存储中写数据吞吐数值。 |
Worker.BytesWrittenRemote | COUNTER | 指定Worker节点的Remote写流量数值,该数值等于只包含该节点的写缓存流量和往底层存储写数据流量,不包含短路写流量及DomainSocket的写流量。 |
Worker.BytesWrittenRemoteThroughput | METER | 指定Worker节点的Remote写吞吐数值,该数值等于只包含该节点的写缓存吞吐和往底层存储写数据吞吐,不包含短路写吞吐及DomainSocket的写吞吐。 |
Worker.BytesWrittenUfsThroughput | METER | 指定Worker节点往所有底层存储中写数据吞吐数值。 |
Worker.CapacityFree | GAUGE | 指定Worker节点上的可用缓存容量数值。 |
Worker.CapacityTotal | GAUGE | 指定Worker节点上的总缓存容量数值。 |
Worker.CapacityUsed | GAUGE | 指定Worker节点上的已用缓存容量数值。 |
动态监控指标如下:
指标名称 | 指标类型 | 指标描述 |
Worker.UfsSessionCount-Ufs | GAUGE | 指定Worker节点上已打开的UFS会话数量。 |
客户端监控指标
客户端监控指标会通过指定的用户 ID 或者客户端的 IP 维度汇聚,如果已经在 GooseFS 中注册好用户 ID,则会优先按照用户 ID 维度汇聚。用户 ID 可以通过 goosefs.user.app.id 指定。客户端监控指标如下:
指标名称 | 指标类型 | 指标描述 |
Client.BytesReadLocal | COUNTER | 指定Client节点从本地存储短路读流量数值。 |
Client.BytesReadLocalThroughput | METER | 指定Client节点从本地存储短路读吞吐数值。 |
Client.BytesWrittenLocal | COUNTER | 指定Client节点往本地存储短路写流量数值。 |
Client.BytesWrittenLocalThroughput | METER | 指定Client节点往本地存储短路写吞吐数值。 |
Client.BytesWrittenUfs | COUNTER | 指定Client节点往GooseFS底层存储的写流量数值。 |
Client.CacheBytesEvicted | METER | 指定Client节点淘汰的数据量。 |
Client.CacheBytesReadCache | METER | 指定Client节点缓存命中,从Client节点中读取的缓存数据量。 |
Client.CacheBytesReadExternal | METER | 指定Client节点缓存未命中,从其他存储中读取的数据量。 |
Client.CacheBytesRequestedExternal | METER | 指定Client节点缓存未命中,从其他存储中请求的数据量。由于chunk读情况的存在,该数值小于等于Client.CacheBytesReadExternal。 |
Client.CacheBytesWrittenCache | METER | 往指定Client节点缓存中写入数据的流量。 |
Client.CacheCleanupGetErrors | COUNTER | 清理失败的读缓存请求时的失败次数。 |
Client.CacheCleanupPutErrors | COUNTER | 清理失败的写缓存请求时的失败次数。 |
Client.CacheCreateErrors | COUNTER | 指定Client节点创建缓存的失败次数。 |
Client.CacheDeleteErrors | COUNTER | 指定Client节点删除缓存的失败次数。 |
Client.CacheGetErrors | COUNTER | 指定Client节点读取缓存的失败次数。 |
Client.CacheGetNotReadyErrors | COUNTER | 指定Client节点读取页时,由于缓存未就绪导致的失败次数。 |
Client.CacheHitRate | GAUGE | 指定Client节点的缓存命中率,该参数等于从缓存中读请求次数/总请求次数。 |
Client.CachePages | COUNTER | 指定Client节点的页缓存数量。 |
Client.CachePagesEvicted | METER | 指定Client节点中已淘汰的页缓存数量。 |
Client.CachePutErrors | COUNTER | 指定Client节点写入缓存数据的失败次数。 |
Client.CacheSpaceAvailable | GAUGE | 指定Client节点中可用的字节数。 |
Client.CacheSpaceUsed | GAUGE | 指定Client节点中已用的字节数。 |
Client.CacheSpaceUsedCount | COUNTER | 指定Client节点中可用的字节计数值。 |
Client.CacheState | COUNTER | 指定Client节点中的缓存状态,0(不可用),1(只读),2(只写) |
Client.CacheUnremovableFiles | COUNTER | 指定Client节点中不可用的缓存数量。 |
进程监控指标
进程监控指标可以在 Cluster、Master 和 Worker 中收集并汇聚。主要包括 JVM 信息、垃圾回收信息、内存占用信息三大类。
JVM 信息包括以下内容:
指标名称 | 指标描述 |
name | JVM 名称 |
uptime | JVM 更新时间 |
vendor | 当前的 JVM vendor |
垃圾回收监控指标包括以下内容:
指标名称 | 指标描述 |
PS-MarkSweep.count | Mark 和 Sweep 的总数。 |
PS-MarkSweep.time | Mark 和 Sweep 的耗时。 |
PS-Scavenge.count | Scavenge 次数。 |
PS-Scavenge.time | Scavenge 时间。 |
内存占用监控指标记录了内存使用情况的概述和详情信息,部分监控指标如下:
指标名称 | 指标描述 |
total.committed | JVM 可保证使用的内存量。 |
total.init | JVM 可用的内存量。 |
total.max | JVM 的最大可用内存量。 |
total.used | 当前已用的 JVM 内存量。 |
heap.committed | JVM 可保证使用的堆内存大小。 |
heap.init | JVM 可用的堆内存大小。 |
heap.max | JVM 的最大可用堆内存大小。 |
heap.usage | 当前正在使用的 JVM 堆内存量。 |
heap.used | 当前已用的 JVM 堆内存量。 |
pools.Code-Cache.used | 内存池中用于编译和存储本地代码的内存大小。 |
pools.Compressed-Class-Space.used | Used memory of collection usage from the pool from which memory is use for class metadata 内存池中用于收集用途的已用内存大小,该内存用于类元数据。 |
pools.PS-Eden-Space.used | 内存池中用于收集用途的已用内存大小,该内存用于大部分对象的初始化。 |
pools.PS-Survivor-Space.used | 内存池中用于收集用途的已用内存大小,该内存池包含在Eden空间垃圾回收后幸存的对象。 |