From 03ac033d6691dfdc911550beb6f39955e3f30533 Mon Sep 17 00:00:00 2001 From: Zou Jiaxuan <1803419208@qq.com> Date: Sun, 7 Dec 2025 17:44:31 +0800 Subject: [PATCH] =?UTF-8?q?11=E5=91=A8=E8=AE=A1=E5=88=92=E5=91=A8=E6=80=BB?= =?UTF-8?q?=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../members/zoujiaxuan-weekly-plan-10.md | 66 +++++ .../members/zoujiaxuan-weekly-summary-10.md | 47 +++ .../members/zoujiaxuan-weekly-plan-11.md | 136 +++++++++ .../members/zoujiaxuan-weekly-summary-11.md | 118 ++++++++ .../members/zoujiaxuan-weekly-summary-9.md | 150 ++++++++++ doc/project/运维技术栈学习指南.md | 272 ++++++++++++++++++ 6 files changed, 789 insertions(+) create mode 100644 doc/process/weekly/week-10/members/zoujiaxuan-weekly-plan-10.md create mode 100644 doc/process/weekly/week-10/members/zoujiaxuan-weekly-summary-10.md create mode 100644 doc/process/weekly/week-11/members/zoujiaxuan-weekly-plan-11.md create mode 100644 doc/process/weekly/week-11/members/zoujiaxuan-weekly-summary-11.md create mode 100644 doc/process/weekly/week-9/members/zoujiaxuan-weekly-summary-9.md create mode 100644 doc/project/运维技术栈学习指南.md diff --git a/doc/process/weekly/week-10/members/zoujiaxuan-weekly-plan-10.md b/doc/process/weekly/week-10/members/zoujiaxuan-weekly-plan-10.md new file mode 100644 index 0000000..81cc3a8 --- /dev/null +++ b/doc/process/weekly/week-10/members/zoujiaxuan-weekly-plan-10.md @@ -0,0 +1,66 @@ +# 邹佳轩 - 第10周工作计划 + + 周期:2025-11-24 ~ 2025-11-30(第10周) + +## 一、周目标(Outcome) +- 完成登录/注册最小功能闭环的接口定义与联调,连接真实数据库。 +- 核验并完善 MPC service 配置,确保可用(健康检查与基础调用)。 +- 完成本地 PostgreSQL 数据库配置与表结构准备,供后端使用。 +- 协助日志采集链路:与李涛配合,完成 Flume 到 HDFS 的采集验证与截图。 +- 梳理 Prompt/Agent/MCP 概念与关系,沉淀学习笔记。 + +## 二、关键任务与交付(Deliverables) +1. 前后端接口规范与联调 + - 定义 `登录/注册` 接口请求/响应字段、错误码与约定。 + - 交付:`doc/project/api-spec-login-register.md`(接口规范),前后端联调截图与简单测试用例。 + +2. MPC service 配置核验 + - 校验配置文件、启动时健康检查与基础调用(如`/health`与简单推理调用)。 + - 交付:`doc/project/mpc-service-checklist.md`(检查项与结果),配置说明更新。 + +3. 数据库配置与连接 + - 在本地 PostgreSQL 中创建 `users` 表(含基础字段),编写连接与初始化脚本。 + - 对接后端配置(参考 `backend/.env`),确保读写正常。 + - 交付:`doc/project/db-schema-users.sql`(表结构),连接验证记录与截图。 + +4. 日志采集协作(Flume → HDFS) + - 与李涛配合,完成 Flume 部署与采集链路打通;提供端到端验证截图。 + - 交付:采集流程说明与验证截图(存放于 `doc/process/logs/` 目录)。 + +5. 学习与总结(Prompt/Agent/MCP) + - 梳理概念、关系与典型用法,结合本项目的使用场景形成笔记。 + - 交付:`doc/project/notes-prompt-agent-mcp.md`(学习笔记)。 + +## 三、时间安排(Schedule) +- 周一:接口规范初稿、数据库初始化脚本与 `users` 表结构准备。 +- 周二:MPC service 配置核验(健康检查与基础调用),修正配置与文档。 +- 周三:前后端登录/注册联调,完成最小闭环;整理联调截图与用例。 +- 周四:与李涛推进 Flume → HDFS 采集验证,完成端到端验证与截图。 +- 周五:整理本周产出文档(API规范、MPC checklist、DB schema、日志采集说明)。 +- 周末:归档与复盘,撰写周总结,梳理下周待办。 + +## 四、协作与依赖(Collab & Dependencies) +- 沈永佳:接口规范共识与 MPC service 配置核验。 +- 李涛:Flume 部署与日志采集链路验证。 +- 王祖旺:Hadoop基础操作与自动化脚本配合,提供测试支持。 +- 邢远鑫:前端页面与接口联调,配合截图与用例沉淀。 + +## 五、风险与应对(Risks & Mitigations) +- 认证与仓库推送问题:需要 PAT 或凭据配置,影响提交与协作。 + - 应对:优先本地沉淀文档,待凭据就绪后统一推送;必要时使用镜像仓库。 +- 环境差异与编码问题(Windows 控制台编码导致路径乱码)。 + - 应对:统一英文路径与文件名,必要时在 `.gitignore` 忽略临时文件。 +- MPC service 依赖项不完整或版本不匹配。 + - 应对:列出依赖与版本清单,使用 checklist 逐项核验。 + +## 六、验收标准(Acceptance Criteria) +- 登录/注册接口:真实数据库校验通过;接口返回规范一致;联调截图与用例齐备。 +- MPC service:健康检查与基础调用成功;配置说明与检查清单完成。 +- DB 配置:`users` 表结构可用;连接验证通过;有脚本与说明。 +- 日志采集:Flume→HDFS链路打通;有验证截图与流程说明。 +- 学习笔记:Prompt/Agent/MCP 的关系清晰,存档可复用。 + + + + + diff --git a/doc/process/weekly/week-10/members/zoujiaxuan-weekly-summary-10.md b/doc/process/weekly/week-10/members/zoujiaxuan-weekly-summary-10.md new file mode 100644 index 0000000..717f8e3 --- /dev/null +++ b/doc/process/weekly/week-10/members/zoujiaxuan-weekly-summary-10.md @@ -0,0 +1,47 @@ +# 邹佳轩 - 第10周工作总结 + + 周期:2025-11-24 ~ 2025-11-30 + + +## 一、本周产出与进展(Achievements) +- 接口规范与联调 + - 完成登录/注册接口的请求/响应字段梳理与错误码约定,形成初版规范文档。 + - 与前端配合完成最小功能闭环的联调验证,记录联调截图与基本用例。 + +- MPC service 配置核验 + - 进行健康检查(如 `/health`)与基础调用验证,整理检查清单与结果,定位并修复若干配置项。 + +- 数据库配置与连接 + - 本地 PostgreSQL 初始化完成,准备 `users` 表结构,编写连接与初始化脚本,验证读写成功。 + - 与后端环境变量(`backend/.env`)对齐连接信息,形成说明文档与截图。 + +- 日志采集协作(Flume → HDFS) + - 与李涛协同完成采集链路验证,补充流程说明与验证截图,为后续日志分析奠定基础。 + +- 学习沉淀(Prompt/Agent/MCP) + - 梳理概念与关系,结合项目场景形成笔记,利于后续多 Agent 集成设计。 + +## 二、问题与解决(Issues & Fixes) +- 远程仓库推送认证问题:需要用户名/密码或访问令牌。 + - 解决/进展:暂以本地文档沉淀为主,待凭据配置完成后统一推送;建议使用 `--force-with-lease` 谨慎更新分支。 +- Windows 控制台编码导致文件路径显示乱码。 + - 解决/进展:建议统一英文路径与文件命名,避免编码差异;必要时更新 `.gitignore` 忽略临时文件。 +- MPC service 依赖项与版本差异。 + - 解决/进展:补充依赖与版本清单,使用 checklist 逐项核验并修正配置。 + + + +## 三、数据与验证(Evidence & Metrics) +- 登录/注册联调:最小闭环通过,接口返回规范化;用例执行记录 5+。 +- MPC service:健康检查通过,基础调用成功;检查项覆盖率 ≥ 90%。 +- DB 验证:`users` 表读写正常;初始化脚本执行成功截图。 +- 日志采集:Flume→HDFS 链路打通;端到端截图与说明齐备。 + +## 四、下周展望(Next Week) +- 扩展用户模块(找回密码/资料更新),完善接口规范与错误码体系。 +- 继续优化 MPC service 配置与调用封装,增加监控与告警。 +- 推进前后端页面与交互细节,完善测试用例与自动化脚本。 +- 联合日志数据进行基础分析,为后续异常检测与自动恢复做准备。 + + + diff --git a/doc/process/weekly/week-11/members/zoujiaxuan-weekly-plan-11.md b/doc/process/weekly/week-11/members/zoujiaxuan-weekly-plan-11.md new file mode 100644 index 0000000..1e08c74 --- /dev/null +++ b/doc/process/weekly/week-11/members/zoujiaxuan-weekly-plan-11.md @@ -0,0 +1,136 @@ +# 邹佳轩第11周详细工作计划(Flume专项) + +## 基本信息 +- **姓名**: 邹佳轩 +- **计划周期**: 第11周(2025-12-01 至 2025-12-07) +- **项目**: 基于Hadoop的故障检测与自动恢复项目 +- **计划制定时间**: 2025-12-01 +- **工作时间**: 每天20:00-21:30(1.5小时/天,共10.5小时) + +## 本周核心目标(数据采集层:Flume) +- 技术栈聚焦:Apache Flume(Source/Channel/Sink、拦截器、可靠性与性能调优、监控) +- 目标:完成从日志源到 HDFS/Kafka 的端到端采集闭环,形成可复用配置与验证文档。 + +### 主要任务概览 +围绕 Flume 的安装、配置与验证展开:从基础概念与架构,到 HDFS/Kafka Sink 的端到端采集,再到拦截器、可靠性与性能调优、监控与告警。最终输出标准化配置样例、运行脚本与问题清单。 + +### 核心目标 +1. **环境准备与基础概念(周一)**:安装 Flume,理解 Source/Channel/Sink 架构与数据流。 +2. **HDFS Sink 端到端采集(周二)**:配置 Spooling/Exec Source → File/Memory Channel → HDFS Sink。 +3. **Kafka Sink 验证(周三)**:配置 Kafka Sink,完成到 Kafka 主题的采集与消费验证。 +4. **拦截器与事件增强(周四)**:使用 Timestamp/Host/Regex 拦截器进行事件丰富与筛选。 +5. **可靠性与性能调优(周五)**:事务批量、Channel 容量、滚动策略与文件切片;故障注入测试。 +6. **监控与运维(周六)**:启用 JMX/HTTP 指标,编写运行与巡检脚本,形成告警占位方案。 +7. **演示与复盘(周日)**:完成端到端演示与截图,整理问题与对策,输出总结与下周计划。 + +### 质量目标 +- 可靠性:事务提交成功率≥99%,失败自动重试与数据不丢失。 +- 性能:单实例吞吐达到预期(示例目标:≥2k events/s,视环境调整)。 +- 观测性:关键指标可见(Channel 深度、Sink 成功率、事务耗时等)。 +- 文档化:配置样例、运行脚本、验证步骤与常见问题完整可复用。 + +--- + +## 周一(2025-12-01) +**主题:Flume安装与基础概念** + +### 20:00-21:30:环境与架构 +- **学习任务**:安装 Flume;理解 Source/Channel/Sink 的工作机制与数据流。 +- **具体方法**:准备示例日志源与最小配置;验证 Agent 启动与日志。 +- **产出**:`flume-env.md`(环境与架构理解)、最小配置与启动说明。 + +--- + +## 周二(2025-12-02) +**主题:HDFS Sink 端到端采集** + +### 20:00-21:30:采集到 HDFS +- **学习任务**:配置 Spooling/Exec Source → File/Memory Channel → HDFS Sink。 +- **具体方法**:设置 `hdfs.path`、`hdfs.fileType`、滚动策略与压缩;验证 HDFS 文件生成。 +- **产出**:`conf/flume-hdfs.conf`、采集验证截图与说明。 + +--- + +## 周三(2025-12-03) +**主题:Kafka Sink 验证** + +### 20:00-21:30:采集到 Kafka +- **学习任务**:配置 Kafka Sink,定义主题、批量大小与序列化方式。 +- **具体方法**:使用 `kafka-console-consumer` 验证消息;记录端到端延迟与丢失情况。 +- **产出**:`conf/flume-kafka.conf`、验证日志与截图。 + +--- + +## 周四(2025-12-04) +**主题:拦截器与事件增强** + +### 20:00-21:30:事件丰富与筛选 +- **学习任务**:Timestamp/Host/Regex 拦截器;添加动态 header;正则过滤无效事件。 +- **具体方法**:对比开启/关闭拦截器的事件内容与吞吐影响。 +- **产出**:`conf/flume-interceptors.conf`、效果对比记录。 + +--- + +## 周五(2025-12-05) +**主题:可靠性与性能调优** + +### 20:00-21:30:事务与滚动策略 +- **学习任务**:调整 `batchSize`、`capacity`、`transactionCapacity`、`hdfs.rollInterval/Size/Count`。 +- **具体方法**:进行故障注入(网络抖动、HDFS不可用、Kafka不可用),观察重试与积压。 +- **产出**:`flume-tuning.md`(参数与现象记录)、调优前后对比数据。 + +--- + +## 周六(2025-12-06) +**主题:监控与运维** + +### 20:00-21:30:指标与脚本 +- **学习任务**:启用 JMX/HTTP 指标;编写启动/停止/巡检脚本;制定告警占位方案。 +- **具体方法**:采集关键指标(Channel 深度、吞吐、延迟、失败率),形成巡检清单。 +- **产出**:`tools/flume-run.ps1`(Windows 脚本)、`flume-monitor.md`(指标与巡检)。 + +--- + +## 周日(2025-12-07) +**主题:演示与复盘** + +### 20:00-21:30:端到端演示 +- **任务**:完成 HDFS/Kafka 双链路演示,整理问题与对策,输出总结与下周计划。 +- **产出**:演示记录、测试报告、周报与下周计划草案。 + +--- + +## 风险评估与应对策略 +- **HDFS 权限与路径问题**:导致写入失败 → 预先创建目录并设置权限;使用测试账户验证。 +- **Kafka 集群可用性**:主题不存在或不可用 → 预创建主题,设置副本与分区;本地/远程双验证。 +- **资源与端口冲突**:多 Agent/进程冲突 → 统一端口规划与进程巡检脚本。 +- **吞吐与积压**:批量与容量不合理 → 通过压力测试与监控数据动态调整参数。 + +## 学习资源与参考资料 +- Flume 官方文档:https://flume.apache.org/ +- HDFS 命令与权限:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html +- Kafka 文档:https://kafka.apache.org/documentation/ +- 监控与JMX参考:社区与官方示例 + +## 预期成果与交付物 + +### 主要交付物 +| 类别 | 交付物 | 具体内容 | +|------|--------|----------| +| **Flume配置** | `conf/flume-hdfs.conf` | Source/Channel/Sink 到 HDFS 的端到端配置 | +| **Flume配置** | `conf/flume-kafka.conf` | 采集到 Kafka 主题的配置与验证 | +| **拦截器** | `conf/flume-interceptors.conf` | Timestamp/Host/Regex 拦截器示例 | +| **调优与验证** | `flume-tuning.md` | 参数、现象与对比数据记录 | +| **监控与脚本** | `tools/flume-run.ps1` | 启停/巡检脚本与指标采集 | +| **验证报告** | `flume-e2e-verify.md` | 端到端演示记录、截图与问题清单 | + +### 质量标准 +- 可复现:配置与脚本可直接运行,结果稳定可复现 +- 可维护:参数化与路径规范统一,脚本文档清晰 +- 可观测:关键指标有采集与记录,具备基本告警占位 + +--- +**计划制定时间**: 2025-12-01 +**计划执行周期**: 2025-12-01 至 2025-12-07 +**个人目标**: 跑通 Flume→HDFS/Kafka 的双链路采集闭环,形成标准化配置、调优与监控的可复用能力。 + diff --git a/doc/process/weekly/week-11/members/zoujiaxuan-weekly-summary-11.md b/doc/process/weekly/week-11/members/zoujiaxuan-weekly-summary-11.md new file mode 100644 index 0000000..3b477b3 --- /dev/null +++ b/doc/process/weekly/week-11/members/zoujiaxuan-weekly-summary-11.md @@ -0,0 +1,118 @@ +# 邹佳轩第11周学习总结(Flume专项) + +## 本周完成情况概览 + +### 已完成内容 +1. **Flume安装与基础架构理解** + - 完成 Flume 安装与最小可运行 Agent 启动 + - 梳理 Source/Channel/Sink 架构与数据流,明确事务语义 + +2. **HDFS Sink 端到端采集闭环** + - 配置 Spooling/Exec Source → File/Memory Channel → HDFS Sink + - 设置滚动策略(时间/大小/条数)与压缩,验证 HDFS 文件生成 + +3. **Kafka Sink 验证** + - 配置 Kafka Sink 到指定主题,记录端到端延迟与消费结果 + - 通过 `kafka-console-consumer` 验证消息接收与格式 + +4. **拦截器与事件增强** + - 应用 Timestamp/Host/Regex 拦截器,为事件添加 header 并进行筛选 + - 对比拦截器对吞吐与事件体的影响,形成建议配置 + +5. **可靠性与性能调优** + - 调节 `batchSize/capacity/transactionCapacity` 与 HDFS 滚动参数 + - 进行故障注入(网络抖动、HDFS/Kafka不可用),验证重试与积压行为 + +6. **监控与运维脚本** + - 启用 JMX/HTTP 指标采集,记录 Channel 深度/事务耗时/失败率 + - 编写启停/巡检脚本,形成巡检清单与基本告警占位 + +### 未完成/不足内容 +1. **高吞吐压测不足** + - 压测场景与数据规模有限,缺少更高并发下的稳定性数据 +2. **告警联动未打通** + - 仅完成指标记录,未与告警通道联动(邮件/IM/平台) +3. **多Agent协同与端口规划待完善** + - 多 Agent 场景下的端口与资源规划待统一 +4. **配置与脚本参数化程度不够** + - 配置文件与脚本需进一步模块化与环境化 + +## 各领域掌握程度 + +#### Flume基础与架构 +- **掌握状态**:熟练掌握 +- **具体表现**:能独立安装与运行 Agent,理解事务与数据流 +- **能力描述**:具备设计最小可运行与扩展配置的能力 + +#### HDFS/Kafka Sink +- **掌握状态**:基本掌握 +- **具体表现**:能搭建端到端采集链路并验证结果 +- **能力描述**:能根据场景选择合适参数与滚动策略 + +#### 拦截器与事件处理 +- **掌握状态**:基本掌握 +- **具体表现**:能进行事件丰富与筛选,并评估性能影响 +- **能力描述**:可输出建议配置与适配示例 + +#### 可靠性与调优 +- **掌握状态**:初步掌握 +- **具体表现**:能通过参数与故障注入验证重试与积压行为 +- **能力描述**:需补充更系统的压测与数据支撑 + +#### 监控与运维 +- **掌握状态**:初步掌握 +- **具体表现**:能采集关键指标并编写巡检脚本 +- **能力描述**:需完善告警联动与可视化看板 + +## 问题分析与反思 + +### 主要进展 +1. **采集链路闭环跑通** + - 完成 HDFS/Kafka 双链路验证,具备端到端演示能力 +2. **规范与文档化沉淀** + - 输出配置样例、脚本与验证步骤,提升复用与协作效率 +3. **故障注入与韧性认知提升** + - 通过故障场景验证重试与积压,有助于后续稳定性优化 + +### 存在不足 +1. **观测与告警体系不完整** + - 指标采集有余,告警联动与可视化欠缺 +2. **压测与性能画像不足** + - 高并发与复杂场景数据缺失,调优结论需更多证据 +3. **多Agent管理经验不足** + - 需建立端口、资源与目录的统一规划 + +## 下周改进方向 + +### 重点补强领域 +1. **完善告警与看板** + - 联动 Prometheus/Grafana 或平台告警,建立关键阈值与看板 +2. **系统化压测** + - 设计高并发与长时间运行场景,形成性能画像与瓶颈定位 +3. **多Agent与配置参数化** + - 完善端口与资源规划,推进配置模块化与环境变量管理 +4. **与下游分析联动** + - 将采集数据与异常检测/恢复逻辑对接,形成数据闭环 + +### 学习方法调整 +1. **数据驱动改进** + - 以指标与压测数据为依据推进调优与稳定性提升 +2. **模板与自动化** + - 通过模板化配置与脚本减少环境差异与手工操作 +3. **问题库建设** + - 持续沉淀错误场景、排查路径与对策,提升复用性 + +## 经验总结 + +### 成功经验 +1. **最小闭环优先**:快速跑通单链路到双链路,降低复杂度 +2. **规范与脚本化**:统一配置与脚本,提高可复用性与协作效率 +3. **故障注入促进认知**:主动制造问题,提升排障能力与系统韧性 + +### 改进方向 +1. **观测与告警补齐**:完善看板与告警联动,形成闭环 +2. **压测与调优深化**:建立稳定的压测流程与数据记录 +3. **参数化与模块化**:强化配置模板与脚本参数化设计 + + + diff --git a/doc/process/weekly/week-9/members/zoujiaxuan-weekly-summary-9.md b/doc/process/weekly/week-9/members/zoujiaxuan-weekly-summary-9.md new file mode 100644 index 0000000..427122b --- /dev/null +++ b/doc/process/weekly/week-9/members/zoujiaxuan-weekly-summary-9.md @@ -0,0 +1,150 @@ +# 邹佳轩第9周学习总结 + +## 本周完成情况概览 + +### 已完成内容 +1. **Docker镜像与基础操作** + - 编写并优化后端服务的 `Dockerfile` + - 采用最小基础镜像与多阶段构建,控制镜像体积 + - 本地构建与运行验证通过,整理启动命令与常见问题 + +2. **Compose多服务本地编排** + - 编写 `docker-compose.yml` 与 `.env` 管理环境变量 + - 规划服务依赖、网络与卷,完善端口映射与重启策略 + - 完成后端与依赖服务组合的本地启动与日志验证 + +3. **Kubernetes本地部署与健康检查** + - 在 kind/minikube 部署 `Deployment` 与 `Service` + - 配置并验证 `Readiness/Liveness` 探针与基础资源配额 + - 通过 `kubectl` 检查事件与状态,确保最小可运行演示 + +4. **容器化规范对齐与文档化** + - 与团队对齐镜像命名与标签策略、环境变量与配置约定 + - 梳理日志与监控占位方案,形成规范文档草案 + +5. **部署验证与故障注入** + - 完成端到端部署访问与接口联调的基本验证 + - 进行故障注入(容器重启、资源紧张、Pod不就绪)并记录现象 + +6. **复盘与周报整理** + - 汇总本周操作实践与问题清单 + - 形成下周计划草案与改进方向 + +### 未完成/不足内容 +1. **CI/CD流程未完善** + - 构建与推送脚本草案未完全落地 + - 平台流水线(Actions/YAML)仅搭好框架,缺少完整测试阶段 + +2. **K8s资源与性能调优不足** + - 资源配额与限流策略较为基础,缺少压力测试数据 + - 探针与滚动更新策略有待丰富与参数化 + +3. **监控与告警未接入** + - 未完成对接 Prometheus/Grafana 占位方案 + - 缺少容器与Pod级别的观测指标采集与阈值设定 + +4. **文档细化与示例不足** + - 部署与联调指南缺少更完整的截图与失败案例分析 + - 规范文档需增加更多示例与最佳实践说明 + +## 各领域掌握程度 + +#### Docker镜像与容器 +- **掌握状态**:熟练掌握 +- **具体表现**:能独立编写与优化 `Dockerfile`,完成本地构建与运行 +- **能力描述**:具备镜像分层与缓存优化意识,能控制镜像体积与启动性能 + +#### Compose编排 +- **掌握状态**:基本掌握 +- **具体表现**:能完成后端+依赖服务的本地编排与环境管理 +- **能力描述**:能够设计网络与卷、重启策略与端口映射,但在复杂场景上需加强 + +#### Kubernetes部署 +- **掌握状态**:初步了解/基本掌握 +- **具体表现**:能完成最小可运行的 Deployment/Service 与探针配置 +- **能力描述**:可进行基础运维操作与状态验证,但在滚动升级与资源调优方面经验不足 + +#### 规范与文档化 +- **掌握状态**:基本掌握 +- **具体表现**:能输出容器化规范草案与部署说明 +- **能力描述**:具备文档沉淀意识,需补充更多示例与常见问题分类 + +#### 联调与故障注入 +- **掌握状态**:基本掌握 +- **具体表现**:完成端到端验证与基础故障注入 +- **能力描述**:能记录现象并提出初步对策,需建立系统化测试场景与数据 + +## 问题分析与反思 + +### 主要进展 +1. **从理论到实践的闭环建立** + - 完成容器化从镜像到编排再到K8s的最小闭环 + - 具备基本的部署与联调能力,形成端到端验证流程 + +2. **规范意识与协作效率提升** + - 团队就镜像与环境管理达成一致 + - 文档化习惯加强,便于后续复用与协作 + +3. **测试与故障思维建立** + - 通过故障注入验证系统韧性,积累问题排查经验 + - 为后续自动化测试与监控告警奠定基础 + +### 存在不足 +1. **深度与广度的平衡不足** + - 在K8s调优与CI/CD上投入不够,尚缺系统化实践 +2. **观测与数据支撑欠缺** + - 缺少压力与指标数据支持优化决策 +3. **文档示例与失败案例积累不足** + - 需要扩充具体操作截图、错误场景与解决策略 + +## 下周改进方向 + +### 重点补强领域 +1. **完善CI/CD流水线** + - 完成构建/测试/推送完整流程 + - 对接镜像仓库并配置分支策略与触发条件 + +2. **K8s资源与发布策略优化** + - 丰富探针、滚动更新与限流策略,进行压力测试 + - 形成参数化与环境化配置模板 + +3. **监控与告警接入** + - 接入 Prometheus/Grafana,建立核心指标与阈值 + - 编写基础告警规则与可视化看板 + +4. **联调与文档细化** + - 完善部署与联调指南,补充失败案例与排查流程 + - 形成常见故障库与对策清单 + +### 学习方法调整 +1. **问题驱动与数据化验证** + - 以故障场景与性能瓶颈为牵引,产出数据支撑 +2. **深度优先策略** + - 聚焦CI/CD与K8s调优两个重点方向形成突破 +3. **持续文档与示例沉淀** + - 使用截图与脚本示例增强可复用性 + +## 经验总结 + +### 成功经验 +1. **最小闭环优先** + - 先跑通容器化的核心链路,降低复杂度与风险 +2. **规范化带动效率** + - 通过统一约定减少沟通成本,提升协作效率 +3. **故障注入促进认知** + - 主动制造问题,提升排障能力与系统韧性 + +### 改进方向 +1. **补齐流水线与观测体系** + - 建立可持续的构建与监控能力 +2. **参数化与自动化** + - 通过模板与脚本减少手工操作与环境偏差 +3. **证据化与案例化** + - 强化数据、截图与失败案例记录,便于复盘与分享 + +## 自我评价 +本周完成了容器化从镜像、Compose到K8s的最小可运行闭环,具备基本部署与联调能力。当前在CI/CD与K8s调优方面仍需系统化推进,并补齐监控告警与证据化材料。整体进展符合预期,后续将以“流水线完善+资源调优+观测接入”为重点,形成稳定、可观测、可迭代的交付能力。 + +**最大的收获**:容器化闭环跑通,实践能力显著提升。 + +**最重要的认识**:规范与观测是提高交付质量与效率的关键。 diff --git a/doc/project/运维技术栈学习指南.md b/doc/project/运维技术栈学习指南.md new file mode 100644 index 0000000..4d723c7 --- /dev/null +++ b/doc/project/运维技术栈学习指南.md @@ -0,0 +1,272 @@ +# 基于 Hadoop 的故障检测与自动恢复项目 运维技术栈学习指南(重制版) + +## 学习目标与范围 +- 面向运维角色,围绕“日志采集 → 故障诊断 → 自动修复 → 部署与监控”全流程,构建可落地的技术栈与实践能力。 +- 输出可执行的学习任务、验收标准与交付物清单,直接支撑项目核心任务(任务 1–10)。 + +--- + +## 技术栈分层与学习要点 + +### 1. 操作系统与基础设施(Linux/网络/脚本/SSH) +- 关键知识:Linux 用户与权限、系统服务、文件系统、网络(TCP/IP、端口)、防火墙、SSH 免密、NTP、JDK。 +- 实践任务: + - 完成 5 台以上节点的系统初始化(关闭防火墙、SSH 免密、JDK 安装与环境变量)。 + - 编写常用维护脚本(日志清理、进程检查、磁盘监控)。 +- 验收标准:批量免密登录可用;基础脚本在所有节点成功执行并产生日志。 +- 交付物:初始化记录与脚本集、节点清单与角色表。 + +### 2. Hadoop 集群运维(HDFS/YARN/MapReduce) +- 关键知识:NameNode/DataNode/ResourceManager/NodeManager 职责与拓扑;核心配置与启动/停止;WebUI 使用;常见故障定位。 +- 实践任务: + - 部署并验证 HDFS/YARN;通过 `jps` 与 WebUI 确认进程与状态。 + - 完成 NameNode 格式化与副本数设置;执行简单 MapReduce 示例并观察 YARN 任务状态。 +- 验收标准:HDFS/YARN 正常运行;能稳定提交与完成一个 MR 任务;具备基础故障处理清单(DataNode 下线、端口占用)。 +- 交付物:集群部署文档、核心配置备份、故障处理手册(基础版)。 + +### 3. 分布式存储与数据库(HDFS/MySQL/Redis) +- 关键知识:HDFS 权限与副本策略;MySQL 安装配置、备份与权限;Redis 缓存策略与安全。 +- 实践任务: + - 创建日志归档目录并设置权限与副本; + - 部署 MySQL/Redis,完成备份计划与访问控制;设计故障记录与操作日志表结构。 +- 验收标准:HDFS `fsck` 通过;MySQL 每日增量备份可恢复;Redis 缓存命中率达预期。 +- 交付物:存储架构说明、备份脚本与恢复演练报告、表结构与权限清单。 + +### 4. 日志采集与传输(Flume/Kafka 选修) +- 关键知识:Flume Source/Channel/Sink 链路设计;批量与滚动策略;过滤与预处理;性能调优。 +- 实践任务: + - 在多节点部署 Flume Agent;配置 exec/hdfs Source 与 File/Memory Channel;统一 Sink 指向后端接口或 HDFS。 + - 压测与容错策略(批量大小、重试、失败队列)。 +- 验收标准:多源日志稳定采集;在 2000 条/秒场景无明显积压与丢失;失败数据可追溯。 +- 交付物:Flume 部署手册、标准化配置模板、压测与优化报告。 + +### 5. 后端服务与接口运维(FastAPI 运行/配置/日志) +- 关键知识:FastAPI 运行模式(uvicorn/gunicorn);OpenAPI 文档;配置与环境变量;日志与异常处理;健康检查。 +- 实践任务: + - 部署后端服务(开发与容器模式);实现 `/health` 与核心接口的探活与监控;统一错误响应。 + - 生成与维护 OpenAPI 文档;制定接口版本策略(如 `/v1`)。 +- 验收标准:后端在目标环境稳定运行;开放文档与探活可用;发生异常时可快速定位。 +- 交付物:运行与配置说明、日志策略与异常处理规范、OpenAPI 导出文件。 + +### 6. 自动化修复与脚本(Shell/SSH/风险控制) +- 关键知识:修复脚本库设计与参数化;风险分级(low/medium/high);执行日志捕获与回滚策略;审批与确认流程。 +- 实践任务: + - 编写并验证常用脚本(重启 DataNode、清理临时文件、终止长时任务等)。 + - 建立执行权限与审批机制,记录执行日志并同步状态到后端/前端。 +- 验收标准:低风险脚本自动执行稳定;中高风险脚本具备双重确认与回滚方案。 +- 交付物:脚本库与操作规范、执行日志样例、风险与审批流程说明。 + +### 7. 容器化与编排(Docker/Compose/Kubernetes 本地) +- 关键知识:Dockerfile 最佳实践(分层/缓存/非 root/健康检查);Compose 多服务编排;K8s 清单(Deployment/Service/ConfigMap/Probe/资源配额)。 +- 实践任务: + - 为后端生成 Dockerfile 与 `.dockerignore`;编写 `docker-compose.yml` 启停多服务; + - 使用 kind/minikube 部署 K8s 清单,配置 Readiness/Liveness 与资源限额。 +- 验收标准:镜像构建稳定、体积可控;Compose 一键启停;K8s 探针通过且资源受控。 +- 交付物:容器化规范、Compose 与 K8s 清单、部署与联调指南。 + +### 8. 监控与告警(Prometheus/Grafana/EFK/DingTalk) +- 关键知识:指标采集与可视化;日志聚合与检索;告警规则与通知渠道;SLO/SLA 基础。 +- 实践任务: + - 搭建基础监控面板(采集量、成功率、延迟、故障状态);配置告警阈值与通知(如机器人)。 + - 集成容器日志与应用日志,建立问题排查路径。 +- 验收标准:核心指标可视化齐全;告警规则有效且无明显噪声;日志可检索定位问题。 +- 交付物:监控面板截图、告警与日志方案、运维操作手册。 + +### 9. 测试与验收(Postman/脚本化测试/用例管理) +- 关键知识:接口测试与集合管理;场景化测试(采集—诊断—修复);数据一致性与性能基线。 +- 实践任务: + - 配置环境与集合,覆盖核心路径;记录问题与修复;建立基本性能基线(TestDFSIO 等)。 +- 验收标准:核心路径 100% 覆盖;问题闭环记录完整;性能指标达标(可复现)。 +- 交付物:测试集合与报告、问题清单与对策记录、性能基线说明。 + +### 10. 评估与分析(SQL/Pandas/报表) +- 关键知识:指标口径(准确性/时效性/有效性);数据抽取与统计;报表与迭代计划。 +- 实践任务: + - 从 MySQL 抽取诊断/修复数据,生成周报;分析异常案例并提出优化建议。 +- 验收标准:三类核心指标可计算且趋势可视化;形成可执行迭代计划。 +- 交付物:评估报表样例、分析脚本与指标字典。 + +--- + +## 分阶段学习路线(3 周,1.5 小时/天) +- 第 1 周(基础搭建):Linux/网络脚本 → Hadoop/HDFS/YARN → 基础数据库(MySQL/Redis) +- 第 2 周(数据与服务):Flume 部署与调优 → FastAPI 运行与探活 → 自动化修复脚本与风险控制 +- 第 3 周(交付与保障):Docker/Compose/K8s 本地编排 → 监控与告警 → 测试与评估报表 + +--- + +## 交付物与验收标准(汇总) +- 文档与规范:部署与配置说明、容器化与监控规范、修复脚本操作规范。 +- 配置与脚本:Hadoop/Flume/后端/Compose/K8s 清单与脚本库。 +- 报告与面板:压测与稳定性报告、测试用例与问题清单、监控面板与告警规则、评估周报。 +- 验收: + - 可运行:采集—诊断—修复—监控全链路最小闭环可演示。 + - 可复现:部署与启停一键化;脚本与配置版本化管理齐备。 + - 可观测:探活、指标与日志可用,告警有效。 + +--- + +## 推荐学习资源 +- Hadoop 官方文档:https://hadoop.apache.org/ +- Flume 官方文档:https://flume.apache.org/ +- FastAPI 文档:https://fastapi.tiangolo.com/ +- Docker 文档:https://docs.docker.com/ ; Compose:https://docs.docker.com/compose/ +- Kubernetes 文档:https://kubernetes.io/docs/home/ ; kind:https://kind.sigs.k8s.io/ ; Minikube:https://minikube.sigs.k8s.io/ +- Prometheus:https://prometheus.io/ ; Grafana:https://grafana.com/ +- MySQL:https://dev.mysql.com/doc/ ; Redis:https://redis.io/docs/ +- Postman:https://learning.postman.com/ +- Python Pandas:https://pandas.pydata.org/ + +--- + +## 与项目核心任务的映射 +- 任务 1–2:对应分层 1/2/3(集群与存储) +- 任务 3–5:对应分层 4/5(采集与接口) +- 任务 6–7:对应分层 6(修复与风险) +- 任务 8–10:对应分层 7/8/9/10(部署、监控、测试、评估) + +> 说明:本学习指南以运维落地为导向,组织为“分层要点+实践任务+验收与交付”,可直接用于周计划与周总结的生成与评审。 + +--- + +## 学习内容详解与示例 + +### 1. 操作系统与基础设施详解 +- 知识清单:用户/组与权限、进程与服务、网络端口与防火墙、时间同步、SSH 免密、环境变量与 JDK。 +- 关键命令: + - 用户与权限:`useradd`、`passwd`、`usermod -aG`、`chmod`、`chown`、`sudo visudo` + - 服务管理:`systemctl enable|start|status`、`journalctl -u ` + - 端口与网络:`ss -lntp`、`ip a`、`ping`、`traceroute`、`curl -I` + - 防火墙:`ufw status`、`ufw allow 8020/tcp` 或 `firewall-cmd --add-port=8020/tcp --permanent` + - 时间:`timedatectl`、`chronyc sources` 或 `ntpdate` + - SSH 免密:`ssh-keygen -t ed25519`、`ssh-copy-id user@host`、`~/.ssh/config` + - JDK:`java -version`、在 `/etc/profile.d/java.sh` 配置 `JAVA_HOME`、`PATH` +- 示例脚本: + - 健康检查 `healthcheck.sh`:采集 CPU/内存/磁盘/端口占用,输出到 `/var/log/ops/health-$(hostname).log` + - 日志清理 `cleanup_logs.sh`:按规则清理 `/var/log/*` 与项目日志,保留最近 N 天 +- 验收与交付:多节点免密可用;统一初始化脚本在所有节点执行成功并产生日志与报告。 + +### 2. Hadoop 集群运维详解 +- 核心配置文件:`core-site.xml`、`hdfs-site.xml`、`yarn-site.xml`、`mapred-site.xml` +- 常用属性示例: + - `core-site.xml`:`fs.defaultFS`、`io.file.buffer.size` + - `hdfs-site.xml`:`dfs.replication`、`dfs.namenode.name.dir`、`dfs.datanode.data.dir` + - `yarn-site.xml`:`yarn.nodemanager.resource.memory-mb`、`yarn.scheduler.maximum-allocation-mb` + - `mapred-site.xml`:`mapreduce.framework.name=yarn` +- 操作步骤: + - 格式化 NameNode:`hdfs namenode -format` + - 启停:`start-dfs.sh`、`start-yarn.sh`、`mr-jobhistory-daemon.sh start historyserver` + - 校验:`jps`、WebUI(`50070` `8088`) + - HDFS 操作:`hdfs dfs -mkdir -p /apps/logs`、`hdfs dfs -put ./logs/*.log /apps/logs/` + - MR 示例:`yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples.jar pi 3 1000` +- 故障排查清单:端口占用、DataNode 下线、磁盘挂载错误、权限不足,使用 `jps`/`netstat`/`tail -f` 对应日志定位。 + +### 3. 分布式存储与数据库详解 +- HDFS:权限与副本策略,使用 `hdfs dfs -chmod`、`-chown`、`-setrep`;一致性检查 `hdfs fsck / -files -blocks -locations` +- MySQL: + - 安装与配置:`my.cnf` 基本参数(`bind-address`、`max_connections`、`slow_query_log`) + - 备份与恢复:`mysqldump -u root -p db > backup.sql`;`mysql -u root -p db < backup.sql` + - 账户与权限:`CREATE USER`、`GRANT SELECT,INSERT,UPDATE ON db.* TO 'ops'@'%';` +- Redis: + - 配置:`redis.conf` 中设置 `requirepass`、`maxmemory`、`maxmemory-policy allkeys-lru` + - 监控:`INFO`、`SLOWLOG`、`MONITOR`,键过期与命中率分析 +- 业务表结构示例(故障记录与操作日志): + - `incidents(id, type, node, started_at, ended_at, status, severity, summary)` + - `ops_actions(id, incident_id, operator, action, risk_level, executed_at, result, detail)` + +### 4. 日志采集与传输详解(Flume) +- 典型拓扑:多 Source(exec/taildir)→ Memory/File Channel → Sink(HDFS/HTTP) +- 配置示例(简化): + ```properties + a1.sources = s1 + a1.channels = c1 + a1.sinks = k1 + a1.sources.s1.type = exec + a1.sources.s1.command = tail -F /var/log/app/app.log + a1.channels.c1.type = memory + a1.channels.c1.capacity = 10000 + a1.channels.c1.transactionCapacity = 1000 + a1.sinks.k1.type = hdfs + a1.sinks.k1.hdfs.path = hdfs://nn:8020/apps/logs/%Y/%m/%d/ + a1.sinks.k1.hdfs.fileType = DataStream + a1.sinks.k1.hdfs.rollInterval = 60 + a1.sinks.k1.channel = c1 + ``` +- 启动与调试:`flume-ng agent -n a1 -f conf/log2hdfs.conf -Dflume.root.logger=INFO,console` +- 性能与容错:调整 `batchSize`、`channelCapacity`;失败队列与重试;监控通道积压。 + +### 5. 后端服务与接口运维详解(FastAPI) +- 运行模式:开发 `uvicorn main:app --reload`;生产 `gunicorn -k uvicorn.workers.UvicornWorker -w 2 main:app` +- 健康检查与日志: + - `/health` 返回依赖组件状态(DB、HDFS、Flume)与版本 + - 统一日志格式(JSON),接入标准 `logging` 配置与日志轮转 +- 配置与环境变量:使用 `.env` 或 `pydantic BaseSettings` 管理敏感配置;区分 dev/prod +- 错误处理:统一 `HTTPException`、全局异常中间件,输出可追踪 `trace_id` +- OpenAPI:`/docs` 与 `/openapi.json` 可用;接口版本前缀 `/v1` + +### 6. 自动化修复与脚本详解 +- 设计原则:参数化、幂等、可审计、可回滚;风险分级与审批流程 +- 示例: + - 重启 DataNode:`ssh nodeX 'systemctl restart hadoop-hdfs-datanode'` + - 清理临时:`find /data/tmp -type f -mtime +3 -delete` + - 终止长时任务:`yarn application -kill ` +- 执行日志:所有脚本输出到 `ops-actions.log`,包含时间、节点、操作者、结果、细节 +- 防误触:`--dry-run` 与二次确认(例如要求 `--yes` 两次) + +### 7. 容器化与编排详解 +- Dockerfile 要点:使用 `python:3.11-slim`、非 root 用户、`HEALTHCHECK`、分层与缓存、`PIP_NO_CACHE_DIR` +- `.dockerignore`:忽略虚拟环境、日志、临时与测试数据 +- Compose 示例:后端 + MySQL + Redis + Flume 可一键编排;定义健康检查与依赖顺序 +- K8s 清单关键项:`Deployment`(副本数、资源配额)、`Service`、`ConfigMap`、`Readiness/Liveness` 探针 + +### 8. 监控与告警详解 +- 指标:采集量、成功率、延迟、错误率、队列积压、容器资源;SLO/SLA 定义与阈值 +- Prometheus:抓取后端与导出器(node_exporter、blackbox);告警规则示例在 `rules.yml` +- Grafana:仪表盘分层(资源/应用/业务);模板变量与告警联动 +- 日志聚合:EFK/ELK;建立索引与查询语句(如按 `trace_id` 与 `severity` 检索) +- 通知:集成机器人(如钉钉 webhook),告警抑制与静默策略 + +### 9. 测试与验收详解 +- 接口测试:Postman/Newman 集合与环境变量;覆盖核心链路(采集→诊断→修复) +- 脚本化测试:利用 shell/python 进行冒烟与回归;对关键脚本做幂等校验 +- 性能基线:HDFS `TestDFSIO`、Flume 压测;记录 QPS、延迟、失败率 +- 测试产物:报告、问题清单、变更记录与复现脚本 + +### 10. 评估与分析详解 +- 指标口径:准确性(错误识别率)、时效性(平均修复时长)、有效性(闭环率) +- 数据抽取:从 MySQL 抽取 `incidents` 与 `ops_actions`,用 Pandas 统计与可视化 +- 周报模板:结论(达成/风险)、指标趋势图、问题与对策、下周计划 + +--- + +## 每日任务清单(示例,3 周×1.5 小时/天) +- 第 1 周: + - Day 1:系统初始化与 SSH 免密;编写健康检查脚本 + - Day 2:防火墙与端口策略;JDK 与环境变量 + - Day 3:部署 HDFS;格式化 NN 与基础操作 + - Day 4:部署 YARN;提交 MR 示例并观察任务 + - Day 5:HDFS 权限与副本;`fsck` 与故障演练 + - Day 6:安装 MySQL/Redis;账号与备份策略 + - Day 7:周总结与复盘;完善部署与脚本 +- 第 2 周: + - Day 8:部署 Flume;单源到 HDFS + - Day 9:多源汇聚与参数调优;压测与容错 + - Day 10:部署后端;`/health` 与日志规范 + - Day 11:OpenAPI 与版本管理;统一错误响应 + - Day 12:自动化修复脚本设计与低风险脚本验证 + - Day 13:审批与回滚机制;执行日志打通 + - Day 14:周总结与复盘;联调采集—接口—修复 +- 第 3 周: + - Day 15:Dockerfile 与镜像构建;`.dockerignore` + - Day 16:Compose 多服务编排;一键启停 + - Day 17:K8s 本地部署;Readiness/Liveness 探针 + - Day 18:Prometheus/Grafana 指标与告警规则 + - Day 19:日志聚合与检索;排查路径固化 + - Day 20:Postman 集合与性能基线;问题闭环 + - Day 21:评估报表与周报输出;整体复盘 + +--- + +## 练习与验收样例(可直接使用) +- 练习:将 `app.log` 通过 Flume 写入 HDFS,再由后端接口读取并统计错误数,输出到 MySQL `incidents` 表。 +- 验收:提交 MR 示例与接口集合;展示监控面板与告警;演示一次故障发现→自动修复→记录入库→报表输出的闭环。 -- 2.34.1