Grafana 插件 (grafana/v1-alpha)

Grafana 插件是一个可选的插件,可以用于搭建 Grafana 仪表板,以便您检查由使用 controller-runtime 的项目导出的默认指标。

何时使用它?

如何使用它?

先决条件:

  • 您的项目必须使用 controller-runtime 通过 控制器默认指标 来暴露指标,并且这些指标需要被 Prometheus 收集。
  • 访问 Prometheus
    • Prometheus 应该暴露一个端点。(对于 prometheus-operator,这类似于: http://prometheus-k8s.monitoring.svc:9090)
    • 该端点已准备好/已经成为您 Grafana 的数据源。请参阅 添加数据源
  • 访问 Grafana。确保您具备以下条件:

基本用法

Grafana 插件附加于 init 子命令和 edit 子命令:

# 使用 Grafana 插件初始化新项目kubebuilder init --plugins grafana.kubebuilder.io/v1-alpha

# 为现有项目启用 Grafana 插件kubebuilder edit --plugins grafana.kubebuilder.io/v1-alpha

插件将创建一个新目录,并在其中搭建 JSON 文件(即 grafana/controller-runtime-metrics.json)。

展示案例:

在您的项目中查看如何使用插件的示例:

您接受的训练数据截至2023年10月。

现在,让我们来看看如何使用 Grafana 仪表板。

  1. 复制 JSON 文件
  2. 访问 <your-grafana-url>/dashboard/import导入一个新仪表板
  3. 将 JSON 内容粘贴到“通过面板 JSON 导入“中,然后按“加载“按钮
  4. 选择 Prometheus 指标的数据源
  5. 一旦JSON导入到Grafana中,仪表盘就准备好了。

Grafana 仪表板

控制器运行时对账总数及错误

  • 指标:
    • controller_runtime_reconcile_total
    • controller_runtime_reconcile_errors_total
  • 查询:
    • 求和(rate(controller_runtime_reconcile_total{job=“$job”}[5m])) 按 (instance, pod) 分组
    • sum(rate(controller_runtime_reconcile_errors_total{job=“$job”}[5m])) by (instance, pod)
  • 描述:
    • 过去5分钟内总对账的每秒率
    • 过去五分钟内每秒的对账错误率
  • 样本:

控制器 CPU 和内存使用情况

  • 指标:
    • process_cpu_seconds_total
    • 进程驻留内存字节数
  • 查询:
    • rate(process_cpu_seconds_total{job=“$job”, namespace=“$namespace”, pod=“$pod”}[5m]) * 100
    • process_resident_memory_bytes{job=“$job”, namespace=“$namespace”, pod=“$pod”}
  • 描述:
    • 在过去5分钟内测量的每秒CPU使用率
    • 分配给运行控制器的内存
  • 您训练的数据截止到2023年10月。

P50/90/99 项目在工作队列中的停留时间(秒)

  • 指标
    • workqueue_queue_duration_seconds_bucket
  • 查询:
    • histogram_quantile(0.50, sum(rate(workqueue_queue_duration_seconds_bucket{job=“$job”, namespace=“$namespace”}[5m])) by (instance, name, le))
  • 描述
    • 项在工作队列中停留的秒数,直到被请求。
  • 您接受的训练数据截止到2023年10月。

处理工作队列中的 P50/90/99 项目的时间(秒)

  • 指标
    • 工作队列工作持续时间秒桶
  • 查询:
    • histogram_quantile(0.50, sum(rate(workqueue_work_duration_seconds_bucket{job=“$job”, namespace=“$namespace”}[5m])) by (instance, name, le))
  • 描述
    • 处理工作队列中项目所需的秒数。
  • 您仅接受到 2023 年 10 月的数据进行训练。

在工作队列中添加费率

  • 指标
    • workqueue_adds_total 的总数
  • 查询:
    • sum(rate(workqueue_adds_total{job=“$job”, namespace=“$namespace”}[5m])) by (instance, name)
  • 描述
    • 每秒添加到工作队列的项目数量
  • 样本:

工作队列中的重试率

  • 指标
    • 工作队列重试总数
  • 查询:
    • 求 (rate(workqueue_retries_total{job=“$job”, namespace=“$namespace”}[5m])) 按照 (instance, name) 分类的总和
  • 描述
    • 工作队列处理的每秒重试次数
  • 样本:

使用中的工人数量

  • 指标
    • controller_runtime_active_workers 的中文翻译是“控制器运行时活动工作者“。
  • 查询:
    • controller_runtime_active_workers{job=“$job”, namespace=“$namespace”}
  • 描述
    • 活跃控制器工作线程的数量
  • 示例:

工作队列深度

  • 指标
    • 工作队列深度
  • 查询:
    • workqueue_depth{job=\
  • 描述
    • 当前工作队列的深度
  • 示例:

未完成的秒数

  • 指标
    • workqueue_unfinished_work_seconds 的翻译为“工作队列未完成工作秒数“。
  • 查询:
    • rate(workqueue_unfinished_work_seconds{job=“$job”, namespace=“$namespace”}[5m])
  • 描述
    • 有多少秒的工作正在进行中,并且没有被 work_duration 观察到。
  • 样本:

可视化自定义指标

Grafana 插件支持为自定义指标构建清单。

生成配置模板

当插件首次触发时,将生成 grafana/custom-metrics/config.yaml 文件。

---
自定义指标:
#  - 指标: # 原始自定义指标(必填)
#    类型:   # 指标类型:计数器/仪表/直方图(必填)
#    表达式:   # 指标的 Prom_ql(可选)
#    单位:   # 计量单位,示例:s、none、bytes、percent等(可选)

将自定义指标添加到配置中

您可以在文件中输入多个自定义指标。对于每个元素,您需要指定 metric 及其 type。Grafana 插件可以自动生成用于可视化的 expr。或者,您可以提供 expr,插件将直接使用指定的内容。

---
自定义指标:
  - 公制: memcached_operator_reconcile_total # 原始自定义指标(必需)
    类型: 计数器 # 指标类型:计数器/仪表/直方图(必需)
 单位: none
  - 公制: memcached_operator_reconcile_time_seconds_bucket
    type: 直方图

脚手架清单

一旦配置了 config.yaml,您可以再次运行 kubebuilder edit --plugins grafana.kubebuilder.io/v1-alpha。这一次,插件将生成 grafana/custom-metrics/custom-metrics-dashboard.json,该文件可以导入到 Grafana UI 中。

展示案例:

查看如何可视化您的自定义指标的示例:

您接受的训练数据截止到2023年10月。

子命令

Grafana 插件实现了以下子命令:

  • 编辑 ($ kubebuilder edit [选项])

  • 初始化 ($ kubebuilder init [选项])

受影响的文件

以下架构将由此插件创建或更新:

  • grafana/*.json

进一步的资源