[监控表] — 基础表结构梳理
# 一、准备工作
在正式分析表结构之前,我们需要确认工具准备。
工具选择
DataGrip
可视化体验好,适合快速查看 Phoenix 表。
👉 但注意 高版本与 Phoenix 驱动兼容性问题 ,可参考 Q: 高版本 DataGrip 无法使用 Phoenix 驱动Sqlline
命令行工具,轻量快捷。
👉 如果遇到卡死问题,可参考 Sqlline 启动卡死问题处理
# 二、入口解读
Collector 启动时,会调用:
metricMetadataManager.initializeMetadata();
1
对应实现类是 TimelineMetricMetadataManager。 下图是调用位置:
其内部依次执行了三条 Phoenix SQL,用于初始化三张核心表:
String metadataSql = String.format(CREATE_METRICS_METADATA_TABLE_SQL, encoding, compression);
stmt.executeUpdate(metadataSql);
String hostedAppSql = String.format(CREATE_HOSTED_APPS_METADATA_TABLE_SQL, encoding, compression);
stmt.executeUpdate(hostedAppSql);
String hostedInstancesSql = String.format(CREATE_INSTANCE_HOST_TABLE_SQL, encoding, compression);
stmt.executeUpdate(hostedInstancesSql);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
常量名 | 表名 | 主键 | 作用 |
---|---|---|---|
CREATE_ METRICS_METADATA_ TABLE_SQL | METRICS_METADATA_UUID | (METRIC_NAME, APP_ID, INSTANCE_ID) | 存放指标与 UUID 对应关系 |
CREATE_ HOSTED_APPS_METADATA_ TABLE_SQL | HOSTED_APPS_METADATA_UUID | HOSTNAME | 存放主机与组件映射 |
CREATE_ INSTANCE_HOST_ TABLE_SQL | INSTANCE_HOST_METADATA | (INSTANCE_ID, HOSTNAME) | 存放实例与主机关联 |
# 三、表结构探究
# 1、METRICS_METADATA_UUID
CREATE TABLE IF NOT EXISTS METRICS_METADATA_UUID (
METRIC_NAME VARCHAR,
APP_ID VARCHAR,
INSTANCE_ID VARCHAR,
UUID BINARY(16),
UNITS CHAR(20),
TYPE CHAR(20),
START_TIME UNSIGNED_LONG,
SUPPORTS_AGGREGATION BOOLEAN,
IS_WHITELISTED BOOLEAN
CONSTRAINT pk PRIMARY KEY (METRIC_NAME, APP_ID, INSTANCE_ID)
) DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
字段解析
- UUID:为每个
(METRIC_NAME, APP_ID, INSTANCE_ID)
生成唯一 ID - SUPPORTS_AGGREGATION:是否支持聚合,影响 Collector 聚合性能
- IS_WHITELISTED:是否在白名单中,通常控制 UI 展示
📊 每个组件的指标数量分布如下:
# 2、HOSTED_APPS_METADATA_UUID
CREATE TABLE IF NOT EXISTS HOSTED_APPS_METADATA_UUID (
HOSTNAME VARCHAR,
UUID BINARY(4),
APP_IDS VARCHAR,
CONSTRAINT pk PRIMARY KEY (HOSTNAME)
) DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'
1
2
3
4
5
6
2
3
4
5
6
字段解析
- HOSTNAME:节点名
- APP_IDS:该主机运行的组件 ID 列表
- UUID:压缩存储用的短 ID
# 3、INSTANCE_HOST_METADATA
CREATE TABLE IF NOT EXISTS INSTANCE_HOST_METADATA (
INSTANCE_ID VARCHAR,
HOSTNAME VARCHAR,
CONSTRAINT pk PRIMARY KEY (INSTANCE_ID, HOSTNAME)
) DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'
1
2
3
4
5
2
3
4
5
注意
- 用于维护 实例 ↔ 主机 映射关系
- 01
- [/metrics/metadata] — 元数据查询和使用 GET09-12
- 02
- [/metrics/metadata] — 请求完整链路解读09-12
- 03
- [/metrics/metadata] — 缓存数据装载 Phoenix09-12