atakanzaa/incident-platform

GitHub: atakanzaa/incident-platform

一个基于微服务与机器学习的 AI 驱动事件检测与响应平台,实现端到端的事件生命周期自动化管理。

Stars: 0 | Forks: 0

# 事件平台 一个基于 Spring Boot 微服务和 Python 机器学习服务构建的 AI 驱动事件检测与响应平台。该系统摄取日志、检测异常、关联告警、执行自动化响应,并在开发、预生产和生产环境中跟踪事件直至解决。 ## 目录 - [概述](#overview) - [架构](#architecture) - [技术栈](#technology-stack) - [前提条件](#prerequisites) - [快速开始](#quick-start) - [环境](#environments) - [配置](#configuration) - [CI/CD 流水线](#cicd-pipeline) - [开发流程](#development-workflow) - [可观测性](#observability) - [安全性](#security) - [运维](#operations) - [故障排查](#troubleshooting) - [贡献](#contributing) - [许可证](#license) ## 概述 该平台提供端到端的事件生命周期管理:摄取、检测、关联、通知、响应与事后跟踪。它设计用于在 Kubernetes 上实现水平扩展,并支持在本地 Docker Compose 栈上快速迭代。 关键能力: - 通过 Kafka 进行集中式日志收集与流式传输 - 基于专用 Python 服务的机器学习异常检测 - 多渠道告警与通知路由 - 基于策略的自动化修复 - 带有审计追踪的事件跟踪 - 实时仪表板与 SLA 监控 ## 架构 该平台由 12 个协同服务组成,通过服务注册表、集中式配置服务器和 API 网关进行编排。 ### 平台服务 | 服务 | 职责 | | --- | --- | | `config-server` | 集中化外部化配置(Spring Cloud Config) | | `discovery-server` | 服务注册与发现(Eureka) | | `gateway-service` | API 网关、路由与认证过滤器 | | `auth-service` | 认证、授权与 JWT 发行 | ### 领域服务 | 服务 | 职责 | | --- | --- | | `log-collector-service` | 日志摄取与标准化 | | `anomaly-detector-service` | 在标准化事件上的流式异常检测 | | `alert-manager-service` | 告警去重、关联与路由 | | `notification-service` | 多渠道投递(邮件、Webhook、聊天) | | `auto-responder-service` | 基于策略的自动化修复 | | `incident-tracker` | 事件生命周期与审计追踪 | | `dashboard-service` | 运营仪表板与指标 API | | `ai-service` | 用于检测与分析 Python 机器学习服务 | ### 数据与消息 - **PostgreSQL** — 事务数据(认证、事件、配置) - **MongoDB** — 日志与增强事件的文档存储 - **Redis** — 缓存、速率限制与临时状态 - **Kafka** — 事件流 backbone - **RabbitMQ** — 命令与通知消息 ## 技术栈 | 层级 | 技术 | | --- | --- | | 语言(JVM) | Java 21 | | 语言(ML) | Python 3.8+ | | 框架 | Spring Boot 3.5,Spring Cloud 2025.0 | | 构建 | Maven 3.9+ | | 消息 | Apache Kafka 3.8,RabbitMQ 3.x | | 存储 | PostgreSQL 15,MongoDB 7,Redis 7 | | 容器 | Docker,Docker Compose | | 编排 | Kubernetes,Helm 3.12+ | | GitOps | Argo CD | | CI/CD | Jenkins | | 可观测性 | Prometheus,Grafana,Jaeger,ELK | ## 前提条件 - Docker 与 Docker Compose - JDK 21 - Maven 3.9 或更新版本 - Python 3.8 或更新版本(用于 AI 服务) - `kubectl` 与 Helm 3.12+(用于 Kubernetes 部署) ## 快速开始 ### 本地开发 ``` git clone https://github.com/atakanzaa/incident-platform.git cd incident-platform docker-compose -f docker-compose.development.yml up -d docker-compose -f docker-compose.development.yml ps ``` 默认本地端点: | 组件 | URL | 凭证 | | --- | --- | --- | | API 网关 | http://localhost:8080 | — | | 仪表板 | http://localhost:8088 | — | | Prometheus | http://localhost:9090 | — | | RabbitMQ 管理 | http://localhost:15672 | `admin` / `admin123` | ### 预发布部署 ``` kubectl apply -f argocd/applications/incident-platform-staging.yaml kubectl get pods -n incident-platform-staging ``` ### 生产部署 生产环境通过 CI/CD 流水线部署,需人工审批。紧急部署可直接应用: ``` kubectl apply -f argocd/applications/incident-platform-production.yaml ``` ## 环境 | 环境 | 分支 | 基础设施 | 部署 | 审批 | | --- | --- | --- | --- | --- | | 开发 | `development` | Docker Compose | 提交后自动部署 | 无 | | 预发布 | `develop` | Kubernetes | 测试通过后自动部署 | 无 | | 生产 | `main` | 高可用 Kubernetes | 流水线驱动 | 必需 | 每个环境在安全性、可用性、可观测性与数据持久性方面提供逐步增强的保障。 ### 资源分配 | 环境 | CPU 请求 | 内存请求 | 副本数 | | --- | --- | --- | --- | | 开发 | 100m | 256Mi | 1 | | 预发布 | 250m | 512Mi | 1–2 | | 生产 | 500m | 1Gi | 2–10 | ### 数据层 | 环境 | PostgreSQL | MongoDB | Redis | | --- | --- | --- | --- | | 开发 | 单实例,临时 | 单实例,临时 | 单实例,临时 | | 预发布 | 持久化单实例 | 副本集(3 节点) | 主/副本 | | 生产 | 主从读扩展 | 分片集群与副本集 | 集群与故障转移 | ## 配置 所有服务从配置服务器和当前 Spring 配置文件消费配置。 ### Spring 配置文件 ``` spring.profiles.active: development # local spring.profiles.active: staging # staging spring.profiles.active: production # production ``` ### 环境变量 开发环境: ``` SPRING_PROFILES_ACTIVE=development DB_HOST=localhost KAFKA_BOOTSTRAP_SERVERS=localhost:9092 RABBITMQ_HOST=localhost REDIS_HOST=localhost LOG_LEVEL=DEBUG ``` 预发布环境: ``` SPRING_PROFILES_ACTIVE=staging DB_HOST=postgresql-staging KAFKA_BOOTSTRAP_SERVERS=kafka-staging:9092 RABBITMQ_HOST=rabbitmq-staging REDIS_HOST=redis-staging LOG_LEVEL=INFO ``` 生产环境: ``` SPRING_PROFILES_ACTIVE=production DB_HOST=${DB_HOST} DB_PASSWORD=${DB_PASSWORD} JWT_SECRET=${JWT_SECRET} KAFKA_SASL_CONFIG=${KAFKA_SASL_CONFIG} LOG_LEVEL=WARN ``` 预发布与生产环境的密钥来源于集群密钥存储,绝不会提交到代码仓库。 ## CI/CD 流水线 Jenkins 流水线包含以下阶段: 1. 环境检测与工作区初始化 2. 检出与配置验证 3. Maven 构建与 Python 环境准备 4. 单元测试(Java 与 Python)并收集覆盖率 5. 环境特定集成测试 6. 静态分析、依赖扫描与容器镜像扫描 7. 多架构 Docker 镜像构建 8. 基于分支的目标环境部署 9. 部署后健康检查与冒烟测试 ### 分支策略 ``` graph LR A[development] -->|Auto Deploy| B[Development] C[develop] -->|Auto Deploy| D[Staging] E[main] -->|Manual Approval| F[Production] A -->|PR| C C -->|PR + Approval| E ``` ## 开发流程 ### 功能开发 ``` git checkout development git checkout -b feature/your-feature-name docker-compose -f docker-compose.development.yml up -d git add . git commit -m "feat: add your feature" git push origin feature/your-feature-name ``` 打开指向 `development` 的拉取请求。 ### 晋升到预发布 ``` git checkout develop git merge feature/your-feature-name git push origin develop kubectl logs -f deployment/gateway-service -n incident-platform-staging ``` ### 生产发布 ``` git checkout main git merge develop git push origin main ``` 在 Jenkins 中批准生产部署并监控 rollout。 ### 测试 ``` # 单元测试 mvn test -Dspring.profiles.active=development # 集成测试 mvn verify -Pintegration-tests -Dspring.profiles.active=staging # 性能测试 mvn test -Pperformance-tests -Dspring.profiles.active=production ``` ### 健康检查 ``` curl http://localhost:8080/actuator/health curl https://incident-platform-staging.your-domain.com/actuator/health curl https://incident-platform.your-domain.com/actuator/health ``` ## 可观测性 | 能力 | 开发 | 预发布 | 生产 | | --- | --- | --- | --- | | 日志 | Docker Compose | 集中式(ELK) | 集中式并设置保留策略 | | 指标 | Prometheus(基础) | Prometheus + Grafana | 高可用 Prometheus 与长期存储 | | 追踪 | — | Jaeger | 全覆盖 Jaeger | | 告警 | — | 基础规则 | 完整告警与 PagerDuty | | 备份 | — | 周期性 | 自动验证 | | SLA 跟踪 | — | — | 24/7 与值班轮换 | ## 安全性 | 关注点 | 开发 | 预发布 | 生产 | | --- | --- | --- | --- | 传输加密 | 禁用 | TLS | 双向 TLS | | 认证 | 宽松 | 强制 | 强制并使用短时令牌 | | CORS | 开放 | 受限 | 受限允许列表 | | 密钥 | 本地环境文件 | 集群密钥存储 | 集群密钥存储与轮换 | | 网络策略 | — | 命名空间级别 | 命名空间与 Pod 级别 | | 扫描 | — | CI 流水线 | CI 流水线与运行时 | | 审计 | — | 基础 | 完整审计日志与合规审查 | ## 运维 ### Docker Compose 文件 ``` docker-compose -f docker-compose.development.yml up -d docker-compose -f docker-compose.staging.yml up -d docker-compose -f docker-compose.production.yml up -d ``` ### 服务日志 ``` # Docker Compose docker-compose -f docker-compose.development.yml logs -f # Kubernetes kubectl logs -f deployment/ -n incident-platform-staging ``` ### Argo CD ``` argocd app get incident-platform-staging argocd app sync incident-platform-staging ``` ## 故障排查 **服务发现** ``` curl http://discovery-server:8761/eureka/apps ``` **数据库连接性** ``` kubectl exec -it deployment/auth-service -- nc -zv postgresql 5432 ``` **消息代理状态** ``` kubectl exec -it deployment/rabbitmq -- rabbitmq-diagnostics status ``` **端口冲突(本地)** ``` netstat -tulpn | grep :8080 ``` ## 贡献 1. 叉取仓库。 2. 从 `development` 分支创建功能分支。 3. 使用 [Conventional Commits](https://www.conventionalcommits.org/) 提交变更。 4. 将分支推送到 `development` 并打开拉取请求。 5. 在请求评审前确保 CI 流水线通过。 有关本地设置详情,请参阅 [DEVELOPMENT.md](./DEVELOPMENT.md)。有关异常检测测试场景,请参阅 [ANOMALY_TESTING_GUIDE.md](./ANOMALY_TESTING_GUIDE.md)。 ## 许可证 根据 MIT 许可证发布。详见 [LICENSE](LICENSE)。
标签:AI驱动, API网关, CSV输出, Docker Compose, JWT认证, Kafka, Kubernetes部署, Python机器学习, SLA监控, SOAR, SonarQube插件, Spring Boot, 事件检测, 事件追踪, 告警关联, 域名枚举, 多渠道通知, 子域名突变, 安全运营, 审计追踪, 平台即服务, 开发环境, 异常检测, 扫描框架, 搜索引擎查询, 日志采集, 服务注册, 测试用例, 版权保护, 生产环境, 策略驱动, 自动化响应, 自定义请求头, 配置中心, 靶机