Grafana 插件 (grafana/v1-alpha
)
Grafana 插件是一个可选的插件,可以用于搭建 Grafana 仪表板,以便您检查由使用 controller-runtime 的项目导出的默认指标。
何时使用它?
如何使用它?
先决条件:
- 您的项目必须使用 controller-runtime 通过 控制器默认指标 来暴露指标,并且这些指标需要被 Prometheus 收集。
- 访问 Prometheus。
- Prometheus 应该暴露一个端点。(对于
prometheus-operator
,这类似于: http://prometheus-k8s.monitoring.svc:9090) - 该端点已准备好/已经成为您 Grafana 的数据源。请参阅 添加数据源。
- Prometheus 应该暴露一个端点。(对于
- 访问 Grafana。确保您具备以下条件:
- 仪表板编辑权限
- Prometheus 数据源
基本用法
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 仪表板。
- 复制 JSON 文件
- 访问
<your-grafana-url>/dashboard/import
来 导入一个新仪表板。 - 将 JSON 内容粘贴到“通过面板 JSON 导入“中,然后按“加载“按钮
- 选择 Prometheus 指标的数据源
- 一旦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
进一步的资源
- 查看 视频以了解它是如何工作的
- 查看这个视频,了解自定义指标功能是如何工作的
- 请参考由 kustomize 插件 提供的
serviceMonitor
示例。 - 检查 插件实现
- Grafana 文档 关于导入 JSON 文件的内容。
- Prometheus Operator 中 serviceMonitor 的使用情况