dashboard报错提示集群中未启动必要组件 `NgMonitoring`

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.1.4
【遇到的问题:问题现象及影响】

tidb 7.1.4版本登录dashboard的时候报错 提示”集群中未启动必要组件 NgMonitoring

image

核查tidb就能拓扑配置文件中存在 ng_port: 12020 如下图所示

登录到对应主机查看 ,发现在 Prometheus服务中,会执行启动 ng-wrapper.sh 脚本,

这个脚本中sleep 15秒然后循环执行如下命令

bin/ng-monitoring-server   --config /opt/app/tidb-deploy/prometheus-9090/conf/ngmonitoring.toml

在日志文件 ng.log 中发现 file does not exist for table 76705 不知道这里identity 76705表是什么表?

[2024/09/11 17:50:58.558 +08:00] [FATAL] [document.go:59] ["failed to open a badger storage"] [path=/data/tidb-data/prometheus-9090/docdb] [error="file does not exist for table 76705"] [stack="github.com/pingcap/ng-monitoring/database/document.Init\n\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/ng-monitoring/database/document/document.go:59\ngithub.com/pingcap/ng-monitoring/database.Init\n\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/ng-monitoring/database/database.go:14\nmain.main\n\t/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/ng-monitoring/main.go:70\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"]

日志核心错误

[FATAL] [document.go:59]
["failed to open a badger storage"] 
[path=/data/tidb-data/prometheus-9090/docdb]
[error="file does not exist for table 76705"]

用这3个SQL查表名
SELECT * FROM INFORMATION_SCHEMA.TIFLASH_REPLICA a WHERE a.table_id=‘2455218’;
SELECT * FROM INFORMATION_SCHEMA.tables c WHERE c.tidb_table_id=‘2455218’;
SELECT * FROM INFORMATION_SCHEMA.partitions b WHERE b.TIDB_PARTITION_ID=‘2455218’;

1 个赞

看下你对应的目录下/u01/tidb-data/prometheus-9090/docdb这个目录里面文件权限正常吗?

这三个语句换成自己的那个ID都是没有记录的

docdb 是 700 tidb:tidb

里面文件的权限确实不对呢, 有root的属主和属组,

image

但是修改属性之后,报错依然存在,重启Prometheus之后问题也存在,

请问你那边正常情况, docdb 及其下 文件的 权限和属性都是什么?

看错了,这是监控组件,不是tidb
ngmonitor 不是必要组件,没需求的可以忽略

在7.1.4 版本是必要组件哦,没有这个组件,有些功能无法查阅

正常都应该是tidb用户啊,你启动不是指定的tidb用户?

之前没有注意到这个组件,也没有关注这个组件,是从过去版本升级上来的,不确定中途有没有认为修改过权限。

不过目前调整了属性和权限,重启Prometheus之后,依然这个错误,ngmonitoring 无法正常启动,提示不存在的表,不确定是否和前几天删除很多表有没有关系

可以缩容掉Prometheus之后再扩容,缺的不是tidb里面的表,而是Prometheus的表

正常环境不太敢做这个Prometheus的缩容呢,你是之前遇到这个问题,然后通过这个方案解决的吗?

看一下tiup的版本

监控而已,关键你现在Prometheus是正常的吗?不是已经不能用了?