Alluxio监控系统

指标提供了对集群中正在发生的事情的洞察力。 它们是用于监视和调试的宝贵资源。 Alluxio 有一个基于 Coda Hale 指标库的可配置指标系统。 在度量系统中,源生成度量,汇使用这些度量。 度量系统定期轮询源并将度量记录传递给接收器。

Alluxio 的指标被划分为对应于 Alluxio 组件的不同实例。 在每个实例中,用户可以配置一组向其报告指标的接收器。 目前支持以下实例:

  • Master:Alluxio主进程。
  • Worker:Alluxio 工作进程。
  • 客户端:任何带有 Alluxio 客户端库的进程。

当集群以高可用性运行时,默认情况下备用主节点不提供指标。 设置 alluxio.standby.master.metrics.sink.enabled=true 让备用 master 也提供度量。

指标类型

每个指标属于以下指标类型之一:

  • Gauge:记录一个值
  • Meter:测量事件随时间变化的速率(例如,“每分钟请求数”)
  • 计数器:测量事件发生的次数
  • 计时器:测量调用特定事件的速率及其持续时间的分布

有关指标类型的更多详细信息,请参阅指标库文档

指标接收器配置

接收器指定指标传送到的位置。 每个实例都可以向零个或多个接收器报告。

  • PrometheusMetricsServlet:在 Web UI 中添加一个 servlet 以提供 Prometheus 格式的指标数据。

  • ConsoleSink:将指标值输出到控制台。

  • CsvSink:定期将指标数据导出到 CSV 文件。

  • JmxSink:注册指标以在 JMX 控制台中查看。

  • GraphiteSink:将指标发送到 Graphite 服务器。

  • MetricsServlet:在 Web UI 中添加一个 servlet,以将指标数据作为 JSON 数据提供。

指标系统是通过一个配置文件配置的,Alluxio 希望它出现在 ${ALLUXIO_HOME}/conf/metrics.properties 中。 可以通过 alluxio.metrics.conf.file 配置属性指定自定义文件位置。 参考 ${ALLUXIO_HOME}/conf/metrics.properties.template 了解所有可能的接收器特定配置。 在 Kubernetes 上配置 Metrics 系统,参考 Metrics On Kubernetes

Alluxio leading master 发出其实例指标和集群范围聚合指标的摘要。

默认 HTTP JSON 接收器

先决条件

Alluxio leading master 和 workers:无先决条件,默认开启

Alluxio 独立 Fuse 进程:在启动独立 Fuse 进程之前,在 ${ALLUXIO_HOME}/conf/alluxio-site.properties 中将 alluxio.fuse.web.enabled 设置为 true。

# Enable PrometheusMetricsServlet
sink.prometheus.class=alluxio.metrics.sink.PrometheusMetricsServlet

如果 Alluxio 部署在集群中,则需要将此文件分发到所有节点。 重启 Alluxio 服务器以激活新的配置更改。

要在 Alluxio 独立 Fuse 进程中启用 Prometheus Sink Setup,请在启动独立 Fuse 进程之前在 ${ALLUXIO_HOME}/conf/alluxio-site.properties 中将 alluxio.fuse.web.enabled 设置为 true。

使用

您可以向目标 Alluxio 进程的 /metrics/prometheus/ 发送 HTTP 请求,以获取 Prometheus 格式的指标快照。

# Get the metrics in Prometheus format from Alluxio leading master or workers or job service or standalone fuse
$ curl <LEADING_MASTER_HOSTNAME>:<MASTER_WEB_PORT>/metrics/prometheus/
$ curl <WORKER_HOSTNAME>:<WORKER_WEB_PORT>/metrics/prometheus/
$ curl <LEADING_JOB_MASTER_HOSTNAME>:<JOB_MASTER_WEB_PORT>/metrics/prometheus/
$ curl <JOB_WORKER_HOSTNAME>:<JOB_WORKER_WEB_PORT>/metrics/prometheus/
$ curl <FUSE_WEB_HOSTNAME>:<FUSE_WEB_PORT>/metrics/prometheus/

# For example, get the local master metrics with its default web port 19999
$ curl 127.0.0.1:19999/metrics/prometheus/
# Get the local worker metrics with its default web port 30000
$ curl 127.0.0.1:30000/metrics/prometheus/
# Get the local job master metrics with its default web port 20002
$ curl 127.0.0.1:20002/metrics/prometheus/
# Get the local job worker metrics with its default web port 30003
$ curl 127.0.0.1:30003/metrics/prometheus/
# Get the local standalone Fuse process metrics with its default web port 49999
$ curl 127.0.0.1:49999/metrics/prometheus/

您现在可以将 Grafana 或 Datadog 等平台定向到这些 HTTP 端点,并以 Prometheus 格式读取指标。

或者,您可以使用此示例 prometheus.yml 配置 Prometheus 客户端以读取端点。 建议将其与 Grafana 连接。

scrape_configs:
  - job_name: "alluxio master"
      metrics_path: '/metrics/prometheus/'
      static_configs:
      - targets: [ '<LEADING_MASTER_HOSTNAME>:<MASTER_WEB_PORT>' ]
  - job_name: "alluxio worker"
      metrics_path: '/metrics/prometheus/'
      static_configs:
      - targets: [ '<WORKER_HOSTNAME>:<WORKER_WEB_PORT>' ]
  - job_name: "alluxio job master"
      metrics_path: '/metrics/prometheus/'
      static_configs:
      - targets: [ '<LEADING_JOB_MASTER_HOSTNAME>:<JOB_MASTER_WEB_PORT>' ]
  - job_name: "alluxio job worker"
      metrics_path: '/metrics/prometheus/'
      static_configs:
      - targets: [ '<JOB_WORKER_HOSTNAME>:<JOB_WORKER_WEB_PORT>' ]
  - job_name: "alluxio standalone fuse"
      metrics_path: '/metrics/prometheus/'
      static_configs:
      - targets: [ '<FUSE_WEB_HOSTNAME>:<FUSE_WEB_PORT>' ]

