Skip to content

chaosblade-io/cloud-native-maturity-evaluate

Repository files navigation

SESORA - 云原生架构成熟度评估系统

Python Version GitHub Stars GitHub Forks GitHub Issues Last Commit Repo Size

Serverless | Elasticity | Service Architecture | Observability | Resilience | Automation

SESORA 是一个基于阿里云的云原生架构成熟度评估工具,通过自动化数据采集和智能分析,从六个维度全面评估您的云原生架构成熟度水平。

特性

  • 六维度评估模型:覆盖 Automation、Elasticity、Observability、Resilience、Serverless、Service Architecture 六大云原生核心能力
  • 自动化数据采集:支持 17+ 阿里云产品及第三方服务的数据自动采集
  • 60+ 评估指标:细粒度的评分标准,提供可操作的改进建议
  • 三态评分机制:区分"已评估"、"条件不满足"、"数据不足"三种状态
  • 增量采集支持:支持分阶段采集数据,逐步完善评估
  • 平台无关数据层:规范化的数据模型,便于扩展其他云平台
  • Web 管理界面:基于 Vue 3 + FastAPI 的现代化 Web 管理控制台

架构概览

SESORA 架构图

SESORA 采用分层架构设计,自上而下分为四层:

  • Web 管理层:Vue 3 前端 + FastAPI 后端,提供可视化操作界面
  • 分析评分层:60+ 独立 Analyzer 实现细粒度评估
  • 平台无关数据层:统一的 DataItem Schema,支持多种存储后端
  • 数据采集层:17+ Collector 对接各类云产品和第三方服务

快速开始

1. 环境准备

方式一:使用 pyproject.toml 安装(推荐)

# 克隆项目
git clone https://github.com/chaosblade-io/cloud-native-maturity-evaluate.git
cd cloud-native-maturity-evaluate

# 安装包(开发模式,可编辑)
pip install -e .

# 或安装到用户目录
pip install --user -e .

方式二:使用 requirements.txt 安装

# 克隆项目
git clone https://github.com/chaosblade-io/cloud-native-maturity-evaluate.git
cd cloud-native-maturity-evaluate

# 安装依赖
pip install -r requirements.txt

方式三:使用 Hatch 构建工具

# 安装 hatch
pip install hatch

# 在隔离环境中运行
cd cloud-native-maturity-evaluate
hatch shell

# 或直接使用 hatch 运行
hatch run python run_pipeline/main.py

2. 配置环境变量

# 复制环境变量模板
cp .env.example .env

# 编辑 .env 文件,填入您的阿里云凭证和资源信息

核心配置项:

# 阿里云基础凭证(必填)
ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
ALIBABA_CLOUD_REGION=cn-hangzhou

# ACK 容器服务
ACK_CLUSTER_ID=your_cluster_id
KUBECONFIG_PATHS='["/path/to/kubeconfig"]'

# ARMS APM
ARMS_WORKSPACE_ID=your_workspace_id

# SLS 日志服务
SLS_PROJECT=your_project_name
SLS_REGION=cn-hangzhou

# 云效 Codeup(CI/CD 评估)
YUNXIAO_TOKEN=your_token
CODEUP_ORG_ID=your_org_id
CODEUP_PIPELINE_IDS='["pipeline_id_1", "pipeline_id_2"]'

3. 运行评估

方式一:启动 Web 管理界面(推荐)

# 一键启动前后端服务
./start.sh

启动后访问:

Web 界面提供:

  • 配置管理:可视化配置阿里云凭证和资源信息
  • Mock 数据:上传 Mock 数据进行测试
  • 数据采集:一键采集或分步采集云资源数据
  • 评估分析:查看评估报告和详细分析结果

Web 管理界面

方式二:完整流程(采集 + 分析)

python run_pipeline/main.py

方式二:分步执行

# 步骤 1:数据采集
python run_pipeline/collect_data.py

# 步骤 2:运行分析
python run_pipeline/run_analyzer.py data/sesora.db

方式三:运行指定分析器

# 使用配置文件指定分析器
python run_pipeline/run_analyzer.py data/sesora.db --config run_pipeline/run_cases.json

# 或直接指定 key
python run_pipeline/run_analyzer.py data/sesora.db --key ha_redundancy,mon_metrics_depth

评估维度

1. Automation(自动化)

