CATCAT
  • 介绍
  • 快速上手
  • 客户端配置
  • 安装 - 容器
  • 安装 - 虚拟机
  • 核心功能
  • 日常操作
  • 扩展
  • 部署模式
  • 常见问题
  • 支持
  • API 参考
  • CAT 配置
  • 安装 JDK
  • 安装 MySQL
  • 安装 Docker
  • 性能
  • 安全
  • 版本 1
  • 版本 2
  • 对比
  • English
  • 简体中文
  • 介绍
  • 快速上手
  • 客户端配置
  • 安装 - 容器
  • 安装 - 虚拟机
  • 核心功能
  • 日常操作
  • 扩展
  • 部署模式
  • 常见问题
  • 支持
  • API 参考
  • CAT 配置
  • 安装 JDK
  • 安装 MySQL
  • 安装 Docker
  • 性能
  • 安全
  • 版本 1
  • 版本 2
  • 对比
  • English
  • 简体中文
  • 指南

    • 介绍
    • 快速上手
    • 客户端配置
    • 安装 - 容器
    • 安装 - 虚拟机
    • 核心功能
    • 日常操作
    • 扩展
    • 部署模式
    • 常见问题
    • 支持

安装 - 容器

1. 概述

在安装 CAT 系统前,确保您的系统满足以下要求:

  • Docker:确保您的系统已安装 Docker。可以使用 docker --version 检查是否安装成功。

2. 安装

2.1 安装 docker

如果您还没有安装 Docker,可以通过以下命令进行安装:

  • 在 Ubuntu 上安装(使用 apt):
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce -y
sudo systemctl start docker
sudo systemctl enable docker
  • 在 CentOS 上安装(使用 yum):
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce -y
sudo systemctl start docker
sudo systemctl enable docker

更多的安装方法,参考 Docker 安装。

3. 配置

3.1 下载 JAR 包

从以下地址下载 JAR 包:https://repo.cat-next.com/repository

mkdir lib

curl https://repo.cat-next.com/repository/artifact/org.unidal.cat2/cat-agent/{version}/cat-agent-{version}.jar -o cat-agent.jar
curl https://repo.cat-next.com/repository/artifact/org.unidal.cat2/cat/{version}/cat-{version}.jar -o cat.jar
curl https://repo.cat-next.com/repository/artifact/org.unidal.cat2/cat-buddy/{version}/cat-buddy-{version}.jar -o cat.jar

3.2 创建 Docker 镜像

  • 创建文件 Dockerfile
FROM eclipse-temurin:17-jdk

WORKDIR /root/

