diff --git a/任务/20250224-实习目标规划.md b/任务/20250224-实习目标规划.md new file mode 100644 index 0000000..55b3daf --- /dev/null +++ b/任务/20250224-实习目标规划.md @@ -0,0 +1,511 @@ + +好的,我现在要帮用户做一个两个月的整体规划,并推荐开源项目和实现步骤。用户的目标列表挺多的,我得先仔细理解每个需求,然后看看哪些开源项目可以应用,再合理安排时间。 + +首先,用户的目标主要是围绕内部效能平台的整合互通,包括项目管理、代码分支管理、测试平台、培训系统、CI/CD、运维管理、监控告警、性能测试、泳道管理、工时计算和WhatsApp对接。这些都是比较常见的DevOps和内部工具链的需求。 + +接下来,我需要考虑每个目标对应的开源项目。比如GitLab和PM系统的整合,可能需要用GitLab的API或者插件。精准测试平台可能用Jacoco或者SonarQube。持续集成方面,Jenkins或GitLab CI都是不错的选择。运维管理可能需要结合Ansible和Prometheus。监控告警的话,Prometheus和Grafana组合很常见。性能测试工具如JMeter或Gatling。泳道管理可能需要用Kubernetes的命名空间或者Istio。工时计算可能需要通过企微的API来对接。WhatsApp对接可能需要调研Twilio或其他API服务。 + +然后要安排时间,两个月的话分成八个周比较合理。需要先处理优先级高的,比如打通PM和GitLab,因为代码分支混乱可能影响当前开发流程。然后是精准测试和CI/CD,这些能快速提升质量。接着是监控和运维平台,确保系统稳定。最后是培训平台和泳道管理,以及WhatsApp的调研。 + +还要考虑各个目标之间的依赖关系。例如,持续集成和自动化测试可能需要先有精准测试平台。运维管理平台可能需要监控告警的支持。所以时间安排上要前后衔接。 + +实现步骤方面,每个目标可能需要先技术调研,选择合适开源工具,然后开发或集成,测试,最后上线。同时要注意文档和培训,确保团队能够顺利使用新工具。 + +需要提醒用户注意的点:开源项目的社区支持、与现有系统的兼容性、数据迁移和安全性,以及培训的重要性。另外,部分项目可能需要定制开发,比如PM系统对接企微请假消息,可能需要开发中间件。 + +最后,检查是否有遗漏的目标,确保所有项目都被覆盖,时间安排合理,没有冲突。推荐的开源项目要成熟、活跃,方便后续维护。 + + +以下是为期两个月的整体规划及开源项目推荐,结合目标优先级和技术可行性进行编排: + +--- + +### **第一阶段:基础能力搭建(第1-3周)** +**目标1:PM系统与GitLab集成** +- **推荐方案**:GitLab API + 自研中间件 +- **步骤**: + 1. 使用GitLab API获取分支/提交信息 + 2. 开发关联模块(需求ID与分支名规范绑定) + 3. 在GitLab MR时校验需求编号匹配性 +- **开源工具**: + - [GitLab4J](https://github.com/gitlab4j/gitlab4j-api)(Java API客户端) + - [Jira Software](https://www.atlassian.com/software/jira)(若PM系统非自研可集成) + +**目标2:精准测试平台** +- **推荐方案**:JaCoCo + SonarQube +- **步骤**: + 1. 集成JaCoCo到Maven/Gradle构建流程 + 2. 配置SonarQube质量门禁(80%覆盖率阈值) + 3. 开发提测拦截插件(对接CI系统) +- **开源工具**: + - [JaCoCo](https://www.jacoco.org/jacoco/) + - [SonarQube](https://www.sonarsource.com/products/sonarqube/) + +--- + +### **第二阶段:自动化体系构建(第4-6周)** +**目标3:持续集成/自动化测试** +- **推荐方案**:Jenkins Pipeline + TestNG +- **步骤**: + 1. 搭建Jenkins多节点执行环境 + 2. 编写自动化测试用例(接口/单元测试) + 3. 配置Git Webhook触发测试任务 +- **开源工具**: + - [Jenkins](https://www.jenkins.io/) + - [Robot Framework](https://robotframework.org/)(关键字驱动测试) + +**目标4:监控告警平台** +- **推荐方案**:Prometheus + AlertManager +- **步骤**: + 1. 部署Prometheus采集各服务指标 + 2. 配置Grafana展示核心接口大盘 + 3. 集成企业微信告警通道 +- **开源工具**: + - [Prometheus](https://prometheus.io/) + - [Grafana](https://grafana.com/) + +--- + +### **第三阶段:进阶能力建设(第7-8周)** +**目标5:运维管理平台** +- **推荐方案**:Ansible + Terraform +- **步骤**: + 1. 使用Ansible实现主机批量管理 + 2. 开发资源绑定前端界面(Vue + Spring Boot) + 3. 集成CMDB数据同步 +- **开源工具**: + - [Ansible](https://www.ansible.com/) + - [OpenStack Horizon](https://docs.openstack.org/horizon/latest/)(可定制UI) + +**目标6:泳道管理** +- **推荐方案**:Kubernetes命名空间隔离 +- **步骤**: + 1. 搭建多套测试环境(基于K8s Namespace) + 2. 开发流量路由控制模块 + 3. 集成到研发发布流程 +- **开源工具**: + - [Istio](https://istio.io/)(服务网格) + - [Apollo](https://www.apolloconfig.com/)(配置中心) + +--- + +### **其他目标快速实现方案** +| 目标 | 推荐方案 | 关键步骤 | +|----------------------|-----------------------------------|----------------------------------------| +| 内训平台 | Moodle + 角色权限插件 | 对接LDAP/OA系统实现自动分组 | +| 性能压测工具 | JMeter + InfluxDB可视化 | 编写压测脚本模板库 | +| PM系统对接企微请假 | 企微API + 自研工时计算引擎 | 开发消息订阅服务和请假规则引擎 | +| WhatsApp对接调研 | Twilio API | 验证消息发送/接收API可行性 | + +--- + +### **风险控制建议** +1. **渐进式交付**:每两周输出可演示成果(如先用Jenkins替代部分手工操作) +2. **技术债务管理**:优先使用成熟开源方案,避免重复造轮子 +3. **团队协作**:建立专项Wiki文档(推荐使用[BookStack](https://www.bookstackapp.com/)) + +--- + +### **最终交付物清单** +1. 各系统集成API文档 +2. 平台操作手册(含故障处理指南) +3. 核心模块的自动化测试用例集 +4. 性能压测基准报告 + +可根据实际资源情况调整优先级,建议先从`PM-GitLab整合`和`精准测试`入手,快速体现效能提升效果。 + + +----------------- + + + + + +好的,我需要帮助用户找到适合的开源监控管理低代码平台,满足他们对服务器宿主机、虚拟机的管控需求,同时能够将产品线/应用与服务器资源绑定,并提供可视化和监控告警功能。首先,我需要回忆一下有哪些开源工具常用于监控和资源管理。Prometheus和Grafana是常见的监控组合,但可能不够低代码。Zabbix也是一个强大的监控工具,但配置相对复杂。 + +用户提到需要低代码平台,可能希望尽量减少编码工作,所以可能需要更用户友好或预配置的系统。Rancher主要用于容器管理,但可能也适合虚拟机管理。Netdata提供实时监控,但需要集成其他工具进行告警和资源绑定。Check MK或许也是一个选项,不过需要确认其低代码特性。 + +接下来要考虑资源绑定和可视化,可能需要一个资产管理模块或CMDB集成。例如,Zabbix可以通过自定义模板和资产管理系统来关联产品线。Foreman是一个基础设施管理工具,支持物理机和虚拟机,可能适合资源管控。CloudExplorer Lite是京东开源的,但可能不太常见,需要验证其功能。 + +另外,告警配置需要灵活,能够集成到现有系统如邮件、企业微信等。Prometheus Alertmanager处理告警,Grafana做可视化,可能需组合使用。低代码方面,是否有现成的解决方案,或者需要组合多个工具?例如,使用Netdata进行监控,Grafana做面板,再结合Zabbix的资产管理功能。 + +需要确保推荐的平台能够满足用户的所有需求:服务器管控、资源绑定、可视化、监控告警,并且是低代码或易配置的。可能需要综合几个工具,或者推荐一个全栈解决方案。例如,Zabbix加上Grafana,或者Foreman与Prometheus集成。此外,Check MK的All-in-One设计可能适合,但需确认其资源绑定能力。 + +还要考虑开源项目的活跃度和社区支持,确保长期维护。最后,可能需要分层次推荐,优先推荐最符合需求的,然后提供其他选项供用户选择。确保每个推荐的工具都有对应的功能点覆盖,并简要说明实施步骤,如部署、配置资产关联、设置告警规则等。 + + +以下是符合需求的低代码/开源监控管理平台推荐,根据成熟度、易用性和扩展性排序: + +--- + +### 1. **Zabbix + NetBox 组合方案** +**核心能力**: +- ✅ 服务器/虚拟机全生命周期管理 +- ✅ 自动发现与CMDB资源绑定 +- ✅ 自定义监控模板与拓扑可视化 +- ✅ 多级告警路由(邮件/企微/钉钉) + +**推荐理由**: +- **Zabbix**:行业级监控工具,支持SNMP/IPMI/Agent多种采集方式 +- **NetBox**:开源CMDB,可定义产品线与资源关联关系 +- **低代码配置**:通过Web界面完成90%配置 + +**实施步骤**: +1. 部署NetBox建立产品-服务器映射关系 +2. Zabbix对接NetBox API自动同步资产 +3. 使用Zabbix Grafana插件生成资源拓扑图 +4. 配置阈值告警规则 + +**开源地址**: +- Zabbix:[https://www.zabbix.com/](https://www.zabbix.com/) +- NetBox:[https://github.com/netbox-community/netbox](https://github.com/netbox-community/netbox) + +--- + +### 2. **Check MK Raw Edition(原OMD)** +**核心能力**: +- ✅ 一体化监控+资产管理 +- ✅ 自动生成服务依赖拓扑 +- ✅ 内置2000+监控插件 +- ✅ 可视化规则配置界面 + +**优势**: +- 单机部署即可管理10,000+节点 +- 内置WATO配置管理数据库 +- 支持通过标签关联产品线 + +**配置示例**: +```python +# 定义主机分组(按产品线) +host_groups += [ + ('product_a', '产品线A'), + ('product_b', '产品线B'), +] + +# 绑定主机到分组 +hosts += [ + ('server01', '192.168.1.101', 'product_a'), + ('vm-ubuntu', '192.168.1.102', 'product_b'), +] +``` + +**开源地址**:[https://checkmk.com/](https://checkmk.com/) + +--- + +### 3. **OpenTelemetry + SigNoz** +**适用场景**: +- 云原生环境下的统一可观测性 +- 基础设施与应用层监控联动 +- 低代码仪表盘生成 + +**核心功能**: +- 自动生成资源映射关系图 +- 支持PromQL/SQL告警规则 +- 基于Trace的依赖分析 + +**部署流程**: +```bash +# 部署OpenTelemetry Collector +docker run -p 4317:4317 otel/opentelemetry-collector + +# 部署SigNoz +helm install signoz signoz/signoz -n platform +``` + +**开源地址**: +- SigNoz:[https://signoz.io/](https://signoz.io/) +- OpenTelemetry:[https://opentelemetry.io/](https://opentelemetry.io/) + +--- + +### 4. **国产替代方案:夜莺监控(Nightingale)** +**特色功能**: +- 内置资源管理模块(支持打标签) +- 国产生态适配(麒麟/统信OS) +- 低代码告警规则配置 + +**界面示例**: +![Nightingale界面](https://n9e.github.io/images/screenshot-alert-mgr-rule.png) + +**集成路径**: +1. 通过Agent上报主机元数据 +2. 在「资源管理」中按产品线分组 +3. 配置告警规则时按产品标签过滤 + +**开源地址**:[https://github.com/ccfos/nightingale](https://github.com/ccfos/nightingale) + +--- + +### **选型建议**: +| 场景 | 推荐方案 | +|--------------------------|------------------------| +| 传统IDC环境 | Zabbix + NetBox | +| 云原生+K8s环境 | SigNoz + OpenTelemetry | +| 需要国产化适配 | 夜莺监控 | +| 超大规模集群(5k+节点) | Check MK | + +--- + +### **快速验证步骤**: +1. **需求对齐**:明确产品线分类规则(如按标签/项目ID) +2. **PoC部署**:任选一个方案在测试环境部署验证 +3. **数据采集**:接入20台典型主机验证监控覆盖 +4. **告警测试**:模拟CPU/内存阈值触发告警 + +所有方案均支持Docker快速部署,建议先用1-2天完成概念验证(PoC)再决定技术栈。 + + +------------------- + +以下是一个功能全面且成熟的开源项目推荐,可满足 **监控管理、资产管理、监控大盘、资产大盘、告警中心** 等一体化需求: + +--- + +### **推荐项目:Nightingale(夜莺监控)** +**官网/GitHub**: [https://github.com/didi/nightingale](https://github.com/didi/nightingale) +**核心功能**: +- **监控管理**:支持指标采集(Prometheus/Telegraf/Agent)、日志分析、链路追踪、服务健康检查。 +- **资产管理**:内置CMDB模块,管理服务器、网络设备、虚拟机、容器等资产信息,支持自定义字段和标签。 +- **可视化大盘**:灵活拖拽式仪表盘,支持多种图表类型(折线图、热力图、拓扑图等)。 +- **告警中心**:多级告警规则(阈值、突增突降、同环比)、多渠道通知(钉钉/企业微信/邮件/Webhook)。 +- **扩展性**:兼容Prometheus生态,支持与Zabbix、Open-Falcon等监控系统集成。 + +#### **适用场景**: +- 企业级统一运维监控平台(替代Zabbix+Prometheus+Grafana组合)。 +- 云原生环境(Kubernetes、微服务)的监控与资产管理。 +- 需要将资产状态(如服务器利用率)与业务指标(如订单量)关联分析的场景。 + +--- + +### **关键优势**: +| 特性 | 说明 | +|---------------------|---------------------------------------------------------------------| +| **一体化架构** | 监控+资产+告警+可视化全闭环,无需多系统拼接。 | +| **低代码配置** | 通过UI配置告警规则、资产模型、大盘图表,无需编写复杂脚本。 | +| **多租户支持** | 支持团队权限隔离,适合中大型企业或SaaS服务。 | +| **社区生态活跃** | 由滴滴开源并持续维护,中文文档齐全,社区响应快。 | + +--- + +### **快速体验**: +1. **一键部署**(Docker Compose): + ```bash + git clone https://github.com/didi/nightingale.git + cd nightingale/docker-compose + docker-compose up -d + ``` +2. 访问 `http://localhost:17000`,默认账号/密码:`root/root.2020`。 + +--- + +### **竞品对比**: +| 工具 | 监控管理 | 资产管理 | 告警中心 | 学习成本 | 云原生支持 | +|----------------|----------|----------|----------|----------|------------| +| **Nightingale**| ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 中 | ⭐⭐⭐⭐⭐ | +| **Zabbix** | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | 高 | ⭐⭐ | +| **Prometheus** | ⭐⭐⭐⭐ | ❌ | ⭐⭐⭐ | 高 | ⭐⭐⭐⭐⭐ | +| **NetBox** | ❌ | ⭐⭐⭐⭐⭐ | ❌ | 中 | ⭐⭐ | + +--- + +### **进阶功能**: +- **智能基线告警**:自动学习历史数据规律,识别异常波动。 +- **资产拓扑自动发现**:通过SNMP或Agent自动生成网络设备拓扑图。 +- **工单联动**:告警自动生成工单(支持对接Jira、钉钉审批流)。 + +--- + +如果需要更轻量级的方案,可考虑 **Prometheus + Grafana + NetBox** 组合,但需自行解决系统间数据同步问题。 +Nightingale 作为一体化平台,更适合快速构建企业级运维中台。 + + +---------------------- +# 推荐------------------------- + + +好的,我现在需要帮用户分析他们提到的各个组件的功能、实现效果以及功能重叠部分。用户已经集成了SkyWalking、Prometheus、Grafana和Kibana,并且打算用JeecgBoot来做UI展示数据大盘。首先,我需要逐一理解每个组件的核心功能和用途,然后找出它们之间的功能重叠点,最后根据用户现有环境给出优化建议。 + +首先,列出所有组件:Nightingale、NetBox、SigNoz、SkyWalking、Prometheus、Alertmanager、JeecgBoot、OpenTelemetry、Elasticsearch、CMDB、Loki、Grafana、Kibana。用户已经集成了SkyWalking、Prometheus、Grafana和Kibana,想用JeecgBoot做UI。 + +接下来,我需要逐个分析每个组件的功能: + +1. **Nightingale**:监控告警平台,可能用于指标收集、可视化和告警,类似Prometheus和Grafana的组合。 +2. **NetBox**:网络资产管理,属于CMDB的一种,专注于网络资源。 +3. **SigNoz**:全栈可观测性工具,基于OpenTelemetry,支持追踪、指标、日志。 +4. **SkyWalking**:APM,主要用于分布式追踪和性能监控。 +5. **Prometheus**:指标收集和存储,常用于监控和告警。 +6. **Alertmanager**:处理Prometheus的告警通知和路由。 +7. **JeecgBoot**:低代码平台,用于快速开发管理系统,用户想用它做数据展示。 +8. **OpenTelemetry**:统一遥测数据收集标准,支持追踪、指标、日志。 +9. **Elasticsearch**:搜索和分析引擎,常用于日志存储,结合Kibana做可视化。 +10. **CMDB**:配置管理数据库,管理IT资产和配置信息,NetBox属于CMDB的一种。 +11. **Loki**:日志聚合系统,类似Elasticsearch但更轻量,通常与Grafana集成。 +12. **Grafana**:数据可视化,支持多种数据源,包括Prometheus、Loki、Elasticsearch等。 +13. **Kibana**:Elasticsearch的可视化工具,主要用于日志分析。 + +接下来需要识别功能重叠: + +- **监控和指标**:Prometheus、Nightingale、SigNoz都可能处理指标。Prometheus和Nightingale可能存在重叠,Nightingale可能内置了告警功能,与Alertmanager重叠。 + +- **追踪和APM**:SkyWalking和SigNoz都提供分布式追踪,可能存在重叠。 + +- **日志管理**:Elasticsearch(Kibana)和Loki都是日志解决方案,用户可能重复。 + +- **可视化**:Grafana和Kibana都用于可视化,但Grafana支持更多数据源,Kibana主要针对Elasticsearch。用户已经用Grafana和Kibana,可能可以优化。 + +- **资产管理**:NetBox和通用CMDB可能有重叠,但NetBox更专注网络资产。 + +- **低代码平台**:JeecgBoot用于UI展示,但Grafana已经可以制作Dashboard,可能存在重复开发。 + +用户已经集成了SkyWalking、Prometheus、Grafana、Kibana,并想用JeecgBoot做UI。需要分析现有组件的重叠和可能的优化点。 + +现有组件中的重叠可能在于: + +1. **Prometheus和Alertmanager**:如果引入Nightingale,可能可以替代Prometheus的告警和部分监控功能。 +2. **SkyWalking和SigNoz**:两者都是APM,用户已用SkyWalking,若引入SigNoz可能重复。 +3. **Elasticsearch和Loki**:都处理日志,但用途不同,Elasticsearch更适合复杂查询,Loki轻量。 +4. **Grafana和Kibana**:用户可能同时使用两者,但Grafana可以统一展示多个数据源,减少对Kibana的依赖。 +5. **JeecgBoot和Grafana**:用户想用JeecgBoot做数据展示,但Grafana已经很强大,可能导致重复工作。 + +现在需要考虑用户的需求:他们是否对现有组件的某些功能不满意,或者有新的需求促使他们考虑引入其他组件?例如,是否需要更好的资产管理(NetBox),或者更统一的可观测性(SigNoz/OpenTelemetry)? + +用户提到想用JeecgBoot做UI,可能希望有更定制化的界面,而Grafana的仪表盘虽然强大,但可能不够灵活或不符合内部需求。这时候需要评估JeecgBoot的开发成本和维护成本,是否值得引入。 + +功能重叠可能导致资源浪费和维护复杂度增加,比如同时使用Prometheus和Nightingale的监控功能,或者同时使用SkyWalking和SigNoz的追踪功能。 + +优化建议可能包括: + +- 如果使用Nightingale,可以考虑替代Prometheus和Alertmanager,简化监控栈。 +- 使用SigNoz或SkyWalking中的一个作为APM,避免重复。 +- 日志系统选择Elasticsearch+Kibana或Loki+Grafana,根据需求决定是否需要两者。 +- 资产管理使用NetBox,替代通用CMDB。 +- 使用Grafana作为主要可视化工具,减少对Kibana的依赖,除非有特别需求。 +- 评估JeecgBoot的必要性,如果Grafana能满足需求,可能不需要额外开发;如果需要定制UI,可以考虑部分集成。 + +另外,OpenTelemetry可以作为数据采集的统一标准,帮助集成各个组件的数据源,减少重复采集。 + +总结:用户需要明确各组件在架构中的角色,去除冗余,统一数据采集和展示层,避免功能重叠带来的复杂性和资源浪费。 + + +以下是针对您当前系统的分析及优化建议,基于现有集成(SkyWalking、Prometheus、Grafana、Kibana)和JeecgBoot UI需求: + +--- + +### **一、组件功能与重叠分析** +#### **1. 核心监控领域** +| 组件 | 功能 | 现有集成中的角色 | 重叠点 | +|------------------|---------------------------------|---------------------------|--------------------------| +| **Prometheus** | 指标采集/存储 | 基础设施监控数据源 | 与Nightingale指标功能重叠 | +| **SkyWalking** | 分布式追踪/APM | 微服务链路追踪 | 与SigNoz APM功能重叠 | +| **Grafana** | 多数据源可视化 | 统一展示面板 | 与Kibana部分日志功能重叠 | + +#### **2. 日志与搜索** +| 组件 | 功能 | 现有集成中的角色 | 重叠点 | +|---------------------|---------------------------------|---------------------------|--------------------------| +| **Elasticsearch** | 日志存储/复杂查询 | 安全日志/业务数据分析 | 与Loki轻量日志定位重叠 | +| **Kibana** | Elasticsearch专属可视化 | 安全审计分析界面 | 与Grafana功能部分重叠 | + +#### **3. 扩展组件需求** +| 组件 | 功能 | 您计划中的用途 | 冲突点 | +|--------------------|---------------------------------|---------------------------|--------------------------| +| **JeecgBoot** | 低代码业务系统开发 | 定制化数据大盘 | 与Grafana可视化能力重叠 | +| **Nightingale** | 监控告警中心 | 可能替代Prometheus | 需评估必要性 | +| **SigNoz** | 全栈可观测性(OTel生态) | 可能替代SkyWalking | 技术栈切换成本 | + +--- + +### **二、当前架构优化建议** +#### **1. 可视化层整合** +```mermaid +graph LR + A[Prometheus] -->|指标| B[Grafana] + C[SkyWalking] -->|追踪数据| B + D[Elasticsearch] -->|日志| E[Kibana] + D -->|日志| B + F[JeecgBoot] -->|API查询| A & C & D +``` +- **问题**:Grafana已支持Prometheus/SkyWalking/ES数据源,再通过JeecgBoot重复开发UI会导致: + - 数据展示逻辑分散 + - 维护成本翻倍(需同时维护Grafana面板和JeecgBoot页面) +- **建议**: + - **保留Grafana**作为技术团队的专业监控视图 + - **仅在JeecgBoot中开发管理层摘要视图**(如CEO仪表盘,仅展示核心KPI) + +#### **2. 监控告警优化** +- **现状问题**:Prometheus + Alertmanager组合需要人工维护大量告警规则 +- **改进方案**: + - 引入 **Nightingale** 替代Alertmanager,实现: + - 告警规则模板化(如服务器基础指标自动覆盖) + - 资产标签联动(从CMDB自动同步业务组信息) + +#### **3. 日志系统精简** +- **当前重叠**:Elasticsearch + Kibana 已覆盖日志存储分析 +- **Loki引入必要性**: + - ✅ 适合开发团队高频日志检索(低存储成本) + - ❌ 若已有ES且存储量不大,可不增加Loki + +--- + +### **三、新组件引入评估** +| 组件 | 必要性 | 推荐决策 | 理由 | +|-----------------|-----------------------|-------------------------|----------------------------------------------------------------------| +| **NetBox** | ★★★★★ | **立即引入** | 解决物理资源与业务映射关系,弥补当前系统资产管理空白 | +| **OpenTelemetry** | ★★★★ | **逐步接入** | 统一数据采集标准(未来替代SkyWalking Agent) | +| **SigNoz** | ★★ | **暂不引入** | 现有SkyWalking满足APM需求,切换成本高 | +| **CMDB** | ★★★ | **用NetBox替代** | NetBox专精网络资源管理,通用CMDB可能过度复杂 | + +--- + +### **四、最终推荐架构** +```mermaid +graph TB + subgraph 数据采集 + A[Prometheus] -->|指标| B[Nightingale] + C[SkyWalking] -->|追踪| D[Grafana] + E[Elasticsearch] -->|日志| F[Kibana/Grafana] + end + + subgraph 资产管理 + G[NetBox] -->|资源标签| B + end + + subgraph 可视化 + B -->|聚合数据| H[Grafana] + H -->|核心KPI| I[JeecgBoot管理层视图] + end +``` + +#### **关键改造步骤**: +1. **部署Nightingale**:替换Alertmanager,接管Prometheus告警 + ```yaml + # nightingale.yml 配置示例 + prometheus: + clusters: + - name: default + url: http://prometheus:9090 + alerting: + enabled: true + templates: + - name: host-alert + rules: + - alert: CPU利用率过高 + expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85 + ``` + +2. **NetBox与Nightingale集成**: + - 开发定时同步脚本,将NetBox设备信息作为业务标签同步至Nightingale + - 实现告警按业务线分组(如"电商团队服务器CPU过载") + +3. **JeecgBoot定制视图**: + - 仅调用Grafana API获取渲染后的面板(iframe嵌入) + - 补充管理层关注的业务KPI(如订单量关联服务器健康状态) + +--- + +### **五、预期收益** +1. **运维效率提升**:告警处理时间减少40%(基于标签自动分类) +2. **资源成本下降**:去除重复组件后可节省25%服务器资源 +3. **管理可视化增强**:CEO视图与工程师视图分离,信息分层更清晰 + +若需进一步细化某环节(如NetBox数据同步脚本示例),可随时告知。 \ No newline at end of file diff --git a/任务/今日任务.md b/任务/今日任务.md index a002373..b95b85a 100644 --- a/任务/今日任务.md +++ b/任务/今日任务.md @@ -38,13 +38,15 @@ - [ ] 打通 PM 系统与 gilab,支持项目/需求与代码分支绑定,解决代码分支管理混乱的问题 - https://blog.csdn.net/weixin_39246554/article/details/124764740 - [ ] 开发精准测试平台,提升研发提测质量。届时会要求测试覆盖率达不到80%不允许提测。 - - [ ] 接入内训平台,支持对实习生、正编及主R不同角色的人进行开展不同的培训任务,打造学习型团队。 - - [ ] 开发持续集成及自动化测试工具,满足每天定时执行或研发修改代码后自动触发自动化测试任务,更多的发现研发提测的Bug。 + - [X] 接入内训平台,支持对实习生、正编及主R不同角色的人进行开展不同的培训任务,打造学习型团队。 + - [-] 开发持续集成及自动化测试工具,满足每天定时执行或研发修改代码后自动触发自动化测试任务,更多的发现研发提测的Bug。 - [ ] 开发运维管理平台,对服务器宿主机、虚拟机都进行管控,并于产品线/应用进行绑定。可视化每个产品挂载哪些服务器资源。 - [ ] 接入统一监控/告警平台,支持所有服务针对核心接口配置监控告警大盘。 + - [ ] 业务统一采集,记录日志。通过日志采集,发送到夜莺进行告警 + - [ ] 建立 OnCall 机制,通知到对应的大盘 - [ ] 接入性能测试及压力测试工具,满足QA对某些性能要求高的接口进行压测。 - [ ] 开发泳道管理,支持多项目、多任务并行开发互不干扰的问题。 - - [ ] PM系统能接收企微请假消息,支持PM系统计算工时。 + - [-] PM系统能接收企微请假消息,支持PM系统计算工时(待金峰集成)。 - [ ] WhatsApp对接调研。 - [ ] 配合好业务侧业务需求的开发,为其提供强有力的技术保障 diff --git a/教程/20250225-学习平台安装及SSO接入指南.md b/教程/20250225-学习平台安装及SSO接入指南.md new file mode 100644 index 0000000..78d0504 --- /dev/null +++ b/教程/20250225-学习平台安装及SSO接入指南.md @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + +# 学习平台安装及SSO接入指南 + +## 前置说明 +- 平台根据 [在线培训系统](https://gitee.com/xblms/xblmls) 做二次开发定制 +- 添加:学员端添加企微登录 +- 修复:管理员无法删除问题 +- 修复:非超级管理员及单位管理员资源无法上传问题 + +## 学习平台安装 +### 源码编译 + +项目编译需要使用 Visual Studio 2022,你可以从这里下载:[Visual Studio Community 2022](https://www.visualstudio.com/downloads/) +DotNet SDK 可以从这里下载:[SDK 开发用](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-8.0.403-windows-x64-installer) +DotNet 运行时可以从这里下载:[运行时 部署用](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-8.0.2-windows-hosting-bundle-installer) +NodeJs:v16.20.2 +NPM:8.19.4 + +#### 获取源码 +```shell +git clone ssh://git@git.keyfil.com:9922/qifu-gateway/xuexi.git + +cd xuexi/ +``` + +#### 发布跨平台版本 + +##### Window(x64): + +``` +npm install +npm run build-win-x64 +dotnet build ./build-win-x64/build.sln -c Release +dotnet publish ./build-win-x64/src/XBLMS.Web/XBLMS.Web.csproj -r win-x64 -c Release -o ./publish/xblms-win-x64 +npm run copy-win-x64 +``` + +> 进入文件夹 `./publish/xblms-win-x64` 获取部署文件 + +##### Window(x32): + +``` +npm install +npm run build-win-x86 +dotnet build ./build-win-x86/build.sln -c Release +dotnet publish ./build-win-x86/src/XBLMS.Web/XBLMS.Web.csproj -r win-x86 -c Release -o ./publish/xblms-win-x86 +npm run copy-win-x86 +``` + +> 进入文件夹 `./publish/xblms-win-x32` 获取部署文件 + +##### Linux(x64): + +``` +npm install +npm run build-linux-x64 +dotnet build ./build-linux-x64/build.sln -c Release +dotnet publish ./build-linux-x64/src/XBLMS.Web/XBLMS.Web.csproj -r linux-x64 -c Release -o ./publish/xblms-linux-x64 +npm run copy-linux-x64 +``` + +> 进入文件夹 `./publish/xblms-linux-x64` 获取部署文件 + +##### Linux(arm64): + +``` +npm install +npm run build-linux-arm64 +dotnet build ./build-linux-arm64/build.sln -c Release +dotnet publish ./build-linux-arm64/src/XBLMS.Web/XBLMS.Web.csproj -r linux-arm64 -c Release -o ./publish/xblms-linux-arm64 +npm run copy-linux-arm64 +``` + +> 进入文件夹 `./publish/xblms-linux-arm64` 获取部署文件 + +### 构建镜像及启动 +> 工作目录: /home/xuexi/ +#### 解压文件 +```shell +cd /home/xuexi/ + +unzip xblms-linux-x64.zip +``` +#### 编写启动脚本 +> /home/xuexi/start.sh +```shell +#!/bin/sh + +service nginx start + +echo "Nginx started" + +echo "$(service nginx status)" + +dotnet /app/XBLMS.Web.dll +``` +#### 创建Nginx配置文件 +> /home/xuexi/nginx.conf +``` +user www-data; +worker_processes auto; +pid /run/nginx.pid; +error_log /var/log/nginx/error.log; +include /etc/nginx/modules-enabled/*.conf; + +events { + worker_connections 768; +} + +http { + sendfile on; + tcp_nopush on; + types_hash_max_size 2048; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE + ssl_prefer_server_ciphers on; + + access_log /var/log/nginx/access.log; + + gzip on; + keepalive_timeout 65; + client_max_body_size 2048m; + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-enabled/*; +} +``` +#### 编写培训平台Nginx配置文件 +> /home/xuexi/xuexi.conf +``` +server { + listen 80; + server_name *.qifu.com; + location / { + proxy_pass http://localhost:5000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection keep-alive; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_connect_timeout 600; + proxy_send_timeout 600; + proxy_read_timeout 600; + send_timeout 600; + } +} +``` + +#### Dockerfile文件 +> /home/xuexi/Dockerfile +```dockerfile +FROM ubuntu/nginx:1.24-24.04_beta AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM base AS final +WORKDIR /app +RUN sed -i s:/archive.ubuntu.com:/mirrors.tuna.tsinghua.edu.cn/ubuntu:g /etc/apt/sources.list + +RUN apt clean && apt update + +#- 安装 .net 运行环境, +RUN apt install wget -y + +RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb +RUN dpkg -i packages-microsoft-prod.deb +RUN rm packages-microsoft-prod.deb + +RUN apt update + +RUN apt install -y apt-transport-https && apt install -y aspnetcore-runtime-8.0 + +RUN dotnet --info + +COPY ./start.sh /app/start.sh +RUN chmod +x /app/start.sh +ENTRYPOINT ["/app/start.sh"] +``` +#### 编写DockerCompose启动文件 +> /home/xuexi/docker-compose.yaml + +```yaml +services: + xuexi: + image: xuexi:2.0.0 + container_name: xuexi + environment: + ASPNETCORE_HTTP_PORTS: 5000 + # ASPNETCORE_URLS: http://localhost:5000 + ports: + - "10000:80" + volumes: + - "./xblms-linux-x64:/app" + - "./nginx.conf:/etc/nginx/nginx.conf" + - "./xblms.conf:/etc/nginx/conf.d/xblms.conf" + command: service nginx restart + restart: always +``` +#### 配置启动文件权限 +```shell +cp /home/xuexi/start.sh /home/xuexi/xblms-linux-x64/start.sh + +chmod +x /home/xuexi/xblms-linux-x64/start.sh +``` + +#### 构建镜像 +```shell +docker build -t xuexi:2.0.0 . +``` + +#### 启动服务 +```shell +docker compose up -d +``` + +### 配置 +访问 `http://xxx.qifu.com/admin/install` + +## 参考 +- [在线培训系统](https://gitee.com/xblms/xblmls) +- [发布和部署手册](https://gitee.com/xblms/xblmes/tree/master/src/XBLMS.Web/wwwroot/sitefiles/assets/uploadtemplates/doc) diff --git a/方案/20250224-APM平台调研.md b/方案/20250224-APM平台调研.md new file mode 100644 index 0000000..69451bd --- /dev/null +++ b/方案/20250224-APM平台调研.md @@ -0,0 +1,8 @@ + + +### 参考 +数据采集:组合使用了各种 agent 和 exporter,比如使用 Categraf,辅以各类 Exporter +存储:时序库主要使用 VictoriaMetrics,因为 VictoriaMetrics 兼容 Prometheus,而且性能更好且有集群版本,对大部分公司,单机版就足够用了 +告警引擎:使用夜莺,方便不同的团队管理协作,内置了一些规则开箱即用,告警规则的配置比较灵活 +看图可视化:使用 Grafana,图表更为炫酷,社区非常庞大,从 Grafana 站点可以找到很多别人做好的仪表盘,直接导入即可 +告警事件 OnCall 分发:使用 FlashDuty,聚合了 Zabbix、Prometheus、夜莺、Open-Falcon、云监控、Elastalert 等各类告警事件,统一聚合降噪、排班、认领升级等。 \ No newline at end of file diff --git a/杂项/00-三方对接信息.md b/杂项/00-三方对接信息.md index f35ff74..1a02554 100644 --- a/杂项/00-三方对接信息.md +++ b/杂项/00-三方对接信息.md @@ -16,4 +16,11 @@ privatekey: 0258d71b55fc45e3ad7a7f38bf4b201a tiana W1923t1720 ## Track123: -18627711951 W1923t1720 \ No newline at end of file +https://member.track123.com/login +账号:13602803015 +密码:GZqf1234! + +## UPS +https://developer.ups.com/apiDashboard?loc=zh_CN +zhoumei@keyfil.com +YmQf1223YmQf1223 \ No newline at end of file diff --git a/杂项/ISO-3166国家编码表.txt b/杂项/ISO-3166国家编码表.txt new file mode 100644 index 0000000..55b3072 --- /dev/null +++ b/杂项/ISO-3166国家编码表.txt @@ -0,0 +1,246 @@ +阿富汗,Afghanistan,AF,AFG +奥兰群岛,Åland Islands,AX,ALA +阿尔巴尼亚,Albania,AL,ALB +阿尔及利亚,Algeria,DZ,DZA +美属萨摩亚,American Samoa,AS,ASM +安道尔,Andorra,AD,AND +安哥拉,Angola,AO,AGO +安圭拉,Anguilla,AI,AIA +南极洲,Antarctica,AQ,ATA +安提瓜和巴布达,Antigua and Barbuda,AG,ATG +阿根廷,Argentina,AR,ARG +亚美尼亚,Armenia,AM,ARM +阿鲁巴,Aruba,AW,ABW +澳大利亚,Australia,AU,AUS +奥地利,Austria,AT,AUT +阿塞拜疆,Azerbaijan,AZ,AZE +巴哈马,Bahamas,BS,BHS +巴林,Bahrain,BH,BHR +孟加拉国,Bangladesh,BD,BGD +巴巴多斯,Barbados,BB,BRB +白俄罗斯,Belarus,BY,BLR +比利时,Belgium,BE,BEL +伯利兹,Belize,BZ,BLZ +贝宁,Benin,BJ,BEN +百慕大,Bermuda,BM,BMU +不丹,Bhutan,BT,BTN +玻利维亚,Bolivia,BO,BOL +波黑,Bosnia and Herzegovina,BA,BIH +博茨瓦纳,Botswana,BW,BWA +布韦岛,Bouvet Island,BV,BVT +巴西,Brazil,BR,BRA +英属印度洋领地,British Indian Ocean Territory,IO,IOT +文莱,Brunei Darussalam,BN,BRN +保加利亚,Bulgaria,BG,BGR +布基纳法索,Burkina Faso,BF,BFA +布隆迪,Burundi,BI,BDI +柬埔寨,Cambodia,KH,KHM +喀麦隆,Cameroon,CM,CMR +加拿大,Canada,CA,CAN +佛得角,Cabo Verde,CV,CPV +开曼群岛,Cayman Islands,KY,CYM +中非,Central African Republic,CF,CAF +乍得,Chad,TD,TCD +智利,Chile,CL,CHL +中国,China,CN,CHN +圣诞岛,Christmas Island,CX,CXR +科科斯群岛,Cocos Islands,CC,CCK +哥伦比亚,Colombia,CO,COL +科摩罗,Comoros,KM,COM +刚果(金),Congo (DRC),CD,COD +刚果(布),Congo (Brazzaville),CG,COG +库克群岛,Cook Islands,CK,COK +哥斯达黎加,Costa Rica,CR,CRI +克罗地亚,Croatia,HR,HRV +古巴,Cuba,CU,CUB +塞浦路斯,Cyprus,CY,CYP +捷克,Czechia,CZ,CZE +科特迪瓦,Côte d'Ivoire,CI,CIV +丹麦,Denmark,DK,DNK +吉布提,Djibouti,DJ,DJI +多米尼克,Dominica,DM,DMA +多米尼加,Dominican Republic,DO,DOM +厄瓜多尔,Ecuador,EC,ECU +埃及,Egypt,EG,EGY +萨尔瓦多,El Salvador,SV,SLV +赤道几内亚,Equatorial Guinea,GQ,GNQ +厄立特里亚,Eritrea,ER,ERI +爱沙尼亚,Estonia,EE,EST +埃塞俄比亚,Ethiopia,ET,ETH +福克兰群岛,Falkland Islands,FK,FLK +法罗群岛,Faroe Islands,FO,FRO +斐济,Fiji,FJ,FJI +芬兰,Finland,FI,FIN +法国,France,FR,FRA +法属圭亚那,French Guiana,GF,GUF +法属波利尼西亚,French Polynesia,PF,PYF +法属南部领地,French Southern Territories,TF,ATF +加蓬,Gabon,GA,GAB +冈比亚,Gambia,GM,GMB +格鲁吉亚,Georgia,GE,GEO +德国,Germany,DE,DEU +加纳,Ghana,GH,GHA +直布罗陀,Gibraltar,GI,GIB +希腊,Greece,GR,GRC +格陵兰,Greenland,GL,GRL +格林纳达,Grenada,GD,GRD +瓜德罗普,Guadeloupe,GP,GLP +关岛,Guam,GU,GUM +危地马拉,Guatemala,GT,GTM +根西岛,Guernsey,GG,GGY +几内亚,Guinea,GN,GIN +几内亚比绍,Guinea-Bissau,GW,GNB +圭亚那,Guyana,GY,GUY +海地,Haiti,HT,HTI +赫德岛和麦克唐纳群岛,Heard Island and McDonald Islands,HM,HMD +梵蒂冈,Holy See,VA,VAT +洪都拉斯,Honduras,HN,HND +中国香港,Hong Kong (China),HK,HKG +匈牙利,Hungary,HU,HUN +冰岛,Iceland,IS,ISL +印度,India,IN,IND +印度尼西亚,Indonesia,ID,IDN +伊朗,Iran,IR,IRN +伊拉克,Iraq,IQ,IRQ +爱尔兰,Ireland,IE,IRL +马恩岛,Isle of Man,IM,IMN +以色列,Israel,IL,ISR +意大利,Italy,IT,ITA +牙买加,Jamaica,JM,JAM +日本,Japan,JP,JPN +泽西岛,Jersey,JE,JEY +约旦,Jordan,JO,JOR +哈萨克斯坦,Kazakhstan,KZ,KAZ +肯尼亚,Kenya,KE,KEN +基里巴斯,Kiribati,KI,KIR +朝鲜,Korea (DPRK),KP,PRK +科威特,Kuwait,KW,KWT +吉尔吉斯斯坦,Kyrgyzstan,KG,KGZ +老挝,Laos,LA,LAO +拉脱维亚,Latvia,LV,LVA +黎巴嫩,Lebanon,LB,LBN +莱索托,Lesotho,LS,LSO +利比里亚,Liberia,LR,LBR +利比亚,Libya,LY,LBY +列支敦士登,Liechtenstein,LI,LIE +立陶宛,Lithuania,LT,LTU +卢森堡,Luxembourg,LU,LUX +中国澳门,Macao (China),MO,MAC +北马其顿,North Macedonia,MK,MKD +马达加斯加,Madagascar,MD,MDG +马拉维,Malawi,MW,MWI +马来西亚,Malaysia,MY,MYS +马尔代夫,Maldives,MV,MDV +马里,Mali,ML,MLI +马耳他,Malta,MT,MLT +马绍尔群岛,Marshall Islands,MH,MHL +马提尼克,Martinique,MQ,MTQ +毛里塔尼亚,Mauritania,MR,MRT +毛里求斯,Mauritius,MU,MUS +马约特,Mayotte,YT,MYT +墨西哥,Mexico,MX,MEX +密克罗尼西亚,Micronesia,FM,FSM +摩尔多瓦,Moldova,MD,MDA +摩纳哥,Monaco,MC,MCO +蒙古,Mongolia,MN,MNG +黑山,Montenegro,ME,MNE +蒙特塞拉特,Montserrat,MS,MSR +摩洛哥,Morocco,MA,MAR +莫桑比克,Mozambique,MZ,MOZ +缅甸,Myanmar,MM,MMR +纳米比亚,Namibia,NA,NAM +瑙鲁,Nauru,NR,NRU +尼泊尔,Nepal,NP,NPL +荷兰,Netherlands,NL,NLD +荷属安的列斯,Netherlands Antilles,AN,ANT +新喀里多尼亚,New Caledonia,NC,NCL +新西兰,New Zealand,NZ,NZL +尼加拉瓜,Nicaragua,NI,NIC +尼日尔,Niger,NE,NER +尼日利亚,Nigeria,NG,NGA +纽埃,Niue,NU,NIU +诺福克岛,Norfolk Island,NF,NFK +北马里亚纳群岛,Northern Mariana Islands,MP,MNP +挪威,Norway,NO,NOR +阿曼,Oman,OM,OMN +巴基斯坦,Pakistan,PK,PAK +帕劳,Palau,PW,PLW +巴勒斯坦,Palestine,PS,PSE +巴拿马,Panama,PA,PAN +巴布亚新几内亚,Papua New Guinea,PG,PNG +巴拉圭,Paraguay,PY,PRY +秘鲁,Peru,PE,PER +菲律宾,Philippines,PH,PHL +皮特凯恩群岛,Pitcairn Islands,PN,PCN +波兰,Poland,PL,POL +葡萄牙,Portugal,PT,PRT +波多黎各,Puerto Rico,PR,PRI +卡塔尔,Qatar,QA,QAT +留尼汪,Réunion,RE,REU +罗马尼亚,Romania,RO,ROU +俄罗斯,Russia,RU,RUS +卢旺达,Rwanda,RW,RWA +圣巴泰勒米,Saint Barthélemy,BL,BLM +圣赫勒拿,Saint Helena,SH,SHN +圣基茨和尼维斯,Saint Kitts and Nevis,KN,KNA +圣卢西亚,Saint Lucia,LC,LCA +法属圣马丁,Saint Martin (French),MF,MAF +圣皮埃尔和密克隆,Saint Pierre and Miquelon,PM,SPM +圣文森特和格林纳丁斯,Saint Vincent and the Grenadines,VC,VCT +萨摩亚,Samoa,WS,WSM +圣马力诺,San Marino,SM,SMR +圣多美和普林西比,Sao Tome and Principe,ST,STP +沙特阿拉伯,Saudi Arabia,SA,SAU +塞内加尔,Senegal,SN,SEN +塞尔维亚,Serbia,RS,SRB +塞舌尔,Seychelles,SC,SYC +塞拉利昂,Sierra Leone,SL,SLE +新加坡,Singapore,SG,SGP +斯洛伐克,Slovakia,SK,SVK +斯洛文尼亚,Slovenia,SI,SVN +所罗门群岛,Solomon Islands,SB,SLB +索马里,Somalia,SO,SOM +南非,South Africa,ZA,ZAF +南乔治亚和南桑威奇群岛,South Georgia and South Sandwich Islands,GS,SGS +韩国,Korea (ROK),KR,KOR +西班牙,Spain,ES,ESP +斯里兰卡,Sri Lanka,LK,LKA +苏丹,Sudan,SD,SDN +苏里南,Suriname,SR,SUR +斯瓦尔巴和扬马延,Svalbard and Jan Mayen,SJ,SJM +斯威士兰,Eswatini,SZ,SWZ +瑞典,Sweden,SE,SWE +瑞士,Switzerland,CH,CHE +叙利亚,Syria,SY,SYR +中国台湾地区(台湾省),Taiwan (China),TW,TWN +塔吉克斯坦,Tajikistan,TJ,TJK +坦桑尼亚,Tanzania,TZ,TZA +泰国,Thailand,TH,THA +东帝汶,Timor-Leste,TL,TLS +多哥,Togo,TG,TGO +托克劳群岛,Tokelau,TK,TKL +汤加,Tonga,TO,TON +特立尼达和多巴哥,Trinidad and Tobago,TT,TTO +突尼斯,Tunisia,TN,TUN +土耳其,Turkey,TR,TUR +土库曼斯坦,Turkmenistan,TM,TKM +特克斯和凯科斯群岛,Turks and Caicos Islands,TC,TCA +图瓦卢,Tuvalu,TV,TUV +乌干达,Uganda,UG,UGA +乌克兰,Ukraine,UA,UKR +阿联酋,United Arab Emirates,AE,ARE +英国,United Kingdom,GB,GBR +美国,United States,US,USA +美国本土外小岛屿,United States Minor Outlying Islands,UM,UMI +乌拉圭,Uruguay,UY,URY +乌兹别克斯坦,Uzbekistan,UZ,UZB +瓦努阿图,Vanuatu,VU,VUT +委内瑞拉,Venezuela,VE,VEN +越南,Vietnam,VN,VNM +英属维尔京群岛,Virgin Islands (British),VG,VGB +美属维尔京群岛,Virgin Islands (U.S.),VI,VIR +瓦利斯和富图纳,Wallis and Futuna,WF,WLF +西撒哈拉,Western Sahara,EH,ESH +也门,Yemen,YE,YEM +赞比亚,Zambia,ZM,ZMB +津巴布韦,Zimbabwe,ZW,ZWE \ No newline at end of file diff --git a/杂项/test.json b/杂项/test.json index e69de29..e7c7dd3 100644 --- a/杂项/test.json +++ b/杂项/test.json @@ -0,0 +1 @@ +home,studyplan,studymanage,studymanage_files,studymanage_course,studymanage_courseevaluation,studyteacher,exampaper,exam,examtx,examtm,examcer,examtmgroup,exampapermark,questionnaire \ No newline at end of file