子类 评估内容
CI/CD 流水线 构建自动化、测试自动化、部署自动化、发布管理、流水线即代码
基础设施即代码 (IaC) 资源自动创建、配置管理、策略代码化、漂移检测
运维自动化 故障自动发现、自动扩缩容、备份自动化、安全自动化
GitOps ArgoCD/Flux 部署、配置即代码

2. Elasticity(弹性)

子类 评估内容
水平扩展 (HPA) HPA 配置覆盖率、扩缩容指标多样性
垂直扩展 (VPA) VPA 部署、资源推荐
负载均衡 入口负载均衡、服务网格负载均衡
资源管理 命名空间资源配额、节点资源管理

3. Observability(可观测性)

子类 评估内容
监控能力 指标收集深度、告警规则、告警通道、工具链集成
日志能力 日志收集覆盖率、日志结构化程度、关联分析
链路追踪 追踪覆盖率、采样配置、端到端追踪
可视化 Dashboard 覆盖率、自定义仪表板

4. Resilience(韧性)

子类 评估内容
高可用性 冗余设计、多可用区部署、负载均衡、全球分布
容错能力 熔断、限流、重试、超时配置
灾难恢复 备份策略、恢复演练、RTO/RPO
健康管理 存活探针、就绪探针配置

5. Serverless(无服务器)

子类 评估内容
FaaS 函数计算 函数计算使用覆盖率、版本管理
事件驱动 (EDA) EventBridge 配置、事件路由
数据服务 云原生数据服务使用

6. Service Architecture(服务架构)

子类 评估内容
API 管理 API 网关配置、版本管理
服务通信 服务网格 Istio、gRPC 配置
数据管理 数据库架构、缓存、消息队列

数据采集器

SESORA 支持以下阿里云产品的数据自动采集:

采集器 采集内容
ACK Collector Kubernetes Deployment、StatefulSet、Pod、HPA、VPA、Service、Ingress、CronJob、Event、ResourceQuota、Istio 资源
ARMS Collector APM 服务列表、服务拓扑、外部依赖、链路追踪配置
CMS Collector 告警规则、联系人、联系组、告警历史、事件触发器
SLS Collector Logstore 列表、日志样本、索引配置、存档策略
Codeup Collector 流水线运行记录、代码仓库、提交记录、分支信息
FC Collector 函数列表、别名、版本信息
ROS Collector 资源栈列表、漂移检测信息
RDS Collector 数据库实例、备份策略、代理配置
OSS Collector Bucket 信息、生命周期规则
ACR Collector 镜像仓库、镜像列表、扫描结果
ALB Collector 监听器配置
ECS Collector 实例信息、安全组及规则
EventBridge Collector 事件总线、事件规则、事件目标
Grafana Collector Dashboard、数据源、告警规则
GTM Collector 全局流量管理配置、地址池
Tair Collector Tair 实例信息、备份策略

输出报告

评估报告结构

评估报告
├── 任务信息 (task_id, 执行时间)
├── 汇总统计
│   ├── 总分 / 满分
│   ├── 成熟度百分比
│   ├── 评估覆盖率
│   └── 各维度得分
└── 维度详情
    ├── Automation (子类 × N)
    ├── Elasticity (子类 × N)
    ├── Observability (子类 × N)
    ├── Resilience (子类 × N)
    ├── Serverless (子类 × N)
    └── Service Architecture (子类 × N)

输出格式

  • 前端展示页面:便于快速预览各项得分
  • CSV 文件:便于数据分析和报表生成
  • 文本报告:便于阅读的成熟度评分报告
  • Json 文件:便于快速系统集成

评估报告网页端示例 评估报告文件示例

项目结构

