检索查询的系统信息
了解如何在 InfluxDB Cloud Dedicated 中检索查询的系统信息。
除了 SQL 标准的 information_schema
,InfluxDB Cloud Dedicated 还包含提供访问 InfluxDB 特定信息的 系统 表。每个系统表中的信息范围到您正在查询的命名空间;您只能检索特定实例的系统信息。
要获取有关当前实例上运行的查询的信息,请使用 SQL 查询 system.queries
表,其中包含当前处理查询的 Querier 实例的信息。如果您为查询启用了 跟踪日志,则 trace-id
会出现在查询的 system.queries.trace_id
列中。
system.queries
表是 InfluxDB v3 的 调试功能。要启用该功能并查询 system.queries
,请包含一个设置为 "true"
的 "iox-debug"
标头,并使用 SQL 查询该表。
以下示例代码显示了如何使用 Python 客户端库执行以下操作
- 为查询启用跟踪。
- 从
system.queries
检索跟踪 ID 记录。
from influxdb_client_3 import InfluxDBClient3
import secrets
import pandas
def get_query_information():
print('# Get query information')
client = InfluxDBClient3(token = f"DATABASE_TOKEN",
host = f"cluster-id.a.influxdb.io",
database = f"DATABASE_NAME")
random_bytes = secrets.token_bytes(16)
trace_id = random_bytes.hex()
trace_value = (f"{trace_id}:1112223334445:0:1").encode('utf-8')
sql = "SELECT * FROM home WHERE time >= now() - INTERVAL '30 days'"
try:
client.query(sql, headers=[(b'influx-trace-id', trace_value)])
client.close()
except Exception as e:
print("Query error: ", e)
client = InfluxDBClient3(token = f"DATABASE_TOKEN",
host = f"cluster-id.a.influxdb.io",
database = f"DATABASE_NAME")
import time
df = pandas.DataFrame()
for i in range(0, 5):
time.sleep(1)
# Use SQL
# To query the system.queries table for your trace ID, pass the following:
# - the iox-debug: true request header
# - an SQL query for the trace_id column
reader = client.query(f'''SELECT compute_duration, query_type, query_text,
success, trace_id
FROM system.queries
WHERE issue_time >= now() - INTERVAL '1 day'
AND trace_id = '{trace_id}'
ORDER BY issue_time DESC
''',
headers=[(b"iox-debug", b"true")],
mode="reader")
df = reader.read_all().to_pandas()
if df.shape[0]:
break
assert df.shape == (1, 5), f"Expect a row for the query trace ID."
print(df)
get_query_information()
输出类似于以下内容
compute_duration query_type query_text success trace_id
0 days sql SELECT compute_duration, quer... True 67338...
这个页面有帮助吗?
感谢您的反馈!