通过 TidbNGMonitoring CRD 部署的 ngMonitoring 存储爆满

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.1.0

【复现路径】
通过官方Operator 部署TiDB 集群,通过如下配置创建 TidbNGMonitoring

apiVersion: pingcap.com/v1alpha1
kind: TidbNGMonitoring
metadata:
  name: basicai
spec:
  clusters:
  - name: basicai
    namespace: tidb-cluster
  nodeSelector:
    dedicated: infra
  ngMonitoring:
    requests:
      storage: 50Gi
    version: v6.1.0
    storageClassName: alicloud-disk-tidb-monitor 
    baseImage: harbor.ba.....m/bf/ng-monitoring 

describe ng-monitoring 的pod 可以看到其运行参数:

Command:
      /bin/sh
      -c
      /ng-monitoring-server \
        --pd.endpoints basicai-pd.tidb-cluster:2379 \
        --advertise-address ${POD_NAME}.basicai-ng-monitoring.tidb-cluster:12020 \
        --config /etc/ng-monitoring/ng-monitoring.toml \
        --storage.path /var/lib/ng-monitoring

【遇到的问题:问题现象及影响】

  • 问题: ng-monitor 的POD 很快就耗尽了存储卷,并且由于没有可用存储空间而不断重启。
  • 影响: ng-monitor 一直无法正常使用

请问该如何控制 ng-monitor 的数据留存?我看官方示例里并没有分配特别大的 存储空间。

我删除 TidbNGMonitoring ,并且把PVC 也删除了,重新部署。发现仅仅过了几分钟,/var/lib/ng-monitoring/docdb 目录就占用了 112.4M,而且保持这一速率增长。

50G少点吧,多弄些

我看官方文档里才 10G, 也没有特别说明这个该多大,也没说怎么管控。 如果无法管控,我觉得1TB 都可能不够的。

https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.3/access-dashboard

启用持续性能分析。

  1. 进入 TiDB Dashboard,选择高级调试 (Advanced Debugging) > 实例性能分析 (Profiling Instances) > 持续分析 (Continuous Profiling)。
  2. 点击打开设置 (Open Settings)。在右侧设置 (Settings) 页面,将启用特性 (Enable Feature) 下方的开关打开。设置保留时间 (Retention Period) 或保留默认值。

不知道 “保留时间” 这个选项能否控制数据规模,不过最小的值都是3天

正常来说不会存很多东西 :thinking:。节点比较多?

感觉可以试试升级 。6.1.0 版本太低了,第三位最好拉平最新版本。

我们正在评估升级到7.5.1,开发和测试环境已经升级,但是生产环境升级不会那么快到来

https://docs.pingcap.com/zh/tidb/stable/hardware-and-software-requirements#磁盘空间要求

感谢指引 :tulip:,我根据这个表格计算了,按照我的集群规模和组建数量,NGmonitor 的磁盘应该不会超过40GB, 我配置的是50GB。 我再观察一次,看是否会再次被写满。

低版本 ngmonitor 有问题会不清理历史数据,建议升级下吧,具体的要搜下 github issue 看下,比如我知道的有一个 conprof consume too much disk space and gc doesn't release disk space. · Issue #120 · pingcap/ng-monitoring · GitHub

那只有等我们开发测试环境的升级评估通过了再升级生产环境了。

学习下