度量指标系统

Slack Docker Pulls GitHub edit source

度量指标信息可以让用户深入了解集群上运行的任务。这些信息对于监控和调试是宝贵的资源。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 获取更多信息。