必须 ambari plus monitor 数据库初始化文件
必须ambari plus monitor 数据库初始化文件
Ambari Plus Monitor 会在元数据库里保存集群、主机、服务、组件、指标定义、告警规则、通知记录和同步任务等数据。安装 Monitor 服务前,必须先把这份初始化 SQL 导入到 Ambari Server 使用的同一个 ambari 库里。
必须
本文 SQL 要导入 Ambari 官方表所在的同一个库。本文示例库名是 ambari,不要单独创建 monitor、ambari_monitor 或其他库,否则 Monitor 安装后读不到平台已有的集群与租户上下文。
# 1. 放置初始化文件
把初始化文件放到 hadoop1.test.com 上,例如:
mkdir -p /data/modules/monitor
cd /data/modules/monitor
ls -lh Ambari-Plus-Monitor-DDL-MySQL-CREATE.sql
1
2
3
2
3
我习惯把所有安装前置 SQL 放在 /data/modules 下,这样后面排查或重装时不用到处找文件。
# 2. 导入到 ambari 库
本文示例环境使用 hadoop1.test.com 上的 MySQL / MariaDB,基础演示账号为 root / root。导入时连接 ambari 库:
mysql -uroot -p ambari < Ambari-Plus-Monitor-DDL-MySQL-CREATE.sql
1
注意
root / root 只适合教程环境快速跑通。生产环境建议创建专用数据库用户,并使用高复杂度密码和最小权限授权。
# 3. 验证初始化结果
导入后先看 Monitor 表数量,再抽查关键表和指标定义数据。
mysql -uroot -p -D ambari -N -e \
"SELECT COUNT(*) FROM information_schema.tables \
WHERE table_schema='ambari' AND table_name LIKE 'monitor\\_%';"
mysql -uroot -p -D ambari -N -e \
"SHOW TABLES LIKE 'monitor_cluster'; \
SHOW TABLES LIKE 'monitor_metric_definition'; \
SELECT COUNT(*) FROM monitor_metric_definition;"
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
本文环境里可以看到 38 张 Monitor 相关表,monitor_metric_definition 里已经有指标定义数据。

