安装 - 容器
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/artifact
mkdir lib
curl https://repo.cat-next.com/artifact/cat2/cat/0.2.0 -o lib/cat.jar
curl https://repo.cat-next.com/artifact/cat2/cat-agent/0.2.0 -o lib/cat-agent.jar
curl https://repo.cat-next.com/artifact/cat2/cat-buddy/0.2.0 -o lib/cat-buddy.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
CREATE DATABASE IF NOT EXISTS cat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'cat'@'%' IDENTIFIED BY 'cat';
GRANT ALL PRIVILEGES ON cat.* 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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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',
`token` varchar(64) NOT NULL COMMENT 'Token',
`avatar` varchar(64) COMMENT 'Avatar',
`creation_date` datetime NOT NULL COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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_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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL COMMENT 'Last Modified Date',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_name` (`name`),
UNIQUE KEY `idx_token` (`token`),
UNIQUE KEY `idx_host` (`host`)
) 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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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',
`creation_date` datetime NOT NULL COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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_proposal`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`tenant_id` int NOT NULL COMMENT 'Tenant ID',
`context` mediumtext NOT NULL COMMENT 'Context',
`proposal` mediumtext NOT NULL COMMENT 'Proposal',
`kind` int NOT NULL COMMENT 'Kind, 1: Transaction Type, 2: Transaction Name',
`status` int NOT NULL COMMENT 'Status, 1: Pending, 2: Accepted, 3: Rejected, 4: Duplicated',
`submitted_by` varchar(64) NOT NULL COMMENT 'Submitted By',
`operated_by` varchar(64) COMMENT 'Operated By',
`creation_date` datetime NOT NULL COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL COMMENT 'Last Modified Date',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Proposal';
CREATE TABLE IF NOT EXISTS `cat_transformer`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`tenant_id` int NOT NULL COMMENT 'Tenant ID',
`kind` int NOT NULL COMMENT 'Kind, 1: OTEL_TRANSACTION, 2: OTEL_HEARTBEAT, 3: OTEL_EVENT',
`status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
`scope` varchar(255) NOT NULL COMMENT 'Scope',
`config` mediumblob NOT NULL COMMENT 'YAML Configuration',
`code` mediumblob NOT NULL COMMENT 'Java Source Code',
`content` mediumblob NOT NULL COMMENT 'Binary Content',
`creation_date` datetime NOT NULL COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL COMMENT 'Last Modified Date',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_tenant_id_kind_scope` (`tenant_id`, `kind`, `scope`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Transformer';
CREATE TABLE IF NOT EXISTS `cat_setting`
(
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`tenant_id` int NOT NULL COMMENT 'Tenant ID',
`family` int NOT NULL COMMENT 'Family, 1: Route',
`type` varchar(255) NOT NULL COMMENT 'Type',
`content` mediumblob NOT NULL COMMENT 'Content',
`status` int NOT NULL COMMENT 'Status, 1: Active, 2: Inactive',
`creation_date` datetime NOT NULL COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL COMMENT 'Last Modified Date',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_tenant_id_family_type` (`tenant_id`, `family`, `type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED COMMENT='Cat Setting';
CREATE TABLE IF NOT EXISTS `cat_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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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 Properties';
- 准备
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 `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 `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(128) NOT NULL COMMENT 'Type',
`name` varchar(128) 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(128) NOT NULL COMMENT 'Type',
`name` varchar(128) 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(128) NOT NULL COMMENT 'Type',
`name` varchar(128) 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 `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',
`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(128) 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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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 COMMENT 'Creation Date',
`last_modified_date` datetime NOT NULL 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, token, creation_date, last_modified_date)
VALUES (2, 'admin', 'Administrator', 1, 1, 'password', NOW(), NOW());
INSERT INTO cat_user (id, name, display_name, kind, status, token, creation_date, last_modified_date)
VALUES (3, 'guest', 'Guest', 1, 1, 'guest', NOW(), NOW());
INSERT INTO cat_tenant (id, name, display_name, token, host, kind, status, creation_date, last_modified_date)
VALUES (-2, 'unidal', 'unidal.org', 'unidal', 'cat-next.com', 1, 1, NOW(), NOW());
INSERT INTO cat_account (tenant_id, user_id, role, status, creation_date, last_modified_date)
VALUES (-2, 2, 2, 1, NOW(), NOW());
INSERT INTO cat_account (tenant_id, user_id, role, status, creation_date, last_modified_date)
VALUES (-2, 3, 2, 1, NOW(), NOW());
INSERT INTO `cat_dashboard` (tenant_id, name, status, content, creation_date, last_modified_date)
VALUES (-2, 'heartbeat', 1, 0x01126865617274626561740212486561727462656174030C646F6D61696E03086E6F64650401064350550201126261722D6368617274020854696D65034863616362323264642D373934362D343265662D613062372D3066336637316564623630620401186A766D2E6370752E74696D65020854696D65FFFF0201126261722D636861727402165574696C697A6174696F6E034832623037336332352D323433352D343664332D623234322D3165663935616335613931320401346A766D2E6370752E726563656E745F7574696C697A6174696F6E021E435055205574696C697A6174696F6EFFFF0201126261722D6368617274020A436F756E7404011A6A766D2E6370752E636F756E74020A436F756E74FFFFFF04010C4D656D6F72790201126261722D6368617274021C427920506F6F6C20262054797065034839323964636434392D373635312D343362662D626366622D65306534363762383337343904011E6A766D2E6D656D6F72792E75736564021C427920506F6F6C20262054797065031E6A766D2E6D656D6F72792E7479706503286A766D2E6D656D6F72792E706F6F6C2E6E616D65FFFF0201126261722D6368617274020E427920506F6F6C034837626635623462612D393233342D343933342D613137392D36386336373639666638343104011E6A766D2E6D656D6F72792E75736564020E427920506F6F6C03286A766D2E6D656D6F72792E706F6F6C2E6E616D65FFFF0201126261722D6368617274020E42792054797065034861656663343735362D396137362D343534342D383831332D65373933346262356132343604011E6A766D2E6D656D6F72792E75736564020E42792054797065031E6A766D2E6D656D6F72792E74797065FFFF0201126261722D636861727402384743204475726174696F6E204279204E616D65202620416374696F6E04011E6A766D2E67632E6475726174696F6E02384743204475726174696F6E204279204E616D65202620416374696F6E03166A766D2E67632E6E616D65031A6A766D2E67632E616374696F6EFFFFFF04010C5468726561640201126261722D6368617274021C4461656D6F6E20546872656164730401206A766D2E7468726561642E636F756E74021C4461656D6F6E205468726561647303226A766D2E7468726561642E6461656D6F6EFFFF0201126261722D6368617274021A546872656164732053746174650401206A766D2E7468726561642E636F756E74021A5468726561647320537461746503206A766D2E7468726561642E7374617465FFFFFF040126446174616261736520436F6E6E656374696F6E0201126261722D6368617274021E427920506F6F6C202620537461746504013664622E636C69656E742E636F6E6E656374696F6E732E7573616765021E427920506F6F6C20262053746174650312706F6F6C2E6E616D65030A7374617465FFFFFFFF, NOW(), NOW());
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