度量指标系统
度量指标信息可以让用户深入了解集群上运行的任务。这些信息对于监控和调试是宝贵的资源。Alluxio有一个基于Coda Hale Metrics库的可配置的度量指标系统。度量指标系统中,度量指标源就是该度量指标信息生成的地方,度量指标槽会使用由度量指标源生成的记录。度量指标检测系统会周期性地投票决定度量指标源,并将度量指标记录传递给度量指标槽。
Alluxio的度量指标信息被分配到各种相关Alluxio组件的实例中。每个实例中,用户可以配置一组度量指标槽,来决定报告哪些度量指标信息。现在支持下面的实例:
- Master: Alluxio独立(standalone)Master进程。
- Worker: Alluxio独立(standalone)Worker进程。
- Client: Alluxio用户程序。
每个实例可以报告零个或多个度量指标槽。
- ConsoleSink: 输出控制台的度量值。
- CsvSink: 每隔一段时间将度量指标信息导出到CSV文件中。
- JmxSink: 查看JMX控制台中注册的度量信息。
- GraphiteSink: 给Graphite服务器发送度量信息。
- MetricsServlet: 添加Web UI中的servlet,作为JSON数据来为度量指标数据服务。
配置
度指标量系统可以通过配置文件进行配置,Alluxio中该文件默认位于$ALLUXIO_HOME/conf/metrics.properties
。自定义文件位置可以通过alluxio.metrics.conf.file
配置项来指定。Alluxio在conf目录下提供了一个metrics.properties.template
文件,其包括所有可配置属性。默认情况下,MetricsServlet是生效的,你可以发送HTTP请求
“/metrics/json/
“来获取一个以JSON格式表示的所有已注册度量信息的快照。
支持的度量指标信息
度量指标信息可以被分为:
- 常规信息: 集群的整体度量信息(如:CapacityTotal)。
- 逻辑操作: 执行的操作数量(如:FilesCreated)。
- RPC调用: 每个操作的RPC调用次数(如:CreateFileOps)。
下面详细展示了可用的度量指标信息。
Master
每个master度量指标都会以master
开头,例如:
master.CapacityTotal
常规信息
- CapacityTotal: 文件系统总容量(以字节为单位)。
- CapacityUsed: 文件系统中已使用的容量(以字节为单位)。
- CapacityFree: 文件系统中未使用的容量(以字节为单位)。
- PathsTotal: 文件系统中文件和目录的数目。
- UnderFsCapacityTotal: 底层文件系统总容量(以字节为单位)。
- UnderFsCapacityUsed: 底层文件系统中已使用的容量(以字节为单位)。
- UnderFsCapacityFree: 底层文件系统中未使用的容量(以字节为单位)。
- Workers: Worker的数目。
逻辑操作
- DirectoriesCreated: 创建的目录数目。
- FileBlockInfosGot: 被检索的文件块数目。
- FileInfosGot: 被检索的文件数目。
- FilesCompleted: 完成的文件数目。
- FilesCreated: 创建的文件数目。
- FilesFreed: 释放掉的文件数目。
- FilesPersisted: 持久化的文件数目。
- FilesPinned: 被固定的文件数目。
- NewBlocksGot: 获得的新数据块数目。
- PathsDeleted: 删除的文件和目录数目。
- PathsMounted: 挂载的路径数目。
- PathsRenamed: 重命名的文件和目录数目。
- PathsUnmounted: 未被挂载的路径数目。
RPC调用
- CompleteFileOps: CompleteFile操作的数目。
- CreateDirectoryOps: CreateDirectory操作的数目。
- CreateFileOps: CreateFile操作的数目。
- DeletePathOps: DeletePath操作的数目。
- FreeFileOps: FreeFile操作的数目。
- GetFileBlockInfoOps: GetFileBlockInfo操作的数目。
- GetFileInfoOps: GetFileInfo操作的数目。
- GetNewBlockOps: GetNewBlock操作的数目。
- MountOps: Mount操作的数目。
- RenamePathOps: RenamePath操作的数目。
- SetStateOps: SetState操作的数目。
- UnmountOps: Unmount操作的数目。
Worker
每个worker的度量指标都会以worker的地址开头。例如某个名为
192_168_1_4.CapacityTotal
的指标就是地址为192.168.1.4的worker的度量指标。
常规信息
- CapacityTotal: 该Worker的总容量(以字节为单位)。
- CapacityUsed: 该Worker已使用的容量(以字节为单位)。
- CapacityFree: 该Worker未使用的容量(以字节为单位)。
逻辑操作
- BlocksAccessed: 访问的数据块数目。
- BlocksCached: 被缓存的数据块数目。
- BlocksCanceled: 被取消的数据块数目。
- BlocksDeleted: 被删除的数据块数目。
- BlocksEvicted: 被替换的数据块数目。
- BlocksPromoted: 被提升到内存的数据块数目。
- BytesReadRemote: 通过该worker从Alluxio存储读取的数据量,单位为byte。
- BytesWrittenRemote: 通过该worker写到Alluxio存储的数据量,单位为byte。
- BytesReadUfs-UFS:${UFS}: 通过该worker从指定UFS读取的数据量,单位为byte。
- BytesWrittenUfs-UFS:${UFS}: 通过该worker写到指定UFS的数据量,单位为byte。
Client
常规信息
- NettyConnectionOpen: 当前Netty网络连接的数目。
逻辑操作
- BytesReadRemote: 远程读取的字节数目。
- BytesWrittenRemote: 远程写入的字节数目。
- BytesReadUfs: 从ufs中读取的字节数目。
- BytesWrittenUfs: 写入ufs的字节数目。
JVM 指标
您可以以 Java agent 的方式运行 jvm_exporter
来获取JVM相关指标。
下载 jmx_prometheus_javaagent-0.16.0.jar 并运行:
java -javaagent:./jmx_prometheus_javaagent-0.16.0.jar=8080:config.yaml -jar yourJar.jar
您可以在 http://localhost:8080/metrics 访问指标。
配置文件是 YAML 格式,为了快速使用,可以创建空白配置文件,您也可以访问 jmx_exporter 获取更多信息。