cloud-native-maturity-evaluate/
├── sesora/                    # 核心库
│   ├── core/                  # 核心抽象
│   │   ├── analyzer.py        # 分析器基类
│   │   ├── collector.py       # 采集器基类
│   │   ├── context.py         # 评估上下文
│   │   ├── dataitem.py        # 数据项定义
│   │   └── report.py          # 报告结构
│   ├── analyzers/             # 分析器实现(六维度)
│   │   ├── automation/        # 自动化维度
│   │   ├── elasticity/        # 弹性维度
│   │   ├── observability/     # 可观测性维度
│   │   ├── resilience/        # 韧性维度
│   │   ├── serverless/        # Serverless 维度
│   │   └── service_arch/      # 服务架构维度
│   ├── collectors/            # 数据采集器(17+)
│   ├── schema/                # 数据模型定义
│   ├── store/                 # 数据存储(SQLite)
│   └── engine.py              # 评估引擎
├── api/                       # FastAPI 后端
│   ├── main.py                # API 主入口
│   ├── routers/               # 路由模块
│   │   ├── config.py          # 配置管理 API
│   │   ├── collect.py         # 数据采集 API
│   │   ├── analyze.py         # 评估分析 API
│   │   └── mock_data.py       # Mock 数据 API
│   ├── services/              # 业务逻辑层
│   └── models/                # 数据模型
├── web/                       # Vue 3 前端
│   ├── src/
│   │   ├── views/             # 页面视图
│   │   │   ├── ConfigView.vue     # 配置管理页
│   │   │   ├── CollectView.vue    # 数据采集页
│   │   │   ├── AnalyzeView.vue    # 评估分析页
│   │   │   └── MockDataView.vue   # Mock 数据页
│   │   ├── api/               # API 调用
│   │   └── router.js          # 路由配置
│   └── package.json           # 前端依赖
├── run_pipeline/              # 命令行脚本
│   ├── main.py                # 主入口
│   ├── collect_data.py        # 数据采集脚本
│   └── run_analyzer.py        # 分析运行脚本
├── data/                      # 数据存储目录
├── start.sh                   # 一键启动脚本
└── pyproject.toml             # Python 包配置

三态评分机制

SESORA 采用三态评分机制,清晰区分不同评估状态:

状态 说明 计入得分
SCORED 分析已执行,得到具体分数
NOT_SCORED 条件不满足,得 0 分
NOT_EVALUATED 数据不足,无法评估

这种机制确保了:

  • 数据不足时不影响已评估项的得分计算
  • 清晰展示评估覆盖率
  • 指导用户补充缺失的数据采集

配置详解

完整配置项请参考 .env.example,主要包括:

配置类别 说明
阿里云凭证 AccessKey ID/Secret、Region
ACK 配置 集群 ID、kubeconfig 路径、命名空间
ARMS 配置 工作空间 ID
SLS 配置 Project、Logstore、Region
Codeup 配置 Token、组织 ID、仓库 ID、流水线 ID
ROS 配置 资源栈名称、Region
FC 配置 函数名称列表
RDS 配置 实例 ID 列表
OSS 配置 Bucket 名称列表
ACR 配置 实例 ID 列表
ALB 配置 负载均衡器 ID 列表
ArgoCD 配置 Server 地址、Token
Grafana 配置 Server 地址、API Key
GTM 配置 实例 ID 列表
Tair 配置 实例 ID 列表

常见问题

1. 如何只运行部分分析器?

使用 --key 参数指定要运行的分析器:

python run_pipeline/run_analyzer.py data/sesora.db --key ha_redundancy,mon_metrics_depth

或编辑 run_pipeline/run_cases.json 配置文件。

2. 如何查看数据采集状态?

python run_pipeline/run_analyzer.py data/sesora.db --verbose

将显示数据库中所有 DataItem 及各分析器的数据需求满足情况。

3. 如何扩展新的分析器?

  1. sesora/analyzers/ 对应维度目录下创建分析器
  2. 继承 Analyzer 基类,实现必要方法
  3. __init__.py 中注册新分析器

4. 如何支持新的云产品采集?

  1. sesora/schema/ 中定义数据模型
  2. sesora/collectors/ 中实现采集器
  3. run_pipeline/collect_data.py 中注册采集器

依赖项

后端

  • Python 3.10+
  • FastAPI + Uvicorn
  • 阿里云 SDK(alibabacloud-*)
  • Kubernetes Python Client
  • SQLite3(Python 标准库)

前端

  • Node.js 18+
  • Vue 3 + Vue Router
  • Element Plus
  • ECharts
  • Axios

依赖管理方式

本项目使用 pyproject.toml 作为主要的依赖和构建配置:

文件 用途
pyproject.toml 现代 Python 包配置(推荐)
requirements.txt 传统依赖列表(兼容)

安装依赖

# 从 pyproject.toml 安装(推荐)
pip install -e .

# 或从 requirements.txt 安装
pip install -r requirements.txt

贡献

欢迎提交 Issue 和 Pull Request!

Star History


SESORA - 让云原生架构评估更简单、更专业

About

云原生成熟度评估

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages