# data-aggregation **Repository Path**: zheng_mingzhuo/data-aggregation ## Basic Information - **Project Name**: data-aggregation - **Description**: 超智运维平台数据聚合中间件 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-11-21 - **Last Updated**: 2024-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **Data Aggregation Service** ## **项目简介** Data Aggregation Service 是一个用于处理指标、跟踪数据和日志的后端服务,主要功能包括: - 提供基于时间戳、URL 和方法的跟踪数据查询。 - 获取指定服务的指标概览。 - 获取节点级别的指标概览。 - 获取服务的日志数据。 - 提供服务依赖关系的解析。 - 根据混沌实验planId获取实验数据下载链接 本项目基于 Spring Boot 和 RESTful API,使用 Log4j 进行日志记录,使用 Jackson 处理 JSON 数据。 ## **功能列表** ### **1. 跟踪数据查询** 通过时间戳、URL 和方法查询服务的跟踪数据。 - **接口**:`GET /rcadata/getTraceDataBytimestampAndUrl` - **参数**: - `timestamp` (long):时间戳。 - `url` (String):请求的 URL。 - `method` (String):HTTP 方法。 - **返回值**: - 匹配的跟踪数据列表及根错误跨度。 --- ### **2. 根据 TraceID 获取跟踪数据** 通过 TraceID 查询完整的跟踪数据。 - **接口**:`GET /rcadata/getTraceDataByTraceId` - **参数**: - `traceId` (String):跟踪 ID。 - **返回值**: - 匹配的跟踪数据详情。 --- ### **3. 服务级指标概览** 查询指定服务的时间段内的指标概览。 - **接口**:`GET /rcadata/getMetricOverview` - **参数**: - `startTime` (long):查询的起始时间戳。 - `endTime` (long):查询的结束时间戳。 - `metricPrefix` (String):指标前缀(如 CPU、Memory、Net、DNS、JVM)。 - `serviceName` (String):服务名称。 - `namespace` (String):命名空间。 - **返回值**: - 服务的指标数据。 --- ### **4. 节点级指标概览** 查询指定节点的时间段内的指标概览。 - **接口**:`GET /rcadata/getNodeMetricOverview` - **参数**: - `startTime` (long):查询的起始时间戳。 - `endTime` (long):查询的结束时间戳。 - `metricPrefix` (String):指标前缀(如 CPU、Memory、Net、Disk、I/O)。 - `nodeName` (String):节点名称。 - **返回值**: - 节点的指标数据。 --- ### **5. 获取服务日志** 获取指定服务在指定时间段内的日志数据。 - **接口**:`GET /rcadata/getLogsByService` - **参数**: - `serviceName` (String):服务名称。 - `namespace` (String):命名空间。 - `startTime` (long):查询的起始时间戳。 - `endTime` (long):查询的结束时间戳。 - **返回值**: - 日志条目列表。 --- ### **6. 获取服务依赖关系** 查询服务的依赖关系图。 - **接口**:`GET /rcadata/getDependencyMap` - **参数**: - `serviceName` (String):服务名称。 - `namespace` (String):命名空间。 - `startTime` (long):查询的起始时间戳。 - `endTime` (long):查询的结束时间戳。 - **返回值**: - 服务的依赖关系图。 --- ### **7. 获取实验数据下载链接** 查询服务的依赖关系图。 - **接口**:`GET /experimentdata/getData` - **参数**: - `planId` (Int):演练计划id。 - `namespace` (String):命名空间。 - **返回值**: - 数据下载链接。 --- ## **项目结构(待更新)** - **Controller**: - `CorootController`: 提供所有 RESTful 接口的控制器。 - **DTO**: - `TraceRequestFilter`: 定义跟踪数据的过滤条件。 - `TraceRequestQuery`: 定义跟踪数据的查询条件。 - `TraceResponse`: 封装跟踪数据的响应。 - `MetricResponse`: 封装指标数据的响应。 - **Common**: - `CustomResult`: 封装统一的响应格式。 --- ## **环境配置** ### **配置文件** 项目的配置依赖 `application.properties` 文件,其中: - `coroot.url`:Coroot 的 API 基础 URL。 ### **示例配置** ```properties coroot.url=http://your-coroot-server.com/api ``` --- ## **运行项目** ### **1. 本地运行** 1. 确保已安装以下环境: - JDK 8 或以上。 - Maven 或 Gradle。 2. 配置 `application.properties` 文件。 3. 在项目根目录运行: ```bash mvn spring-boot:run ``` 4. 服务默认启动在 `http://localhost:8080`。 ### **2. Docker 部署** 如果您有 Docker 支持,可以创建 Docker 镜像并运行: 1. 创建 `Dockerfile`: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/data-aggregation-service.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 2. 构建并运行镜像: ```bash docker build -t data-aggregation-service . docker run -p 8080:8080 data-aggregation-service ``` --- ## **日志记录** 项目使用 Log4j 记录日志。默认的日志配置文件位于 `src/main/resources/log4j.properties`。 ### **日志级别** - INFO: 记录关键操作。 - DEBUG: 记录调试信息。 - ERROR: 记录错误和异常。 --- ## **接口示例** ### **请求示例** ```bash curl -X GET "http://localhost:8080/rcadata/getTraceDataBytimestampAndUrl?timestamp=1690000000&url=/example&method=GET" ``` ### **响应示例** ```json { "status": "ok", "data": [ { "traceList": [...], "rootErrorSpanList": [...] } ] } ``` --- ## **贡献** 欢迎提交 issue 或 pull request 以改进本项目。 --- ## **许可** 本项目遵循 MIT 开源许可协议。