在指定要轮询的指标时要小心。 Prometheus 修改指标名称以便处理它们。 它通常取代 . 用 _,有时会附加文本。 最好使用上面列出的 curl 命令来查看 Prometheus 如何转换名称。

CSV 接收器设置

本节给出了将收集的指标写入 CSV 文件的示例。

首先,为 CsvSink 创建轮询目录(如果它不存在):

$ mkdir /tmp/alluxio-metrics

在 metrics 属性文件中,默认情况下为 $ALLUXIO_HOME/conf/metrics.properties,添加以下属性:

# Enable CsvSink
sink.csv.class=alluxio.metrics.sink.CsvSink

# Polling period for CsvSink
sink.csv.period=1
sink.csv.unit=seconds

# Polling directory for CsvSink, ensure this directory exists!
sink.csv.directory=/tmp/alluxio-metrics

如果 Alluxio 部署在集群中,则需要将此文件分发到所有节点。 重启 Alluxio 服务器以激活新的配置更改。

启动 Alluxio 后,将在 sink.csv. 目录中找到包含指标的 CSV 文件。 文件名将与指标名称相对应。

Web UI

Master Web UI Metrics

除了通过 metrics servlet 或自定义指标配置显示的原始指标外,用户还可以在 Alluxio leading master (http://:19999/metrics) 的 Web 界面中以更易于阅读的方式跟踪关键集群性能指标。

Alluxio监控系统

该网页包含以下信息:

Alluxio 空间和根 UFS 空间百分比使用信息的时间序列

聚合集群吞吐量的时间序列,这对于确定 Alluxio 缓存的有效性至关重要

Alluxio 集群执行的累计 RPC 调用和操作

每个挂载点服务的累积 API 调用可以作为量化 Alluxio 命名空间虚拟化提供的延迟和潜在成本节省的强大指标

对应的昵称和原始metric名称如下所示:

Nick Name Original Metric Name
Local Alluxio (Domain Socket) Read Cluster.BytesReadDomain
Local Alluxio (Domain Socket) Write Cluster.BytesWrittenDomain
Local Alluxio (Short-circuit) Read Cluster.BytesReadLocal
Local Alluxio (Short-circuit) Write Cluster.BytesWrittenLocal
Remote Alluxio Read Cluster.BytesReadRemote
Remote Alluxio Write Cluster.BytesWrittenRemote
Under Filesystem Read Cluster.BytesReadUfsAll
Under Filesystem Write Cluster.BytesWrittenUfsAll

这些指标的详细描述在集群指标中。

Mounted Under FileSystem Read 显示了每个 Alluxio UFS 的 Cluster.BytesReadPerUfs.UFS:。 Mounted Under FileSystem Write 显示了每个 Alluxio UFS 的 Cluster.BytesWrittenPerUfs.UFS:

逻辑操作和 RPC 调用提供了部分主指标。

Saved Under FileSystem Operations 显示了 Alluxio 命名空间直接完成的操作,无需访问 UFSes。 如果目标 UFS 位于远程或响应速度较慢,则性能改进可能会很显着。 如果基础存储费用基于请求,则可以节省成本。

Grafana Web UI with Prometheus

Grafana 是用于可视化时间序列数据的指标分析和可视化软件。 您可以使用 Grafana 更好地可视化 Alluxio 收集的各种指标。 该软件允许用户更容易地看到内存、存储和 Alluxio 中完成的操作的变化。

Grafana 支持可视化来自 Prometheus 的数据。 以下步骤可以帮助您轻松构建基于 Grafana 和 Prometheus 的 Alluxio 监控。

  1. 使用此处的说明安装 Grafana。
  2. 下载适用于 Alluxio 的 Grafana 模板 JSON 文件。
  3. 导入模板 JSON 文件以创建仪表板。 请参阅此示例以导入仪表板。
  4. 使用自定义名称将 Prometheus 数据源添加到 Grafana,例如 prometheus-alluxio。 有关导入仪表板的帮助,请参阅教程。
  5. 使用此处的说明修改仪表板/设置中的变量并保存您的仪表板。
Variable Value
alluxio_datasource Your prometheus datasource name (eg. prometheus-alluxio used in step 4)
masters Master ‘job_name’ configured in prometheus.yml (eg. alluxio master)
workers Worker ‘job_name’ configured in prometheus.yml (eg. alluxio worker)
alluxio_user The user used to start up Alluxio (eg. alluxio)

如果您的 Grafana 仪表板显示如下面的屏幕截图,则您已成功构建监控。 当然,你可以修改JSON文件或者直接在仪表盘上操作来设计你的监控。

Alluxio监控系统

JMX监控

您可以通过 jvm_exporter 作为 Java 代理获取 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 访问指标。

config.yaml 文件提供了 jmx_exporter 的配置。 空文件可用于快速启动。 有关详细信息,请参阅 jmx_exporter 文档

0 0 投票数
文章评分

本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://lrting.top/backend/13656/

(0)
上一篇 2023-03-28 19:25
下一篇 2023-04-02 22:56

相关推荐

订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x