# 4. 初始化 SQL
下面的 SQL 可以保存为 Ambari-Plus-Monitor-DDL-MySQL-CREATE.sql 后执行。它只负责 Monitor 元数据结构和基线数据,库名由你执行时连接的数据库决定。
展开查看 Ambari Plus Monitor 初始化 SQL
SET NAMES utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_cluster` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`cluster_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) DEFAULT NULL,
`ambari_cluster_id` VARCHAR(128) DEFAULT NULL,
`environment` VARCHAR(64) DEFAULT NULL,
`version` VARCHAR(64) DEFAULT NULL,
`security_type` VARCHAR(64) DEFAULT NULL,
`description` TEXT,
`health_score` INT NOT NULL DEFAULT 100,
`health_status` VARCHAR(32) NOT NULL DEFAULT 'HEALTHY',
`total_hosts` INT NOT NULL DEFAULT 0,
`total_services` INT NOT NULL DEFAULT 0,
`total_components` INT NOT NULL DEFAULT 0,
`alert_count` INT NOT NULL DEFAULT 0,
`tenant_id` BIGINT DEFAULT NULL,
`extra_info` TEXT,
`sync_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_cluster_name` (`cluster_name`),
KEY `idx_cluster_tenant` (`tenant_id`),
KEY `idx_cluster_health` (`health_status`),
KEY `idx_cluster_sync` (`sync_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_host` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`host_name` VARCHAR(255) NOT NULL,
`ip_address` VARCHAR(64) DEFAULT NULL,
`cluster_id` BIGINT NOT NULL,
`rack` VARCHAR(128) DEFAULT NULL,
`os_type` VARCHAR(64) DEFAULT NULL,
`cpu_arch` VARCHAR(64) DEFAULT NULL,
`cpu_cores` INT DEFAULT NULL,
`memory_gb` INT DEFAULT NULL,
`disk_gb` BIGINT DEFAULT NULL,
`agent_status` VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
`agent_heartbeat_time` DATETIME DEFAULT NULL,
`health_score` INT NOT NULL DEFAULT 100,
`health_status` VARCHAR(32) NOT NULL DEFAULT 'HEALTHY',
`cpu_usage` DOUBLE DEFAULT NULL,
`memory_usage` DOUBLE DEFAULT NULL,
`disk_usage` DOUBLE DEFAULT NULL,
`load1` DOUBLE DEFAULT NULL,
`load5` DOUBLE DEFAULT NULL,
`load15` DOUBLE DEFAULT NULL,
`running_component_count` INT NOT NULL DEFAULT 0,
`alert_count` INT NOT NULL DEFAULT 0,
`tenant_id` BIGINT DEFAULT NULL,
`extra_info` TEXT,
`sync_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_host_cluster_name` (`cluster_id`, `host_name`),
KEY `idx_host_name` (`host_name`),
KEY `idx_host_cluster` (`cluster_id`),
KEY `idx_host_health` (`health_status`),
KEY `idx_host_agent` (`agent_status`),
KEY `idx_host_sync` (`sync_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_service` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`service_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) DEFAULT NULL,
`cluster_id` BIGINT NOT NULL,
`version` VARCHAR(64) DEFAULT NULL,
`service_status` VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
`health_score` INT NOT NULL DEFAULT 100,
`health_status` VARCHAR(32) NOT NULL DEFAULT 'HEALTHY',
`total_components` INT NOT NULL DEFAULT 0,
`running_components` INT NOT NULL DEFAULT 0,
`alert_count` INT NOT NULL DEFAULT 0,
`extra_info` TEXT,
`sync_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_service_cluster_name` (`cluster_id`, `service_name`),
KEY `idx_service_cluster` (`cluster_id`),
KEY `idx_service_health` (`health_status`),
KEY `idx_service_sync` (`sync_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_component` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`component_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) DEFAULT NULL,
`service_id` BIGINT NOT NULL,
`cluster_id` BIGINT NOT NULL,
`category` VARCHAR(64) DEFAULT NULL,
`version` VARCHAR(64) DEFAULT NULL,
`component_status` VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
`health_score` INT NOT NULL DEFAULT 100,
`health_status` VARCHAR(32) NOT NULL DEFAULT 'HEALTHY',
`total_instances` INT NOT NULL DEFAULT 0,
`running_instances` INT NOT NULL DEFAULT 0,
`alert_count` INT NOT NULL DEFAULT 0,
`dependencies` TEXT,
`data_source_type` VARCHAR(64) DEFAULT NULL,
`template_id` BIGINT DEFAULT NULL,
`extra_info` TEXT,
`sync_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_component_service_name` (`service_id`, `component_name`),
KEY `idx_component_name` (`component_name`),
KEY `idx_component_cluster` (`cluster_id`),
KEY `idx_component_category` (`category`),
KEY `idx_component_health` (`health_status`),
KEY `idx_component_status` (`component_status`),
KEY `idx_component_sync` (`sync_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_component_instance` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`component_id` BIGINT NOT NULL,
`cluster_id` BIGINT NOT NULL,
`host_id` BIGINT DEFAULT NULL,
`host_name` VARCHAR(255) NOT NULL,
`instance_name` VARCHAR(255) DEFAULT NULL,
`role` VARCHAR(128) DEFAULT NULL,
`process_id` VARCHAR(64) DEFAULT NULL,
`port` INT DEFAULT NULL,
`status` VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
`health_score` INT NOT NULL DEFAULT 100,
`health_status` VARCHAR(32) NOT NULL DEFAULT 'HEALTHY',
`heap_used_mb` BIGINT DEFAULT NULL,
`heap_max_mb` BIGINT DEFAULT NULL,
`cpu_usage` DOUBLE DEFAULT NULL,
`alert_count` INT NOT NULL DEFAULT 0,
`extra_info` TEXT,
`sync_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_instance_component_host` (`component_id`, `host_name`),
KEY `idx_instance_host` (`host_id`),
KEY `idx_instance_cluster` (`cluster_id`),
KEY `idx_instance_name` (`instance_name`),
KEY `idx_instance_status` (`status`),
KEY `idx_instance_sync` (`sync_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_service_snapshot` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`cluster_id` BIGINT NOT NULL,
`cluster_name` VARCHAR(128) NOT NULL,
`service_id` BIGINT NOT NULL,
`service_name` VARCHAR(64) NOT NULL,
`health_score` INT DEFAULT 100,
`risk_level` VARCHAR(16) DEFAULT 'UNKNOWN',
`metrics_json` JSON DEFAULT NULL,
`snapshot_time` DATETIME NOT NULL,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_service_snapshot_time` (`cluster_id`, `service_name`, `snapshot_time`),
KEY `idx_cluster_service` (`cluster_id`, `service_name`),
KEY `idx_snapshot_time` (`snapshot_time`),
KEY `idx_cluster_service_time` (`cluster_id`, `service_name`, `snapshot_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_alert_rule` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`rule_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) DEFAULT NULL,
`rule_type` VARCHAR(64) NOT NULL,
`rule_group_id` BIGINT DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`metric_name` VARCHAR(255) DEFAULT NULL,
`expression` TEXT,
`condition` VARCHAR(64) DEFAULT NULL,
`threshold` DOUBLE DEFAULT NULL,
`duration` INT NOT NULL DEFAULT 0,
`severity` VARCHAR(16) NOT NULL DEFAULT 'P3',
`message_template` TEXT,
`description` TEXT,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`labels` TEXT,
`annotations` TEXT,
`extra_info` TEXT,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_rule_enabled` (`enabled`),
KEY `idx_rule_name` (`rule_name`),
KEY `idx_rule_component_metric` (`component_name`, `metric_name`),
KEY `idx_rule_severity` (`severity`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_alert_event` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`fingerprint` VARCHAR(255) NOT NULL,
`rule_id` BIGINT DEFAULT NULL,
`rule_name` VARCHAR(128) DEFAULT NULL,
`severity` VARCHAR(16) NOT NULL DEFAULT 'P3',
`status` VARCHAR(32) NOT NULL DEFAULT 'FIRING',
`cluster_id` BIGINT DEFAULT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`service_name` VARCHAR(128) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`host_name` VARCHAR(255) DEFAULT NULL,
`instance_name` VARCHAR(255) DEFAULT NULL,
`event_source` VARCHAR(32) NOT NULL DEFAULT 'THRESHOLD_ENGINE',
`source_ref` VARCHAR(255) DEFAULT NULL,
`source_state` VARCHAR(32) DEFAULT NULL,
`maintenance_state` VARCHAR(32) DEFAULT NULL,
`title` VARCHAR(255) DEFAULT NULL,
`message` TEXT,
`current_value` DOUBLE DEFAULT NULL,
`threshold` DOUBLE DEFAULT NULL,
`fired_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`resolved_time` DATETIME DEFAULT NULL,
`acknowledged_time` DATETIME DEFAULT NULL,
`acknowledged_by` VARCHAR(128) DEFAULT NULL,
`labels` TEXT,
`annotations` TEXT,
`extra_info` TEXT,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_event_fingerprint_status` (`fingerprint`, `status`),
KEY `idx_event_status_severity` (`status`, `severity`),
KEY `idx_event_cluster` (`cluster_name`),
KEY `idx_event_service` (`service_name`),
KEY `idx_event_component` (`component_name`),
KEY `idx_event_host` (`host_name`),
KEY `idx_event_source` (`event_source`, `source_ref`),
KEY `idx_event_rule` (`rule_id`),
KEY `idx_event_fired_time` (`fired_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_official_alert_snapshot` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`cluster_name` VARCHAR(128) NOT NULL,
`ambari_alert_id` BIGINT DEFAULT NULL,
`definition_id` BIGINT NOT NULL,
`definition_name` VARCHAR(255) DEFAULT NULL,
`label` VARCHAR(255) DEFAULT NULL,
`state` VARCHAR(32) NOT NULL,
`service_name` VARCHAR(128) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`host_name` VARCHAR(255) NOT NULL DEFAULT '*',
`instance_name` VARCHAR(255) NOT NULL DEFAULT '*',
`alert_scope` VARCHAR(32) DEFAULT NULL,
`maintenance_state` VARCHAR(32) DEFAULT NULL,
`alert_text` TEXT,
`original_timestamp` BIGINT DEFAULT NULL,
`latest_timestamp` BIGINT DEFAULT NULL,
`occurrences` INT DEFAULT NULL,
`raw_json` TEXT,
`sync_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_official_alert_scope` (`cluster_name`, `definition_id`, `host_name`, `instance_name`),
KEY `idx_official_alert_state` (`cluster_name`, `state`),
KEY `idx_official_alert_service` (`cluster_name`, `service_name`, `component_name`),
KEY `idx_official_alert_host` (`cluster_name`, `host_name`),
KEY `idx_official_alert_sync` (`sync_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_health_snapshot` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`object_type` VARCHAR(32) NOT NULL,
`object_id` BIGINT NOT NULL,
`object_name` VARCHAR(255) NOT NULL,
`cluster_id` BIGINT DEFAULT NULL,
`health_score` INT NOT NULL DEFAULT 100,
`health_status` VARCHAR(32) NOT NULL DEFAULT 'HEALTHY',
`availability_score` INT NOT NULL DEFAULT 0,
`alert_score` INT NOT NULL DEFAULT 0,
`performance_score` INT NOT NULL DEFAULT 0,
`capacity_score` INT NOT NULL DEFAULT 0,
`dependency_score` INT NOT NULL DEFAULT 0,
`stability_score` INT NOT NULL DEFAULT 0,
`alert_count` INT NOT NULL DEFAULT 0,
`p1_count` INT NOT NULL DEFAULT 0,
`p2_count` INT NOT NULL DEFAULT 0,
`p3_count` INT NOT NULL DEFAULT 0,
`p4_count` INT NOT NULL DEFAULT 0,
`snapshot_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`extra_info` TEXT,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_snapshot_object_time` (`object_type`, `object_id`, `snapshot_time`),
KEY `idx_snapshot_cluster_time` (`cluster_id`, `snapshot_time`),
KEY `idx_snapshot_status_time` (`health_status`, `snapshot_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_agent_dynamic_config` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`agent_id` VARCHAR(255) NOT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`host_name` VARCHAR(255) DEFAULT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`config_version` BIGINT NOT NULL DEFAULT 1,
`description` VARCHAR(512) DEFAULT NULL,
`published_by` VARCHAR(128) DEFAULT NULL,
`published_time` DATETIME DEFAULT NULL,
`config_content` LONGTEXT,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_agent_dynamic_config_agent_id` (`agent_id`),
KEY `idx_agent_dynamic_config_cluster` (`cluster_name`),
KEY `idx_agent_dynamic_config_host` (`host_name`),
KEY `idx_agent_dynamic_config_enabled` (`enabled`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_metric_definition` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`metric_code` VARCHAR(300) NOT NULL,
`metric_name` VARCHAR(255) NOT NULL,
`display_name` VARCHAR(255) DEFAULT NULL,
`metric_group` VARCHAR(64) NOT NULL,
`priority` VARCHAR(8) DEFAULT 'P2',
`sub_group` VARCHAR(64) DEFAULT NULL,
`unit` VARCHAR(64) DEFAULT NULL,
`metric_type` VARCHAR(32) NOT NULL DEFAULT 'GAUGE',
`metric_kind` VARCHAR(32) NOT NULL DEFAULT 'COLLECTED',
`service_name` VARCHAR(128) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`compute_type` VARCHAR(32) NOT NULL DEFAULT 'NONE',
`source_profile` VARCHAR(64) NOT NULL DEFAULT 'CORE',
`ingest_status` VARCHAR(32) NOT NULL DEFAULT 'CANDIDATE',
`stability_status` VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
`metadata_status` VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN',
`metadata_source` VARCHAR(64) NOT NULL DEFAULT 'FALLBACK',
`first_seen_time` DATETIME DEFAULT NULL,
`last_seen_time` DATETIME DEFAULT NULL,
`seen_count` BIGINT NOT NULL DEFAULT 0,
`sample_path` VARCHAR(1024) DEFAULT NULL,
`sample_labels` TEXT,
`depends_on_metrics` TEXT,
`compute_owner` VARCHAR(128) DEFAULT NULL,
`compute_interval_sec` INT DEFAULT NULL,
`reject_reason` VARCHAR(512) DEFAULT NULL,
`value_type` VARCHAR(32) NOT NULL DEFAULT 'NUMBER',
`aggregation_mode` VARCHAR(32) NOT NULL DEFAULT 'AVG',
`label_keys` TEXT,
`default_chart_type` VARCHAR(32) DEFAULT 'LINE',
`default_time_range` VARCHAR(32) DEFAULT '1h',
`display_order` INT NOT NULL DEFAULT 0,
`enable_fixed_threshold` TINYINT(1) NOT NULL DEFAULT 1,
`enable_smart_threshold` TINYINT(1) NOT NULL DEFAULT 0,
`enable_alert` TINYINT(1) NOT NULL DEFAULT 1,
`enable_health_score` TINYINT(1) NOT NULL DEFAULT 0,
`health_score_weight` INT DEFAULT 0,
`description` TEXT,
`extra_info` TEXT,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_metric_code` (`metric_code`),
UNIQUE KEY `uk_metric_name` (`metric_name`),
KEY `idx_metric_group` (`metric_group`, `sub_group`),
KEY `idx_metric_kind` (`metric_kind`),
KEY `idx_metric_ingest_status` (`ingest_status`, `source_profile`),
KEY `idx_metric_compute_type` (`metric_kind`, `compute_type`),
KEY `idx_metric_service` (`service_name`, `component_name`),
KEY `idx_metric_last_seen` (`last_seen_time`),
KEY `idx_metric_metadata` (`metadata_status`, `metadata_source`),
KEY `idx_metric_alert` (`enable_alert`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_threshold_policy` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`policy_code` VARCHAR(128) NOT NULL,
`policy_name` VARCHAR(255) NOT NULL,
`metric_code` VARCHAR(300) NOT NULL,
`policy_source` VARCHAR(32) NOT NULL DEFAULT 'SYSTEM',
`threshold_mode` VARCHAR(32) NOT NULL DEFAULT 'FIXED_ONLY',
`merge_mode` VARCHAR(32) DEFAULT NULL,
`condition_operator` VARCHAR(32) NOT NULL,
`condition_value1` VARCHAR(255) DEFAULT NULL,
`condition_value2` VARCHAR(255) DEFAULT NULL,
`condition_value_type` VARCHAR(32) NOT NULL DEFAULT 'NUMBER',
`condition_value_list` TEXT,
`severity` VARCHAR(16) NOT NULL DEFAULT 'WARNING',
`trigger_window_type` VARCHAR(32) NOT NULL DEFAULT 'CONSECUTIVE',
`trigger_window_size` INT NOT NULL DEFAULT 1,
`trigger_match_count` INT NOT NULL DEFAULT 1,
`recover_window_type` VARCHAR(32) NOT NULL DEFAULT 'CONSECUTIVE',
`recover_window_size` INT NOT NULL DEFAULT 1,
`recover_match_count` INT NOT NULL DEFAULT 1,
`priority` INT NOT NULL DEFAULT 100,
`version` INT NOT NULL DEFAULT 1,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`effective_from` DATETIME DEFAULT NULL,
`effective_to` DATETIME DEFAULT NULL,
`description` TEXT,
`extra_info` TEXT,
`create_by` VARCHAR(128) DEFAULT NULL,
`update_by` VARCHAR(128) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_threshold_policy_code` (`policy_code`),
KEY `idx_threshold_metric` (`metric_code`),
KEY `idx_threshold_enabled` (`enabled`, `policy_source`),
KEY `idx_threshold_mode` (`threshold_mode`, `severity`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_threshold_policy_scope` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`policy_id` BIGINT NOT NULL,
`scope_type` VARCHAR(32) NOT NULL,
`scope_ref` VARCHAR(512) NOT NULL,
`scope_name` VARCHAR(255) DEFAULT NULL,
`scope_priority` INT NOT NULL DEFAULT 100,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_policy_scope` (`policy_id`, `scope_type`, `scope_ref`(255)),
KEY `idx_scope_lookup` (`scope_type`, `scope_ref`(255), `enabled`),
KEY `idx_scope_policy` (`policy_id`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_threshold_snapshot` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`metric_code` VARCHAR(300) NOT NULL,
`scope_type` VARCHAR(32) NOT NULL,
`scope_ref` VARCHAR(512) NOT NULL,
`scope_name` VARCHAR(255) DEFAULT NULL,
`policy_id` BIGINT DEFAULT NULL,
`policy_code` VARCHAR(128) DEFAULT NULL,
`policy_version` INT DEFAULT NULL,
`policy_source` VARCHAR(32) DEFAULT NULL,
`threshold_mode` VARCHAR(32) NOT NULL DEFAULT 'FIXED_ONLY',
`merge_mode` VARCHAR(32) DEFAULT NULL,
`fixed_upper` DOUBLE DEFAULT NULL,
`fixed_lower` DOUBLE DEFAULT NULL,
`smart_upper` DOUBLE DEFAULT NULL,
`smart_lower` DOUBLE DEFAULT NULL,
`effective_operator` VARCHAR(32) DEFAULT NULL,
`effective_value1` VARCHAR(255) DEFAULT NULL,
`effective_value2` VARCHAR(255) DEFAULT NULL,
`effective_upper` DOUBLE DEFAULT NULL,
`effective_lower` DOUBLE DEFAULT NULL,
`sample_count` INT NOT NULL DEFAULT 0,
`window_start` DATETIME DEFAULT NULL,
`window_end` DATETIME DEFAULT NULL,
`calculated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`expire_at` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_threshold_snapshot` (`metric_code`, `scope_type`, `scope_ref`(255)),
KEY `idx_snapshot_metric_scope` (`metric_code`, `scope_type`, `scope_ref`(255)),
KEY `idx_snapshot_policy` (`policy_id`, `policy_version`),
KEY `idx_snapshot_time` (`calculated_at`, `expire_at`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_threshold_recommendation` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`recommendation_code` VARCHAR(128) NOT NULL,
`metric_code` VARCHAR(300) NOT NULL,
`scope_type` VARCHAR(32) NOT NULL,
`scope_ref` VARCHAR(512) NOT NULL,
`scope_name` VARCHAR(255) DEFAULT NULL,
`current_policy_id` BIGINT DEFAULT NULL,
`current_policy_code` VARCHAR(128) DEFAULT NULL,
`current_policy_source` VARCHAR(32) DEFAULT NULL,
`recommended_operator` VARCHAR(32) NOT NULL,
`recommended_value1` VARCHAR(255) DEFAULT NULL,
`recommended_value2` VARCHAR(255) DEFAULT NULL,
`recommended_upper` DOUBLE DEFAULT NULL,
`recommended_lower` DOUBLE DEFAULT NULL,
`algorithm_name` VARCHAR(128) DEFAULT NULL,
`algorithm_version` VARCHAR(64) DEFAULT NULL,
`sample_count` INT NOT NULL DEFAULT 0,
`window_start` DATETIME DEFAULT NULL,
`window_end` DATETIME DEFAULT NULL,
`confidence` DOUBLE DEFAULT NULL,
`status` VARCHAR(32) NOT NULL DEFAULT 'PENDING',
`change_reason` VARCHAR(1024) DEFAULT NULL,
`extra_info` TEXT,
`review_by` VARCHAR(128) DEFAULT NULL,
`review_reason` VARCHAR(1024) DEFAULT NULL,
`review_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_threshold_recommendation_code` (`recommendation_code`),
KEY `idx_recommendation_metric_scope` (`metric_code`, `scope_type`, `scope_ref`(255), `status`),
KEY `idx_recommendation_policy` (`current_policy_id`, `current_policy_source`),
KEY `idx_recommendation_window` (`window_start`, `window_end`),
KEY `idx_recommendation_time` (`create_time`, `review_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_threshold_event` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`event_code` VARCHAR(128) NOT NULL,
`metric_code` VARCHAR(300) NOT NULL,
`scope_type` VARCHAR(32) NOT NULL,
`scope_ref` VARCHAR(512) NOT NULL,
`scope_name` VARCHAR(255) DEFAULT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`service_name` VARCHAR(128) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`instance_name` VARCHAR(255) DEFAULT NULL,
`host_name` VARCHAR(255) DEFAULT NULL,
`policy_id` BIGINT DEFAULT NULL,
`policy_code` VARCHAR(128) DEFAULT NULL,
`policy_version` INT DEFAULT NULL,
`policy_source` VARCHAR(32) DEFAULT NULL,
`event_level` VARCHAR(16) NOT NULL DEFAULT 'WARNING',
`status` VARCHAR(32) NOT NULL DEFAULT 'PENDING',
`match_direction` VARCHAR(16) DEFAULT NULL,
`actual_value` VARCHAR(255) DEFAULT NULL,
`effective_operator` VARCHAR(32) DEFAULT NULL,
`effective_value1` VARCHAR(255) DEFAULT NULL,
`effective_value2` VARCHAR(255) DEFAULT NULL,
`effective_upper` DOUBLE DEFAULT NULL,
`effective_lower` DOUBLE DEFAULT NULL,
`sample_time` DATETIME DEFAULT NULL,
`occurred_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`firing_at` DATETIME DEFAULT NULL,
`acked_at` DATETIME DEFAULT NULL,
`silenced_at` DATETIME DEFAULT NULL,
`recovered_at` DATETIME DEFAULT NULL,
`closed_at` DATETIME DEFAULT NULL,
`suppressed` TINYINT(1) DEFAULT 0,
`suppression_type` VARCHAR(32) DEFAULT NULL,
`suppression_reason` VARCHAR(512) DEFAULT NULL,
`suppressed_by_event_id` BIGINT DEFAULT NULL,
`extra_info` TEXT,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_threshold_event_code` (`event_code`),
KEY `idx_event_scope` (`scope_type`, `scope_ref`(255), `status`),
KEY `idx_event_object` (`cluster_name`, `service_name`, `component_name`, `host_name`, `status`),
KEY `idx_event_metric` (`metric_code`, `event_level`, `status`),
KEY `idx_event_time` (`occurred_at`, `firing_at`, `recovered_at`),
KEY `idx_event_suppressed` (`suppressed`, `suppression_type`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_threshold_event_action` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action_code` VARCHAR(128) NOT NULL,
`event_id` BIGINT NOT NULL,
`event_code` VARCHAR(128) NOT NULL,
`action_type` VARCHAR(32) NOT NULL,
`action_status` VARCHAR(32) NOT NULL DEFAULT 'SUCCESS',
`operator` VARCHAR(128) DEFAULT NULL,
`reason` VARCHAR(1024) DEFAULT NULL,
`action_content` TEXT,
`linked_silence_id` BIGINT DEFAULT NULL,
`linked_window_id` BIGINT DEFAULT NULL,
`start_time` DATETIME DEFAULT NULL,
`end_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_threshold_event_action_code` (`action_code`),
KEY `idx_action_event` (`event_id`, `action_type`, `create_time`),
KEY `idx_action_event_code` (`event_code`, `action_type`, `create_time`),
KEY `idx_action_operator` (`operator`, `create_time`),
KEY `idx_action_linked_silence` (`linked_silence_id`),
KEY `idx_action_linked_window` (`linked_window_id`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_threshold_audit_log` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`target_type` VARCHAR(64) NOT NULL,
`target_id` BIGINT DEFAULT NULL,
`target_code` VARCHAR(128) DEFAULT NULL,
`operation_type` VARCHAR(64) NOT NULL,
`operator` VARCHAR(128) DEFAULT NULL,
`before_value` LONGTEXT,
`after_value` LONGTEXT,
`remark` VARCHAR(512) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_audit_target` (`target_type`, `target_id`),
KEY `idx_audit_code` (`target_code`),
KEY `idx_audit_time` (`create_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_maintenance_window` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`window_code` VARCHAR(128) NOT NULL,
`window_name` VARCHAR(255) NOT NULL,
`scope_type` VARCHAR(32) NOT NULL,
`scope_ref` VARCHAR(512) NOT NULL,
`scope_name` VARCHAR(255) DEFAULT NULL,
`start_time` DATETIME NOT NULL,
`end_time` DATETIME NOT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`description` TEXT,
`create_by` VARCHAR(128) DEFAULT NULL,
`update_by` VARCHAR(128) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_window_code` (`window_code`),
KEY `idx_window_scope` (`scope_type`, `scope_ref`(255), `enabled`),
KEY `idx_window_time` (`start_time`, `end_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_silence_rule` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`silence_code` VARCHAR(128) NOT NULL,
`silence_name` VARCHAR(255) NOT NULL,
`metric_code` VARCHAR(300) DEFAULT NULL,
`scope_type` VARCHAR(32) NOT NULL,
`scope_ref` VARCHAR(512) NOT NULL,
`scope_name` VARCHAR(255) DEFAULT NULL,
`event_level` VARCHAR(16) DEFAULT NULL,
`silence_mode` VARCHAR(32) NOT NULL DEFAULT 'SUPPRESS_NOTIFY',
`start_time` DATETIME NOT NULL,
`end_time` DATETIME NOT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`description` TEXT,
`create_by` VARCHAR(128) DEFAULT NULL,
`update_by` VARCHAR(128) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_silence_code` (`silence_code`),
KEY `idx_silence_scope` (`scope_type`, `scope_ref`(255), `enabled`),
KEY `idx_silence_metric` (`metric_code`, `event_level`),
KEY `idx_silence_time` (`start_time`, `end_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_ha_lock` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`lock_name` VARCHAR(128) NOT NULL,
`owner_id` VARCHAR(255) DEFAULT NULL,
`lock_token` VARCHAR(64) DEFAULT NULL,
`lock_until` DATETIME NOT NULL,
`last_heartbeat_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_monitor_ha_lock_name` (`lock_name`),
KEY `idx_monitor_ha_lock_until` (`lock_until`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_metric_dedupe_key` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`dedupe_hash` CHAR(40) NOT NULL,
`dedupe_key` VARCHAR(1024) NOT NULL,
`expire_time` DATETIME NOT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_metric_dedupe_hash` (`dedupe_hash`),
KEY `idx_metric_dedupe_expire_time` (`expire_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_metric_ingest_batch` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`component_name` VARCHAR(64) NOT NULL,
`cluster_name` VARCHAR(128) NOT NULL,
`source_job` VARCHAR(128) NOT NULL,
`batch_id` VARCHAR(128) NOT NULL,
`request_hash` VARCHAR(64) DEFAULT NULL,
`status` VARCHAR(32) NOT NULL DEFAULT 'PROCESSING',
`accepted_count` INT NOT NULL DEFAULT 0,
`ignored_count` INT NOT NULL DEFAULT 0,
`message` VARCHAR(512) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_metric_ingest_batch` (`component_name`, `cluster_name`, `source_job`, `batch_id`),
KEY `idx_metric_ingest_batch_status` (`status`, `update_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_baseline` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`metric_name` VARCHAR(128) NOT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`host_name` VARCHAR(255) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`instance_name` VARCHAR(255) DEFAULT NULL,
`time_slot_hour` TINYINT NOT NULL,
`day_of_week` TINYINT NOT NULL,
`mean_value` DOUBLE DEFAULT NULL,
`stddev` DOUBLE DEFAULT NULL,
`upper_bound` DOUBLE DEFAULT NULL,
`lower_bound` DOUBLE DEFAULT NULL,
`sample_count` INT DEFAULT NULL,
`computed_at` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_baseline_metric_host` (`metric_name`, `host_name`),
KEY `idx_baseline_metric_slot` (`metric_name`, `time_slot_hour`, `day_of_week`),
KEY `idx_baseline_cluster` (`cluster_name`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_anomaly_event` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`metric_name` VARCHAR(128) NOT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`host_name` VARCHAR(255) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`instance_name` VARCHAR(255) DEFAULT NULL,
`current_value` DOUBLE DEFAULT NULL,
`expected_value` DOUBLE DEFAULT NULL,
`baseline_upper` DOUBLE DEFAULT NULL,
`baseline_lower` DOUBLE DEFAULT NULL,
`anomaly_score` DOUBLE DEFAULT NULL,
`detection_method` VARCHAR(32) DEFAULT NULL,
`status` VARCHAR(16) NOT NULL DEFAULT 'ACTIVE',
`severity` VARCHAR(16) DEFAULT 'WARNING',
`fingerprint` VARCHAR(255) NOT NULL,
`detected_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`resolved_at` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_anomaly_fingerprint_status` (`fingerprint`, `status`),
KEY `idx_anomaly_metric_host` (`metric_name`, `host_name`),
KEY `idx_anomaly_cluster` (`cluster_name`),
KEY `idx_anomaly_detected_at` (`detected_at`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_capacity_forecast` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`metric_name` VARCHAR(128) NOT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`host_name` VARCHAR(255) DEFAULT NULL,
`dimension` VARCHAR(255) DEFAULT NULL,
`current_value` DOUBLE DEFAULT NULL,
`capacity_max` DOUBLE DEFAULT NULL,
`usage_percent` DOUBLE DEFAULT NULL,
`growth_rate_per_hour` DOUBLE DEFAULT NULL,
`r2_score` DOUBLE DEFAULT NULL,
`predicted_exhaustion_time` DATETIME DEFAULT NULL,
`days_remaining` DOUBLE DEFAULT NULL,
`severity` VARCHAR(16) DEFAULT 'INFO',
`sample_count` INT DEFAULT NULL,
`forecasted_at` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_forecast_metric_host` (`metric_name`, `host_name`),
KEY `idx_forecast_cluster` (`cluster_name`),
KEY `idx_forecast_severity` (`severity`),
KEY `idx_forecast_days` (`days_remaining`),
KEY `idx_forecast_forecasted_at` (`forecasted_at`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_notification_channel` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`channel_code` VARCHAR(64) NOT NULL,
`channel_name` VARCHAR(128) NOT NULL,
`channel_type` VARCHAR(32) NOT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`config_json` TEXT NOT NULL,
`description` VARCHAR(512) DEFAULT NULL,
`sort_order` INT DEFAULT 0,
`create_by` VARCHAR(64) DEFAULT NULL,
`update_by` VARCHAR(64) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_channel_code` (`channel_code`),
KEY `idx_channel_type` (`channel_type`, `enabled`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_notification_route` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`route_code` VARCHAR(64) NOT NULL,
`route_name` VARCHAR(128) NOT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`event_type` VARCHAR(32) NOT NULL DEFAULT 'THRESHOLD',
`event_source_filter` VARCHAR(128) DEFAULT NULL,
`severity_filter` VARCHAR(128) DEFAULT NULL,
`service_name` VARCHAR(128) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`scope_type` VARCHAR(32) DEFAULT NULL,
`route_priority` INT NOT NULL DEFAULT 100,
`channel_codes` TEXT,
`description` VARCHAR(512) DEFAULT NULL,
`create_by` VARCHAR(64) DEFAULT NULL,
`update_by` VARCHAR(64) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_notification_route_code` (`route_code`),
KEY `idx_notification_route_match` (`enabled`, `event_type`, `route_priority`),
KEY `idx_notification_route_cluster` (`cluster_name`, `enabled`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_notification_route_subject` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`route_id` BIGINT NOT NULL,
`subject_type` VARCHAR(32) NOT NULL,
`subject_ref` VARCHAR(128) DEFAULT NULL,
`subject_name` VARCHAR(128) DEFAULT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_route_subject_route` (`route_id`, `enabled`),
KEY `idx_route_subject_ref` (`subject_type`, `subject_ref`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_notification_duty_group` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`group_code` VARCHAR(64) NOT NULL,
`group_name` VARCHAR(128) NOT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`members_json` TEXT,
`description` VARCHAR(512) DEFAULT NULL,
`create_by` VARCHAR(64) DEFAULT NULL,
`update_by` VARCHAR(64) DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_duty_group_code` (`group_code`),
KEY `idx_duty_group_enabled` (`enabled`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_notification_history` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`alert_event_id` BIGINT DEFAULT NULL,
`event_id` BIGINT DEFAULT NULL,
`event_code` VARCHAR(64) DEFAULT NULL,
`event_type` VARCHAR(32) DEFAULT NULL,
`channel_id` BIGINT NOT NULL,
`channel_type` VARCHAR(32) NOT NULL,
`channel_code` VARCHAR(64) DEFAULT NULL,
`channel_name` VARCHAR(128) DEFAULT NULL,
`route_id` BIGINT DEFAULT NULL,
`route_code` VARCHAR(64) DEFAULT NULL,
`route_name` VARCHAR(128) DEFAULT NULL,
`subject_type` VARCHAR(32) DEFAULT NULL,
`subject_ref` VARCHAR(128) DEFAULT NULL,
`subject_name` VARCHAR(128) DEFAULT NULL,
`receiver_user` VARCHAR(128) DEFAULT NULL,
`alert_title` VARCHAR(255) DEFAULT NULL,
`alert_summary` TEXT,
`alert_severity` VARCHAR(32) DEFAULT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`service_name` VARCHAR(128) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`instance_name` VARCHAR(255) DEFAULT NULL,
`status` VARCHAR(16) NOT NULL,
`send_time` DATETIME DEFAULT NULL,
`error_message` TEXT,
`request_time` DATETIME DEFAULT NULL,
`response_time` DATETIME DEFAULT NULL,
`response_time_ms` BIGINT DEFAULT NULL,
`cost_ms` INT DEFAULT NULL,
`request_content` TEXT,
`response_content` TEXT,
`retry_count` INT DEFAULT 0,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_event` (`event_id`, `event_type`),
KEY `idx_alert_event` (`alert_event_id`),
KEY `idx_channel` (`channel_id`, `request_time`),
KEY `idx_status` (`status`, `request_time`),
KEY `idx_history_cluster_status` (`cluster_name`, `status`, `send_time`),
KEY `idx_history_route_subject` (`route_code`, `subject_type`, `subject_ref`),
KEY `idx_history_send_time` (`send_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_notification_delivery` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`delivery_code` VARCHAR(64) NOT NULL,
`notification_id` BIGINT DEFAULT NULL,
`event_type` VARCHAR(32) NOT NULL,
`event_id` BIGINT DEFAULT NULL,
`event_code` VARCHAR(64) DEFAULT NULL,
`route_id` BIGINT DEFAULT NULL,
`route_code` VARCHAR(64) DEFAULT NULL,
`route_name` VARCHAR(128) DEFAULT NULL,
`channel_id` BIGINT DEFAULT NULL,
`channel_code` VARCHAR(64) DEFAULT NULL,
`subject_type` VARCHAR(32) DEFAULT NULL,
`subject_ref` VARCHAR(128) DEFAULT NULL,
`subject_name` VARCHAR(128) DEFAULT NULL,
`receiver_user` VARCHAR(128) DEFAULT NULL,
`delivery_status` VARCHAR(16) NOT NULL DEFAULT 'PENDING',
`error_message` TEXT,
`read_status` VARCHAR(16) NOT NULL DEFAULT 'UNREAD',
`read_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_delivery_code` (`delivery_code`),
KEY `idx_delivery_event` (`event_type`, `event_id`, `event_code`),
KEY `idx_delivery_route_subject` (`route_code`, `subject_type`, `subject_ref`),
KEY `idx_delivery_receiver` (`receiver_user`, `read_status`, `create_time`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_in_app_notification` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`notification_code` VARCHAR(64) NOT NULL,
`event_type` VARCHAR(32) NOT NULL,
`event_id` BIGINT DEFAULT NULL,
`event_code` VARCHAR(64) DEFAULT NULL,
`channel_id` BIGINT DEFAULT NULL,
`channel_code` VARCHAR(64) DEFAULT NULL,
`route_id` BIGINT DEFAULT NULL,
`route_code` VARCHAR(64) DEFAULT NULL,
`route_name` VARCHAR(128) DEFAULT NULL,
`cluster_name` VARCHAR(128) DEFAULT NULL,
`service_name` VARCHAR(128) DEFAULT NULL,
`component_name` VARCHAR(128) DEFAULT NULL,
`instance_name` VARCHAR(255) DEFAULT NULL,
`scope_type` VARCHAR(32) DEFAULT NULL,
`scope_ref` VARCHAR(255) DEFAULT NULL,
`scope_name` VARCHAR(255) DEFAULT NULL,
`severity` VARCHAR(32) DEFAULT NULL,
`title` VARCHAR(255) NOT NULL,
`content` TEXT,
`receiver_scope` VARCHAR(32) NOT NULL DEFAULT 'ADMIN',
`receiver_user` VARCHAR(128) DEFAULT NULL,
`subject_type` VARCHAR(32) DEFAULT NULL,
`subject_ref` VARCHAR(128) DEFAULT NULL,
`subject_name` VARCHAR(128) DEFAULT NULL,
`read_status` VARCHAR(16) NOT NULL DEFAULT 'UNREAD',
`read_time` DATETIME DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_in_app_code` (`notification_code`),
KEY `idx_in_app_event` (`event_type`, `event_id`),
KEY `idx_in_app_code` (`event_code`),
KEY `idx_in_app_cluster_status` (`cluster_name`, `read_status`, `create_time`),
KEY `idx_in_app_receiver` (`receiver_scope`, `receiver_user`, `read_status`),
KEY `idx_in_app_subject` (`subject_type`, `subject_ref`, `read_status`)
) DEFAULT CHARSET = utf8mb4;
INSERT INTO `monitor_notification_channel` (`channel_code`, `channel_name`, `channel_type`, `enabled`, `config_json`, `description`, `sort_order`)
VALUES
('default-in-app', '默认站内信', 'IN_APP', 1, '{"template":"default"}', '消息中心内置站内信通道,不支持删除', 0),
('default-wechat', '默认企业微信', 'WECHAT', 0, '{"webhookUrl":"","msgType":"markdown","mentionedMobileList":[]}', '默认企业微信通知渠道', 1),
('default-dingtalk', '默认钉钉', 'DINGTALK', 0, '{"webhookUrl":"","secret":"","msgType":"markdown","atMobiles":[],"atUserIds":[],"atAll":false}', '默认钉钉通知渠道', 2),
('default-feishu', '默认飞书', 'FEISHU', 0, '{"webhookUrl":"","secret":"","msgType":"post","atAll":false}', '默认飞书通知渠道', 3),
('default-email', '默认邮件', 'EMAIL', 0, '{"host":"","port":587,"username":"","password":"","from":"","to":""}', '默认邮件通知渠道', 4),
('default-webhook', '默认Webhook', 'WEBHOOK', 0, '{"url":""}', '默认Webhook通知渠道', 5)
ON DUPLICATE KEY UPDATE
`channel_name` = VALUES(`channel_name`),
`channel_type` = VALUES(`channel_type`),
`config_json` = CASE
WHEN `channel_code` = 'default-in-app' THEN VALUES(`config_json`)
ELSE `config_json`
END,
`description` = VALUES(`description`),
`sort_order` = VALUES(`sort_order`);
INSERT INTO `monitor_notification_duty_group` (`group_code`, `group_name`, `enabled`, `members_json`, `description`)
VALUES
('platform-alert-duty', '平台告警值班组', 1, '["admin"]', '默认静态值班组,可在通知配置中调整成员')
ON DUPLICATE KEY UPDATE
`group_name` = VALUES(`group_name`),
`enabled` = VALUES(`enabled`),
`members_json` = CASE
WHEN `members_json` IS NULL OR `members_json` = '' OR `members_json` = '[]' THEN VALUES(`members_json`)
ELSE `members_json`
END,
`description` = VALUES(`description`);
INSERT INTO `monitor_notification_route` (`route_code`, `route_name`, `enabled`, `cluster_name`, `event_type`, `event_source_filter`, `severity_filter`, `service_name`, `component_name`, `scope_type`, `route_priority`, `channel_codes`, `description`)
VALUES
('default-critical-alert-route', '严重阈值告警通知集群管理员', 1, '*', 'THRESHOLD', 'THRESHOLD_ENGINE', 'CRITICAL', '*', '*', '*', 10, '["default-in-app"]', '严重阈值告警默认写入集群管理员站内信'),
('default-warning-alert-route', '警告阈值告警通知集群管理员', 1, '*', 'THRESHOLD', 'THRESHOLD_ENGINE', 'WARNING', '*', '*', '*', 20, '["default-in-app"]', '警告阈值告警默认写入集群管理员站内信'),
('default-official-critical-alert-route', '严重内置健康告警通知集群管理员', 1, '*', 'ALERT', 'AMBARI_OFFICIAL', 'CRITICAL', '*', '*', '*', 30, '["default-in-app"]', '严重内置健康告警默认写入集群管理员站内信'),
('default-official-warning-alert-route', '警告内置健康告警通知集群管理员', 1, '*', 'ALERT', 'AMBARI_OFFICIAL', 'WARNING', '*', '*', '*', 40, '["default-in-app"]', '警告内置健康告警默认写入集群管理员站内信')
ON DUPLICATE KEY UPDATE
`route_name` = VALUES(`route_name`),
`enabled` = VALUES(`enabled`),
`event_type` = VALUES(`event_type`),
`event_source_filter` = VALUES(`event_source_filter`),
`severity_filter` = VALUES(`severity_filter`),
`route_priority` = VALUES(`route_priority`),
`channel_codes` = VALUES(`channel_codes`),
`description` = VALUES(`description`);
INSERT INTO `monitor_notification_route_subject` (`route_id`, `subject_type`, `subject_ref`, `subject_name`, `enabled`)
SELECT r.id, 'CLUSTER_ADMIN', 'CLUSTER.ADMINISTRATOR', '集群管理员', 1
FROM `monitor_notification_route` r
WHERE r.route_code IN (
'default-critical-alert-route',
'default-warning-alert-route',
'default-official-critical-alert-route',
'default-official-warning-alert-route'
)
AND NOT EXISTS (
SELECT 1 FROM `monitor_notification_route_subject` s
WHERE s.route_id = r.id AND s.subject_type = 'CLUSTER_ADMIN' AND s.subject_ref = 'CLUSTER.ADMINISTRATOR'
);
INSERT INTO `monitor_metric_definition` (
`metric_code`, `metric_name`, `metric_group`, `priority`, `sub_group`, `unit`, `metric_type`,
`metric_kind`, `service_name`, `component_name`, `compute_type`, `source_profile`, `ingest_status`,
`stability_status`, `value_type`, `aggregation_mode`, `default_chart_type`, `display_order`,
`enable_fixed_threshold`, `enable_smart_threshold`, `enable_alert`, `enable_health_score`,
`health_score_weight`, `description`, `extra_info`
)
VALUES
('tt_cpu_usage_percent', 'cpu_usage_percent', 'host', 'P0', 'cpu', '%', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 101, 1, 1, 1, 1, 8, '主机 CPU 使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_cpu_iowait', 'cpu_iowait', 'host', 'P0', 'cpu', '%', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 102, 1, 1, 1, 1, 6, '主机 CPU iowait 占比', '{"seedVersion":"3.0.1-P0"}'),
('tt_load_per_cpu', 'load_per_cpu', 'host', 'P0', 'cpu', '', 'GAUGE', 'DERIVED', 'host', 'host', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 103, 1, 1, 1, 1, 6, '主机单核平均负载', '{"seedVersion":"3.0.1-P0"}'),
('tt_mem_usage_percent', 'mem_usage_percent', 'host', 'P0', 'memory', '%', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 111, 1, 1, 1, 1, 8, '主机内存使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_swap_usage_percent', 'swap_usage_percent', 'host', 'P0', 'memory', '%', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 112, 1, 1, 1, 1, 5, '主机 swap 使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_disk_usage_percent', 'disk_usage_percent', 'host', 'P0', 'disk', '%', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 121, 1, 1, 1, 1, 10, '主机磁盘使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_net_error_packets_per_sec', 'net_error_packets_per_sec', 'host', 'P0', 'network', '个/s', 'GAUGE', 'DERIVED', 'host', 'host', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'UNKNOWN', 'NUMBER', 'SUM', 'LINE', 126, 1, 1, 1, 1, 6, '主机网络错误包速率', '{"seedVersion":"3.0.1-P0"}'),
('tt_net_drop_packets_per_sec', 'net_drop_packets_per_sec', 'host', 'P0', 'network', '个/s', 'GAUGE', 'DERIVED', 'host', 'host', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'UNKNOWN', 'NUMBER', 'SUM', 'LINE', 127, 1, 1, 1, 1, 6, '主机网络丢包速率', '{"seedVersion":"3.0.1-P0"}'),
('tt_process_count', 'process_count', 'host', 'P0', 'process', '个', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'UNKNOWN', 'NUMBER', 'AVG', 'LINE', 129, 1, 1, 1, 1, 4, '主机进程数', '{"seedVersion":"3.0.1-P0"}'),
('tt_thread_count', 'thread_count', 'host', 'P0', 'process', '个', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'UNKNOWN', 'NUMBER', 'AVG', 'LINE', 130, 1, 1, 1, 1, 4, '主机线程数', '{"seedVersion":"3.0.1-P0"}'),
('tt_fd_usage_percent', 'fd_usage_percent', 'host', 'P0', 'process', '%', 'GAUGE', 'COLLECTED', 'host', 'host', 'NONE', 'CORE', 'CANDIDATE', 'UNKNOWN', 'NUMBER', 'AVG', 'LINE', 131, 1, 1, 1, 1, 5, '进程文件句柄使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_jvm_heap_usage_percent', 'jvm_heap_usage_percent', 'jvm', 'P0', 'heap', '%', 'GAUGE', 'COLLECTED', NULL, NULL, 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 201, 1, 1, 1, 1, 8, '组件 JVM Heap 使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_jvm_gc_collection_time_ms', 'jvm_gc_collection_time_ms', 'jvm', 'P0', 'gc', 'ms', 'GAUGE', 'COLLECTED', NULL, NULL, 'NONE', 'CORE', 'CANDIDATE', 'UNKNOWN', 'NUMBER', 'AVG', 'LINE', 202, 1, 1, 1, 1, 5, '组件 JVM GC 耗时', '{"seedVersion":"3.0.1-P0"}'),
('tt_hdfs_namenode_in_safe_mode', 'hdfs_namenode_in_safe_mode', 'hdfs', 'P0', 'availability', '', 'STATE', 'COLLECTED', 'HDFS', 'NAMENODE', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 301, 1, 0, 1, 1, 10, 'HDFS NameNode 安全模式状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_hdfs_datanode_bp_service_alive', 'hdfs_datanode_bp_service_alive', 'hdfs', 'P0', 'availability', '', 'STATE', 'COLLECTED', 'HDFS', 'DATANODE', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 302, 1, 0, 1, 1, 10, 'HDFS DataNode BP 服务可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_hdfs_zkfc_health_monitor_up', 'hdfs_zkfc_health_monitor_up', 'hdfs', 'P0', 'ha', '', 'STATE', 'COLLECTED', 'HDFS', 'ZKFC', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 303, 1, 0, 1, 1, 8, 'HDFS ZKFC 健康监控可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_yarn_resourcemanager_up', 'yarn_resourcemanager_up', 'yarn', 'P0', 'availability', '', 'STATE', 'COLLECTED', 'YARN', 'RESOURCEMANAGER', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 401, 1, 0, 1, 1, 10, 'YARN ResourceManager 可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_yarn_resourcemanager_memory_used_percent', 'yarn_resourcemanager_memory_used_percent', 'yarn', 'P0', 'capacity', '%', 'GAUGE', 'COLLECTED', 'YARN', 'RESOURCEMANAGER', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 402, 1, 1, 1, 1, 7, 'YARN ResourceManager 内存使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_yarn_nodemanager_up', 'yarn_nodemanager_up', 'yarn', 'P0', 'availability', '', 'STATE', 'COLLECTED', 'YARN', 'NODEMANAGER', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 403, 1, 0, 1, 1, 10, 'YARN NodeManager 可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_yarn_nodemanager_memory_used_percent', 'yarn_nodemanager_memory_used_percent', 'yarn', 'P0', 'capacity', '%', 'GAUGE', 'COLLECTED', 'YARN', 'NODEMANAGER', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 404, 1, 1, 1, 1, 7, 'YARN NodeManager 内存使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_kafka_broker_up', 'kafka_broker_up', 'kafka', 'P0', 'availability', '', 'STATE', 'COLLECTED', 'KAFKA', 'KAFKA_BROKER', 'NONE', 'CORE', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 501, 1, 0, 1, 1, 10, 'Kafka Broker 可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_kafka_disk_used_percent', 'kafka_disk_used_percent', 'kafka', 'P0', 'capacity', '%', 'GAUGE', 'DERIVED', 'KAFKA', 'KAFKA_BROKER', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'AVG', 'LINE', 502, 1, 1, 1, 1, 9, 'Kafka Broker 磁盘使用率', '{"seedVersion":"3.0.1-P0"}'),
('tt_kafka_cluster_under_replicated_partitions', 'kafka_cluster_under_replicated_partitions', 'kafka', 'P0', 'replica', '个', 'GAUGE', 'DERIVED', 'KAFKA', 'KAFKA_BROKER', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'MAX', 'LINE', 503, 1, 1, 1, 1, 10, 'Kafka 未完全复制分区数', '{"seedVersion":"3.0.1-P0"}'),
('tt_kafka_cluster_offline_partitions', 'kafka_cluster_offline_partitions', 'kafka', 'P0', 'replica', '个', 'GAUGE', 'DERIVED', 'KAFKA', 'KAFKA_BROKER', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'MAX', 'LINE', 504, 1, 0, 1, 1, 10, 'Kafka 离线分区数', '{"seedVersion":"3.0.1-P0"}'),
('tt_ambari_plus_monitor_platform_api_up', 'ambari_plus_monitor_platform_api_up', 'ambari-plus-monitor', 'P0', 'self', '', 'STATE', 'DERIVED', 'AMBARI_PLUS_MONITOR', 'MONITOR_PLATFORM_API', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 601, 1, 0, 1, 1, 10, 'Monitor Platform API 可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_ambari_plus_monitor_ingester_up', 'ambari_plus_monitor_ingester_up', 'ambari-plus-monitor', 'P0', 'self', '', 'STATE', 'DERIVED', 'AMBARI_PLUS_MONITOR', 'MONITOR_INGESTER', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 602, 1, 0, 1, 1, 10, 'Monitor Ingester 可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_ambari_plus_monitor_rule_engine_up', 'ambari_plus_monitor_rule_engine_up', 'ambari-plus-monitor', 'P0', 'self', '', 'STATE', 'DERIVED', 'AMBARI_PLUS_MONITOR', 'MONITOR_RULE_ENGINE', 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'LAST', 'LINE', 603, 1, 0, 1, 1, 10, 'Monitor Rule Engine 可用状态', '{"seedVersion":"3.0.1-P0"}'),
('tt_ambari_plus_monitor_notification_failure_count', 'ambari_plus_monitor_notification_failure_count', 'ambari-plus-monitor', 'P0', 'self', '次', 'GAUGE', 'DERIVED', 'AMBARI_PLUS_MONITOR', NULL, 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'SUM', 'LINE', 604, 1, 1, 1, 1, 8, 'Monitor 通知失败数', '{"seedVersion":"3.0.1-P0"}'),
('tt_ambari_plus_monitor_agent_failed_batch_count', 'ambari_plus_monitor_agent_failed_batch_count', 'ambari-plus-monitor', 'P0', 'self', '次', 'GAUGE', 'DERIVED', 'AMBARI_PLUS_MONITOR', NULL, 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'SUM', 'LINE', 605, 1, 1, 1, 1, 8, 'Monitor Agent 失败批次数', '{"seedVersion":"3.0.1-P0"}'),
('tt_ambari_plus_monitor_ingester_failed_metric_count', 'ambari_plus_monitor_ingester_failed_metric_count', 'ambari-plus-monitor', 'P0', 'self', '条', 'GAUGE', 'DERIVED', 'AMBARI_PLUS_MONITOR', NULL, 'REALTIME', 'DERIVED_PLATFORM', 'CANDIDATE', 'STABLE', 'NUMBER', 'SUM', 'LINE', 606, 1, 1, 1, 1, 8, 'Monitor Ingester 写入失败指标数', '{"seedVersion":"3.0.1-P0"}')
ON DUPLICATE KEY UPDATE
`metric_group` = VALUES(`metric_group`),
`priority` = VALUES(`priority`),
`sub_group` = VALUES(`sub_group`),
`unit` = VALUES(`unit`),
`metric_type` = VALUES(`metric_type`),
`metric_kind` = VALUES(`metric_kind`),
`service_name` = VALUES(`service_name`),
`component_name` = VALUES(`component_name`),
`source_profile` = VALUES(`source_profile`),
`stability_status` = VALUES(`stability_status`),
`enable_fixed_threshold` = VALUES(`enable_fixed_threshold`),
`enable_smart_threshold` = VALUES(`enable_smart_threshold`),
`enable_alert` = VALUES(`enable_alert`),
`enable_health_score` = VALUES(`enable_health_score`),
`health_score_weight` = VALUES(`health_score_weight`),
`description` = VALUES(`description`),
`extra_info` = VALUES(`extra_info`);
UPDATE `monitor_metric_definition`
SET `display_name` = `description`,
`metadata_status` = 'VERIFIED',
`metadata_source` = 'BUILT_IN'
WHERE `extra_info` LIKE '%"seedVersion":"3.0.1-P0"%';
CREATE TABLE IF NOT EXISTS `monitor_ha_failover_event` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`cluster_id` BIGINT NOT NULL,
`service_name` VARCHAR(64) NOT NULL,
`component_name` VARCHAR(64) NOT NULL,
`instance_name` VARCHAR(128) NOT NULL,
`host_name` VARCHAR(255) NOT NULL,
`previous_state` VARCHAR(32) DEFAULT NULL,
`current_state` VARCHAR(32) NOT NULL,
`event_type` VARCHAR(32) NOT NULL,
`failover_reason` VARCHAR(128) DEFAULT NULL,
`start_time` DATETIME NOT NULL,
`end_time` DATETIME DEFAULT NULL,
`duration_ms` BIGINT DEFAULT NULL,
`success` TINYINT DEFAULT 1,
`failure_reason` VARCHAR(512) DEFAULT NULL,
`zkfc_involved` TINYINT DEFAULT 1,
`journal_node_sync_status` VARCHAR(32) DEFAULT NULL,
`last_tx_id_before` BIGINT DEFAULT NULL,
`last_tx_id_after` BIGINT DEFAULT NULL,
`extra_info` TEXT DEFAULT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_ha_cluster_service` (`cluster_id`, `service_name`),
KEY `idx_ha_instance` (`instance_name`, `host_name`),
KEY `idx_ha_start_time` (`start_time`),
KEY `idx_ha_event_type` (`event_type`, `failover_reason`)
) DEFAULT CHARSET = utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_hdfs_directory_snapshot` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`cluster_name` VARCHAR(128) NOT NULL,
`path` VARCHAR(512) NOT NULL,
`owner` VARCHAR(128),
`group_name` VARCHAR(128),
`file_count` BIGINT DEFAULT 0,
`directory_count` BIGINT DEFAULT 0,
`total_bytes` BIGINT DEFAULT 0,
`space_consumed` BIGINT DEFAULT 0,
`quota` BIGINT DEFAULT -1,
`space_quota` BIGINT DEFAULT -1,
`prev_total_bytes` BIGINT,
`prev_analyzed_at` DATETIME,
`analyzed_at` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_cluster_path` (`cluster_name`, `path`),
KEY `idx_cluster_bytes_desc` (`cluster_name`, `total_bytes` DESC),
KEY `idx_cluster_files_desc` (`cluster_name`, `file_count` DESC),
KEY `idx_cluster_analyzed` (`cluster_name`, `analyzed_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_hdfs_trash_snapshot` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`cluster_name` VARCHAR(128) NOT NULL,
`username` VARCHAR(128) NOT NULL,
`trash_size_bytes` BIGINT DEFAULT 0,
`file_count` BIGINT DEFAULT 0,
`oldest_item_ms` BIGINT,
`analyzed_at` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_cluster_user` (`cluster_name`, `username`),
KEY `idx_cluster_size_desc` (`cluster_name`, `trash_size_bytes` DESC),
KEY `idx_cluster_analyzed` (`cluster_name`, `analyzed_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `monitor_hdfs_offline_analysis_record` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`cluster_name` VARCHAR(128) NOT NULL,
`record_type` VARCHAR(64) NOT NULL,
`record_key` VARCHAR(512) NOT NULL,
`record_hash` CHAR(40) NOT NULL,
`path` VARCHAR(1024),
`host_name` VARCHAR(255),
`owner` VARCHAR(128),
`risk_level` VARCHAR(32),
`numeric_value` DOUBLE,
`payload_json` MEDIUMTEXT,
`source_job` VARCHAR(128),
`batch_id` VARCHAR(128),
`analyzed_at` DATETIME NOT NULL,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_hdfs_offline_record` (`cluster_name`, `record_type`, `record_hash`),
KEY `idx_hdfs_offline_latest` (`cluster_name`, `record_type`, `analyzed_at`),
KEY `idx_hdfs_offline_numeric` (`cluster_name`, `record_type`, `numeric_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
完成这一步后,再回到 Ambari Plus 页面安装 AMBARI_PLUS_MONITOR 服务。