COPY ./lib/*.jar /root/lib/

EXPOSE 8080

ENTRYPOINT ["sh", "-c", "java -jar /root/lib/cat.jar $APP_ARGS"]
  • 构建 Docker 镜像
docker build -t cat:latest .

3.3 准备配置文件

  • 准备 ./datasource.properties
datasource.properties
spring.datasource.jdbc-url=jdbc:mysql://<mysql-server>:3306/<mysql-db>?serverTimezone=GMT%2B8&characterEncoding=UTF-8&useUnicode=true&autoReconnect=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=<mysql-user>
spring.datasource.password=<mysql-password>
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=1
  • 准备 10-grant.sql
10-grant.sql
GRANT ALL PRIVILEGES ON *.* TO 'cat'@'%';

FLUSH PRIVILEGES;
  • 准备 system.sql
20-system.sql
-- NOTES: THIS FILE IS AUTO GENERATED BY Leopon, ANY MANUAL CHANGE WILL BE LOST IN THE NEXT GENERATION

CREATE TABLE IF NOT EXISTS `cat_worker`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `host` varchar(64) NOT NULL COMMENT 'Host Name',
  `address` varchar(64) NOT NULL COMMENT 'IP Address',
  `roles` int NOT NULL COMMENT 'Role, 1: Collector, 2: Consumer, 4: Console, 8: Gateway',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_host` (`host`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Worker';

CREATE TABLE IF NOT EXISTS `cat_user`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `display_name` varchar(64) NOT NULL COMMENT 'Display Name',
  `kind` int NOT NULL COMMENT 'Kind, 1: Platform User, 2: Tenant User, 3: Third Party User',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `source` int NOT NULL COMMENT 'Kind, 1: CAT, 2: OAuth2',
  `last_tenant_id` int NOT NULL COMMENT 'Last Tenant Id',
  `token` varchar(64) COMMENT 'Token',
  `avatar` varchar(64) COMMENT 'Avatar',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat User';

CREATE TABLE IF NOT EXISTS `cat_user_oauth2`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `email` varchar(64) NOT NULL COMMENT 'Email',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `bound_user_id` int COMMENT 'Bound User Id',
  `provider` varchar(64) NOT NULL COMMENT 'Provider',
  `provider_id` varchar(64) NOT NULL COMMENT 'Provider Id',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat User Oauth2';

CREATE TABLE IF NOT EXISTS `cat_avatar`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `code` varchar(64) NOT NULL COMMENT 'Code',
  `kind` int NOT NULL COMMENT 'Kind, 1: Platform, 2: Tenant, 3: User',
  `entity_id` int NOT NULL COMMENT 'Tenant ID',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `metadata` text NOT NULL COMMENT 'Metadata',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_code` (`code`),
  UNIQUE KEY `idx_kind_entity_id` (`kind`, `entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Avatar';

  • 准备 tenant.sql
30-tenant.sql
-- NOTES: THIS FILE IS AUTO GENERATED BY Leopon, ANY MANUAL CHANGE WILL BE LOST IN THE NEXT GENERATION

CREATE TABLE IF NOT EXISTS `cat_tenant`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `display_name` varchar(64) NOT NULL COMMENT 'Display Name',
  `kind` int NOT NULL COMMENT 'Kind, 1: Platform, 2: Tenant, 3: Public',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `token` varchar(64) NOT NULL COMMENT 'Token',
  `host` varchar(64) COMMENT 'Host',
  `default_domain` varchar(64) COMMENT 'Default Domain',
  `avatar` varchar(64) COMMENT 'Avatar',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_name` (`name`),
  UNIQUE KEY `idx_token` (`token`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Tenant';

CREATE TABLE IF NOT EXISTS `cat_domain`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `product` varchar(64) COMMENT 'Product',
  `product_line` varchar(64) COMMENT 'Product Line',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_tenant_id_name` (`tenant_id`, `name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Domain';

CREATE TABLE IF NOT EXISTS `cat_service`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `domain_id` int NOT NULL COMMENT 'Domain ID',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `target_domain_id` int COMMENT 'Target Domain Id',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_domain_id_name` (`domain_id`, `name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Service';

CREATE TABLE IF NOT EXISTS `cat_node`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `domain_id` int NOT NULL COMMENT 'Domain ID',
  `service_id` int NOT NULL COMMENT 'Service ID',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `ip` varchar(64) COMMENT 'Ip',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_service_id_name` (`service_id`, `name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Node';

CREATE TABLE IF NOT EXISTS `cat_account`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `user_id` int NOT NULL COMMENT 'User ID',
  `role` int NOT NULL COMMENT 'Role, 1: Owner, 2: Admin, 3: User',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_tenant_id_user_id` (`tenant_id`, `user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Account';

CREATE TABLE IF NOT EXISTS `cat_tenant_proposal`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `context` mediumblob NOT NULL COMMENT 'Context',
  `proposal` mediumblob NOT NULL COMMENT 'Proposal',
  `kind` int NOT NULL COMMENT 'Kind',
  `status` int NOT NULL COMMENT 'Status, 1: Pending, 2: Accepted, 3: Rejected',
  `submitted_by` varchar(64) NOT NULL COMMENT 'Submitted By',
  `operated_by` varchar(64) COMMENT 'Operated By',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Tenant Proposal';

CREATE TABLE IF NOT EXISTS `cat_tenant_setting`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `family` int NOT NULL COMMENT 'Family',
  `kind` int NOT NULL COMMENT 'Kind',
  `content` mediumblob NOT NULL COMMENT 'Content',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_tenant_id_family_kind` (`tenant_id`, `family`, `kind`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Tenant Setting';

CREATE TABLE IF NOT EXISTS `cat_tenant_request`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `kind` int NOT NULL COMMENT 'Kind, 1: tenant_request, 2: tenant_invitation',
  `status` int NOT NULL COMMENT 'Status, 1: Pending, 2: Accepted, 3: Rejected, 4: Duplicated',
  `target_key` varchar(255) NOT NULL COMMENT 'Target Key',
  `content` mediumblob NOT NULL COMMENT 'Content',
  `submitted_by` varchar(64) NOT NULL COMMENT 'Submitted By',
  `operated_by` varchar(64) COMMENT 'Operated By',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Tenant Request';

  • 准备 report.sql
40-report.sql
-- NOTES: THIS FILE IS AUTO GENERATED BY Leopon, ANY MANUAL CHANGE WILL BE LOST IN THE NEXT GENERATION

CREATE TABLE IF NOT EXISTS `cat_report_properties`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `kind` int NOT NULL COMMENT 'Kind, 1: Transaction, 2: Thread',
  `domain` varchar(64) NOT NULL COMMENT 'Domain',
  `content` mediumblob NOT NULL COMMENT 'Content',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_tenant_id_kind_domain` (`tenant_id`, `kind`, `domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Report Properties';

CREATE TABLE IF NOT EXISTS `tenant_report`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `tenant` int NOT NULL COMMENT 'Tenant ID',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_tenant` (`time`, `tenant`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Tenant Report';

CREATE TABLE IF NOT EXISTS `database_report`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `tenant` int NOT NULL COMMENT 'Tenant ID',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_tenant` (`time`, `tenant`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Database Report';

CREATE TABLE IF NOT EXISTS `database_meta`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant` int NOT NULL COMMENT 'Tenant',
  `kind` int NOT NULL COMMENT 'Kind, 1: Instance, 2: Statement',
  `key` varchar(255) NOT NULL COMMENT 'Key',
  `content` blob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_kind_key` (`tenant`, `kind`, `key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Database Meta';

CREATE TABLE IF NOT EXISTS `health_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `tenant` int NOT NULL COMMENT 'Tenant',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_tenant` (`time`, `tenant`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Health Metric';

CREATE TABLE IF NOT EXISTS `transaction_report`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain` (`time`, `domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Transaction Report';

CREATE TABLE IF NOT EXISTS `transaction_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `node` int NOT NULL COMMENT 'Node',
  `kind` int NOT NULL COMMENT 'Kind, 1: Type in summary, 2: Type in minute, 3: Name in summary, 4: Name in minute',
  `type` varchar(255) NOT NULL COMMENT 'Type',
  `name` varchar(255) NOT NULL COMMENT 'Name',
  `content` blob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain_node_kind_type_name` (`time`, `domain`, `node`, `kind`, `type`, `name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Transaction Metric';

CREATE TABLE IF NOT EXISTS `event_report`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain` (`time`, `domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Event Report';

CREATE TABLE IF NOT EXISTS `event_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `node` int NOT NULL COMMENT 'Node',
  `kind` int NOT NULL COMMENT 'Kind, 1: Type in summary, 2: Type in minute, 3: Name in summary, 4: Name in minute',
  `type` varchar(255) NOT NULL COMMENT 'Type',
  `name` varchar(255) NOT NULL COMMENT 'Name',
  `content` blob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain_node_kind_type_name` (`time`, `domain`, `node`, `kind`, `type`, `name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Event Metric';

CREATE TABLE IF NOT EXISTS `problem_report`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain` (`time`, `domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Problem Report';

CREATE TABLE IF NOT EXISTS `problem_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `node` int NOT NULL COMMENT 'Node',
  `kind` int NOT NULL COMMENT 'Kind, 1: Error, 2: Failure, 3: Slow',
  `type` varchar(255) NOT NULL COMMENT 'Type',
  `name` varchar(255) NOT NULL COMMENT 'Name',
  `content` blob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain_node_kind_type_name` (`time`, `domain`, `node`, `kind`, `type`, `name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Problem Metric';

CREATE TABLE IF NOT EXISTS `logs_data`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `node` int NOT NULL COMMENT 'Node',
  `trace` varchar(32) COMMENT 'Trace',
  `content` mediumblob NOT NULL COMMENT 'Content',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Logs Data';

CREATE TABLE IF NOT EXISTS `logs_report`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain` (`time`, `domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Logs Report';

CREATE TABLE IF NOT EXISTS `thread_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `node` int NOT NULL COMMENT 'Node',
  `summary` text NOT NULL COMMENT 'Text Summary',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain_node` (`time`, `domain`, `node`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Thread Metric';

CREATE TABLE IF NOT EXISTS `memory_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `node` int NOT NULL COMMENT 'Node',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain_node` (`time`, `domain`, `node`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Memory Metric';

CREATE TABLE IF NOT EXISTS `metric_point`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `tenant` int NOT NULL COMMENT 'Tenant',
  `scenario` varchar(255) NOT NULL COMMENT 'Scenario',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_tenant_scenario` (`time`, `tenant`, `scenario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Metric Point';

CREATE TABLE IF NOT EXISTS `traffic_report`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain` (`time`, `domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Traffic Report';

CREATE TABLE IF NOT EXISTS `traffic_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `time` datetime NOT NULL COMMENT 'Time',
  `domain` int NOT NULL COMMENT 'Domain',
  `content` blob NOT NULL COMMENT 'Binary Content',
  PRIMARY KEY (`id`),
  KEY `idx_time_domain` (`time`, `domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Traffic Metric';

  • 准备 metrics.sql
50-metrics.sql
-- NOTES: THIS FILE IS AUTO GENERATED BY Leopon, ANY MANUAL CHANGE WILL BE LOST IN THE NEXT GENERATION

CREATE TABLE IF NOT EXISTS `cat_metric`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `checksum` int NOT NULL COMMENT 'Checksum',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_tenant_id_name` (`tenant_id`, `name`),
  KEY `idx_last_modified_date` (`last_modified_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Metric';

CREATE TABLE IF NOT EXISTS `cat_dashboard`
(
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `tenant_id` int NOT NULL COMMENT 'Tenant ID',
  `name` varchar(64) NOT NULL COMMENT 'Name',
  `status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
  `content` mediumblob NOT NULL COMMENT 'Binary Content',
  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Date',
  `last_modified_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Last Modified Date',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_tenant_id_name` (`tenant_id`, `name`),
  KEY `idx_last_modified_date` (`last_modified_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Dashboard';

  • 插入初始数据
60-data.sql
INSERT INTO `cat_user` (id, name, display_name, kind, status, source, last_tenant_id, token)
VALUES ('admin', 'Administrator', 1, 1, 1, 101, 'password');

INSERT INTO `cat_user` (id, name, display_name, kind, status, source, last_tenant_id, token)
VALUES (2, 'guest', 'Guest', 1, 1, 1, 101, 'guest');

INSERT INTO `cat_tenant` (id, name, display_name, token, host, default_domain, kind, status)
VALUES (101, 'unidal', 'CAT Next', 'unidal', 'demo.cat-next.com', 'cat', 1, 1);

INSERT INTO `cat_tenant` (id, name, display_name, token, host, default_domain, kind, status)
VALUES (102, 'unknown', 'Unknown', 'none', '', '', 2, 1));

INSERT INTO `cat_account` (tenant_id, user_id, role, status)
VALUES (101, 1, 1, 1);

INSERT INTO `cat_account` (tenant_id, user_id, role, status)
VALUES (101, 2, 3, 1);

INSERT INTO `cat_account` (tenant_id, user_id, role, status)
VALUES (102, 1, 2, 1);

INSERT INTO `cat_dashboard` (tenant_id, name, status, content)
VALUES (101, 'heartbeat', 1, 0x01126865617274626561740212486561727462656174030C646F6D61696E03086E6F64650401064350550201126261722D636861727402104350552054696D65034863616362323264642D373934362D343265662D613062372D3066336637316564623630620401186A766D2E6370752E74696D65020854696D6503010400FFFF0201126261722D6368617274021C4350552050657263656E74616765034832623037336332352D323433352D343664332D623234322D3165663935616335613931320401346A766D2E6370752E726563656E745F7574696C697A6174696F6E021C4350552050657263656E7461676503000401FFFF0201126261722D6368617274021243505520436F72657304011A6A766D2E6370752E636F756E74020A436F756E7403000400FFFFFF04010C4D656D6F72790201126261722D6368617274020E427920506F6F6C034837626635623462612D393233342D343933342D613137392D36386336373639666638343104011E6A766D2E6D656D6F72792E75736564020E427920506F6F6C0300040005286A766D2E6D656D6F72792E706F6F6C2E6E616D65FFFF0201126261722D6368617274020E42792054797065034861656663343735362D396137362D343534342D383831332D65373933346262356132343604011E6A766D2E6D656D6F72792E75736564020E4279205479706503000400051E6A766D2E6D656D6F72792E74797065FFFF0201126261722D636861727402384743204475726174696F6E204279204E616D65202620416374696F6E04011E6A766D2E67632E6475726174696F6E02384743204475726174696F6E204279204E616D65202620416374696F6E0301040005166A766D2E67632E6E616D65051A6A766D2E67632E616374696F6EFFFFFF04010C5468726561640201126261722D6368617274021C4461656D6F6E20546872656164730401206A766D2E7468726561642E636F756E74021C4461656D6F6E20546872656164730300040005226A766D2E7468726561642E6461656D6F6EFFFF0201126261722D6368617274021A546872656164732053746174650401206A766D2E7468726561642E636F756E74021A546872656164732053746174650300040005206A766D2E7468726561642E7374617465FFFFFF04011A444220436F6E6E656374696F6E0201126261722D6368617274021E427920506F6F6C202620537461746504013664622E636C69656E742E636F6E6E656374696F6E732E7573616765021E427920506F6F6C2026205374617465030004000512706F6F6C2E6E616D65050A7374617465FFFFFF04010E54726163696E670201126261722D6368617274021A526563656976656420426167730401206D6573736167652E726563656976656402206D6573736167652E726563656976656403010400050874797065FFFF0201126261722D6368617274021E4F766572666C6F77656420426167730401246D6573736167652E6F766572666C6F77656402246D6573736167652E6F766572666C6F776564030104000508747970650508706F6F6CFFFF0201126261722D6368617274021A417263686976656420426167730401206D6573736167652E617263686976656402206D6573736167652E617263686976656403010400050C74656E616E74050C736F75726365FFFF0201126261722D6368617274023A526563656976656420696E20427974657328636F6D70726573736564290401306D6573736167652E62797465732E636F6D7072657373656402306D6573736167652E62797465732E636F6D7072657373656403010400050C74656E616E74050C646F6D61696EFFFF0201126261722D6368617274023A417263686976656420696E20427974657328636F6D707265737365642904012C6D6573736167652E62797465732E6172636869766564022C6D6573736167652E62797465732E617263686976656403010400050C74656E616E74050C736F75726365FFFF0201126261722D6368617274021E44756D706564205365676D656E747304011C6D6573736167652E64756D706564021C6D6573736167652E64756D70656403010400050C74656E616E74050C736F75726365FFFFFF04010E4C6F6767696E670201126261722D6368617274022A4C6F67204C696E65732062792053657665726974790401186C6F672E726563656976656402186C6F672E72656365697665640301040005107365766572697479FFFFFF04010A51756572790201126261722D636861727402224279746573206279204578656375746F7204011671756572792E6279746573021671756572792E62797465730301040005106578656375746F72FFFFFFFF);

INSERT INTO `cat_dashboard` (tenant_id, name, status, content)
VALUES (102, 'heartbeat', 1, 0x01126865617274626561740212486561727462656174030C646F6D61696E03086E6F64650401064350550201126261722D636861727402104350552054696D65034863616362323264642D373934362D343265662D613062372D3066336637316564623630620401186A766D2E6370752E74696D65020854696D6503010400FFFF0201126261722D6368617274021C4350552050657263656E74616765034832623037336332352D323433352D343664332D623234322D3165663935616335613931320401346A766D2E6370752E726563656E745F7574696C697A6174696F6E021C4350552050657263656E7461676503000401FFFF0201126261722D6368617274021243505520436F72657304011A6A766D2E6370752E636F756E74020A436F756E7403000400FFFFFF04010C4D656D6F72790201126261722D6368617274020E427920506F6F6C034837626635623462612D393233342D343933342D613137392D36386336373639666638343104011E6A766D2E6D656D6F72792E75736564020E427920506F6F6C0300040005286A766D2E6D656D6F72792E706F6F6C2E6E616D65FFFF0201126261722D6368617274020E42792054797065034861656663343735362D396137362D343534342D383831332D65373933346262356132343604011E6A766D2E6D656D6F72792E75736564020E4279205479706503000400051E6A766D2E6D656D6F72792E74797065FFFF0201126261722D636861727402384743204475726174696F6E204279204E616D65202620416374696F6E04011E6A766D2E67632E6475726174696F6E02384743204475726174696F6E204279204E616D65202620416374696F6E0301040005166A766D2E67632E6E616D65051A6A766D2E67632E616374696F6EFFFFFF04010C5468726561640201126261722D6368617274021C4461656D6F6E20546872656164730401206A766D2E7468726561642E636F756E74021C4461656D6F6E20546872656164730300040005226A766D2E7468726561642E6461656D6F6EFFFF0201126261722D6368617274021A546872656164732053746174650401206A766D2E7468726561642E636F756E74021A546872656164732053746174650300040005206A766D2E7468726561642E7374617465FFFFFF04011A444220436F6E6E656374696F6E0201126261722D6368617274021E427920506F6F6C202620537461746504013664622E636C69656E742E636F6E6E656374696F6E732E7573616765021E427920506F6F6C2026205374617465030004000512706F6F6C2E6E616D65050A7374617465FFFFFF04010E54726163696E670201126261722D6368617274021A526563656976656420426167730401206D6573736167652E726563656976656402206D6573736167652E726563656976656403010400050874797065FFFF0201126261722D6368617274021E4F766572666C6F77656420426167730401246D6573736167652E6F766572666C6F77656402246D6573736167652E6F766572666C6F776564030104000508747970650508706F6F6CFFFF0201126261722D6368617274021A417263686976656420426167730401206D6573736167652E617263686976656402206D6573736167652E617263686976656403010400050C74656E616E74050C736F75726365FFFF0201126261722D6368617274023A526563656976656420696E20427974657328636F6D70726573736564290401306D6573736167652E62797465732E636F6D7072657373656402306D6573736167652E62797465732E636F6D7072657373656403010400050C74656E616E74050C646F6D61696EFFFF0201126261722D6368617274023A417263686976656420696E20427974657328636F6D707265737365642904012C6D6573736167652E62797465732E6172636869766564022C6D6573736167652E62797465732E617263686976656403010400050C74656E616E74050C736F75726365FFFF0201126261722D6368617274021E44756D706564205365676D656E747304011C6D6573736167652E64756D706564021C6D6573736167652E64756D70656403010400050C74656E616E74050C736F75726365FFFFFF04010E4C6F6767696E670201126261722D6368617274022A4C6F67204C696E65732062792053657665726974790401186C6F672E726563656976656402186C6F672E72656365697665640301040005107365766572697479FFFFFF04010A51756572790201126261722D636861727402224279746573206279204578656375746F7204011671756572792E6279746573021671756572792E62797465730301040005106578656375746F72FFFFFFFF);

3.4 配置 docker compose

  • 创建 ./docker-compose.yml
networks:
  default:
    name: cat
    driver: bridge

services:
  cat:
    image: cat:latest
    container_name: cat
    environment:
      - TZ=Asia/Shanghai
      - JAVA_TOOL_OPTIONS=-Xms1024m -Xmx2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:ReservedCodeCacheSize=128m -javaagent:/root/lib/cat-agent.jar -Dcat.token=unidal -Dservice.namespace=cat -Dcat.endpoints=localhost
      - APP_ARGS=-spring.config.additional-location=/root/config/datasource.properties
    ports:
      - "4317:4317"
      - "2280:2280"
    depends_on:
      - mysql
    volumes:
      - ./cat-demo/config/:/root/config/
      - ./cat-demo/work/:/root/.cat2/
    restart: always

  mysql:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: cat
      MYSQL_DATABASE: cat
      MYSQL_USER: cat_user
      MYSQL_PASSWORD: cat_password
    volumes:
      - ./mysql/scripts/:/docker-entrypoint-initdb.d/
      - ./mysql/data/:/var/lib/mysql/
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    restart: always

4. 运行

使用 Docker Compose 启动容器:

docker-compose up -d

要停止并移除容器,可以使用以下命令:

docker-compose down

5. 验证

在浏览器中访问以下地址,以验证 CAT 应用是否正常运行:

http://localhost:8080/report/transaction
在 GitHub 上编辑此页
上次更新:
贡献者: Frankie Wu
Prev
客户端配置
Next
安装 - 虚拟机