flink operator的grafana监控配置

82 阅读5分钟

一、引言

我前面有篇文章介绍了基于 Prometheus Operator 去配置组件监控,当时给出的例子正好是flink operator。正当我想配置flink operator的grafana看板时,网上找了半天没找到指标的枚举,于是正好基于Prometheus监控收集之后,去记录一下flink operator能吐出哪些指标,以及在grafana中如何配置看板。

二、端口验证

当初配置的service.yaml就是把 Pod 的端口暴露出来,好让指标能够吐出去

spec:
  type: ClusterIP
  ports:
  - port: {{ .Values.metrics.port }}
    targetPort: metrics
    protocol: TCP
    name: metrics

我在values.yaml中配置的是9999

metrics:
  port: 9999

三、获取全指标

登陆到 flink operator 运行的 pod 上,使用 curl 命令获取其通过9999端口吐出来的所有指标

curl http://localhost:9999/metrics

吐出来的指标会非常多,但格式统一,分成三层

# HELP flink_k8soperator_KubeClient_HttpRequest_PATCH_Count Count (scope: k8soperator_KubeClient_HttpRequest_PATCH)
# TYPE flink_k8soperator_KubeClient_HttpRequest_PATCH_Count gauge
flink_k8soperator_KubeClient_HttpRequest_PATCH_Count{name="hidata_flink_operator",host="hidata_flink_operator_55556d6949_kq9qv",namespace="hidata_prod",} 1.0

第一层是HELP 行,解释这个指标的含义。

# HELP <metric_name> <description>

第二层TYPE 行,指明指标类别(瞬时值、累计值、摘要统计等)

# TYPE <metric_name> gauge|counter|summary|histogram

第三层是具体值(可带 label 维度)

label代表不同标签,可用于区分同一个指标在不同条件下的值,后面的数值代表该条件下的具体值

metric_name{label1="xxx",label2="yyy"} 123.0

四、grafana监控配置

新增面板 -- 选择数据源 -- 编辑模式选code -- 填写metric_name -- 点击 Run queries

image.png 这个是最简单的配置,其余扩展与多样化读者们可自行探索。

五、flink operator指标整理(长期更新)

注:

1、指标监控的是 flink operator 拉起来的 flink deployment 的状态,也就是不代表 Flink Operator 组件本身挂了,而是它管理的Flink集群/作业出了问题(部署失败、升级失败、任务重启频繁等)

2、xx阶段样本数,其实就是指所有flink deployment进入某个阶段的次数

3、分位数就是把 一堆样本数据 按大小排序,然后在指定位置切一刀,看看这个位置的值是多少

4、分位数范围:0.5、0.75、0.95、0.98、0.99、0.999

metrics name指标含义类型说明
flink_k8soperator_namespace_Lifecycle_State_STABLE_TimeSeconds_count所有 FlinkDeployment 进入稳定阶段的次数summary在当前监控周期内记录的 STABLE 状态样本数量,用于统计稳定状态持续时间分布
flink_k8soperator_namespace_Lifecycle_State_STABLE_TimeSeconds{quantile="0.xx"}所有 FlinkDeployment 稳定阶段耗时分布summarySTABLE 状态持续时间的xx%分位数,衡量一般情况下稳定态能维持多久
flink_k8soperator_namespace_Lifecycle_State_ROLLING_BACK_TimeSeconds_count所有 FlinkDeployment 进入回滚阶段次数summary在当前监控周期内记录的 ROLLING_BACK 状态样本数,用于统计回滚状态持续时间分布
flink_k8soperator_namespace_Lifecycle_State_ROLLING_BACK_TimeSeconds{quantile="0.xx"}所有 FlinkDeployment 回滚阶段耗时分布summaryROLLING_BACK 状态持续时间的 xx% 分位数,衡量一般情况下回滚状态能维持多久
flink_k8soperator_KubeClient_HttpRequest_PATCH_CountFlink Operator 对 K8s 资源的 PATCH 请求次数gaugeFlink Operator 作为 Kubernetes 客户端,在当前监控周期内发起的 PATCH 类型的 HTTP 请求 的次数。PATCH 请求用于部分更新 Kubernetes 资源(如 FlinkDeployment 的某些字段)
flink_k8soperator_namespace_Lifecycle_Transition_Submission_TimeSeconds_count所有 FlinkDeployment 进入提交阶段次数summary在当前监控周期记录的 FlinkDeployment 生命周期从进入 Submission 阶段到退出该阶段的持续时间样本数量,用于统计提交阶段的耗时分布
flink_k8soperator_namespace_Lifecycle_Transition_Submission_TimeSeconds{quantile="0.xx"}所有 FlinkDeployment 提交阶段耗时分布summary所有样本的xx%分位数值,用于统计提交阶段能耗时多久
flink_k8soperator_Status_JVM_Memory_NonHeap_UsedJVM非堆内存使用量gauge当前 Flink Operator JVM 使用的非堆内存大小(单位字节),包括类Metaspace、代码缓存等 JVM 内部结构所占用的内存
flink_k8soperator_namespace_resource_JOSDK_Reconciliation_Count所有 FlinkDeployment 被调和(Reconciliation)次数gaugeReconciliation = Operator 对某个资源对象(例如 FlinkDeployment)进行一次“期望状态 vs 当前实际状态”的检查,并执行必要的动作来让它符合期望状态
flink_k8soperator_namespace_Lifecycle_State_DELETED_Count生命周期为 DELETED 的 FlinkDeployment 数量gauge统计当前命名空间中处于 DELETED 生命周期阶段的 FlinkDeployment 数量。数值为 0 表示没有资源处于已删除状态;数值 >0 表示有部分资源正在被删除或删除过程尚未完成,长时间维持大于 0 可能表示删除卡住或处理失败
flink_k8soperator_Status_JVM_Memory_Direct_MemoryUsedJVM 直接内存已使用量gauge记录当前 Flink Operator JVM 使用的堆外直接内存(Direct Memory)大小,单位为字节。直接内存通常用于高性能 I/O 操作、序列化和 RocksDB 等场景。持续高占用可能会导致 OutOfMemoryError: Direct buffer memory,需关注此值是否接近 JVM 最大直接内存限制
flink_k8soperator_KubeClient_HttpResponse_CountFlink Operator 从 Kubernetes API Server 接收到的 HTTP 响应总次数gauge累计记录 Flink Operator 使用 KubeClient 与 Kubernetes API Server 交互时,收到的 HTTP 响应数量。正常运行中该值会持续增加;数值停滞或归零可能表示 Operator 无法与 API Server 通讯;增长过快可能意味着资源变更事件异常频繁
flink_k8soperator_namespace_Lifecycle_Transition_Stabilization_TimeSeconds_count所有 FlinkDeployment 进入稳定阶段的次数summary进入稳定阶段耗时的样本数量,用于统计进入稳定阶段所需时间的分布。count=0 表示该周期没有新的部署进入稳定阶段
flink_k8soperator_namespace_Lifecycle_Transition_Stabilization_TimeSeconds{quantile="0.xx"}所有 FlinkDeployment 进入稳定阶段耗时的分位数分布summary同百分位下部署达到稳定状态的时间;可用于发现进入稳定阶段耗时过长的异常情况,比如95% 的部署进入稳定阶段的时间 ≤ 40秒