prometheus通过api获取的tidb原始监控数据,能否通过sql查询得到?

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【概述】场景+问题概述

我们要将部分应用的后端由MySQL 8.0切换到TiDB 5.0,同时需要在监控平台自定义一些 TiDB 5.0 的监控,但是 metrics-schema 库下的数据依赖于 prometheus 组件,如果我们没有安装 prometheus,监控数据则无法查询

所以我们希望直接通过tidb获取原始的数据,但是我在查看prometheus的数据源配置时,发现全部是通过原生API方式获取的

比如,当我需要查看连接数的时候,我需要使用 tidb_server_connections{$LABEL_CONDITIONS}
对应于命令行操作,应该是 curl 192.168.11.242:10080/metrics 2> /dev/null | grep tidb_server_connections

【问题】:当前遇到的问题

我想问下:

  1. 这些监控的原始数据,如连接数,是否可以通过SQL查询到,而不是通过API的方式,因为我没有找到类似mysql的一些查询方法
  2. 这个方式查询的连接数,应该只是当前节点的,如果我要查找所有tidb节点的连接数,只能挨个查询吗?有没有集群级别?

除了上面的监控以外,我们还有一个其他的问题:

  1. 我们需要实时获取带有锁的SQL,以方便kill掉部分有锁SQL,类似mysql里面的 innodb_trxperformance_schema.data_locks ,但是我们没有在tidb里面找到实时的查询方式,tidb_trx 这张表似乎可以,但是只有 dev 版本才有
1 个赞

https://docs.pingcap.com/zh/tidb/stable/metrics-schema

这个库里面应该有一个类似 tidb_server_connections 的系统表,查这个表也可以获取连接数

metrics_schema 库里面的数据依赖于 prometheus,如果不安装 prometheus 会导致为空。
所以我们想知道 prometheus 通过TiDB组件的api获取的监控数据,是否可以通过SQL查询,

这个不行,tidb 没有支持这个功能

hao de :see_no_evil:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。