我在平台与AIGC的交互的组件设计方案(2)

软件工程师罗小东,多年架构和平台设计经验,目前在研究平台与新技术结合中。

回顾

上一篇梳理到我在平台与AIGC的交互的组件设计方案,进行了交互的设计架构,而进一步结合IM整合,将进一步阐述优化交互流程。同时到这步环节引入体验人员来验证LLM对工程师的提升效果,同时体现出超级工程师个体。

体验人员介绍:李小梅,测试工程师,前期有半年的时间跟进学习平台技术,熟悉平台的场景和使用流程。

引入新工程师主要目标是进行过程的交互体验,以更好的验证这个过程,以体现LLM结合对人员能力提升的效果,后期将通过体验结果来进一步形成超级工程师个体。

概述

书接上文。

LLM的推理能力和GC内容生成,为了更进一步的优化和结合多Agent的结合,在这里进行了自定义的GC的交互方式,自定义了一个简单的IM,以便于更好的管理。主要的目标是为了将难用的可视化管理界面进行尽量的规避,统一通过与Agent与员工的交互来进行整体平台的管理,形成类似于ChatOps的工具,但是在LLM上会更强大。

以下为交互管理界面:

在这个过程中,虚拟出多个Agent个体,这里分成了多个团队和多个细化的个体,通过不断的加入群交互,通过小梅工程师的调用和工程师审核,来进一步的完成多个工作结果,比如对虚拟需求团队、虚拟工程师团队、虚拟架构师团队等的管理把控,在不满足的情况下,不断的加入新的工程师来进行交互工作,直到完成一个闭环作业。

以下为虚拟的工程师团队:

这里跟AutoGPT之类的区别在于,这里引入LLM是为了更好的促进超自动化,来解决平时工作中的问题,通过超级个体和Agent角色的结合来完成这个目标,而不是类似于一开始就是完全自动,在这个阶段,我们对LLM的定位依然还是辅助角色。以下为相关的设计思路:

  • 定义团队和多个Agent角色分工
  • 定义Agent流程和审核方式,交互方式,流程编排
  • 多频道(群)和多Agent协作

每个团队的设计思路都有自己的方案,上面是我们在这个过程中的一些实践经验,每个架构师有自己的思维,我有我思。

设计思路

这里的设计并不会有太多复杂的定义,整个过程以解决实践工作问题为主。

定义团队和多个Agent角色分工

为了更好的进行Agent角色的定义,进行多个角色的拆分,拆分的目标是为了更好的聚合,将每一项工作进行细化,形成独立的Agent角色,进而通过多个角色的聚合,形成一个闭环工作。以下是目前细化的团队和Agent,主要包括:

  • 人才管理专家团队
  • 解决方案架构师团队
  • 技术工程师团队
  • 数据挖掘分析团队
  • 自动化运维管理团队
  • 业务运营专家团队

以下为相关设计图:

在形成多个agent之后,调试好Prompt指令,确保结果达到可用或者说可以达到初步讨论的地步,目前还无法做到100%,所以在IM交互上,添加了工程师小梅审核的步骤,审核的意见来源来自于经验的积累和平时的讨论,目前这步暂时先这么处理。

定义Agent流程和审核方式,交互方式,流程编排

在增加到一定的Prompt指令,通过服务和流程编排的形式来进行每个角色的定义,当前以硬编码和自定义节点来处理,流程工具使用的是LiteFlow,暂时没有配置可视化的流程界面,主要的考虑在于定制化的内容较高,前期在研究调试阶段,以定制化编排为主。

以下为数据库设计聚合流程:

这样的交互形式,在某个角度上面,比较容易实现Agent的标准化和准确结果。

多频道(群)和多Agent协作

假设说一个虚拟的角色或者多模态的角色会输出结果,这里可以定义和理解成它就是一个”员工”,这里增加多频道主要是为了更好的在内部分享和结果共享,这样以更好的形成公司组织模式。通过增加频道的方式来进一步的集成多个Agent在工作台上面交互,或者集成多个结果进行交互管理,如下图:

这个过程上一个Agent的结果是下一个Agent的输入,而小梅工程师在这个过程的操作,主要是做审核校验,以确保上下结果的准确性,如果不准确,可微调或者重新生成。同时增加了知识库的交互,比如可以上传某份需求文档或者内容文档,进行更好的内容提取和推理,让AIGC结果更加准确。

总结

这个过程走下来的并不是说特别难设计,只是说新的概念为我们提供了新的思路,比如Agent、超级个体、智能体等,并不会完全搬照,而是针对于实际的问题进行了取舍,有比较多”完美”的想法,也在一步步进行延伸,最终的目标是期望能自我演化,但是怎么做,这还在设计,比如记忆系统,演化系统,成长系统等都需要进一步的定义和设计,前期的目标是能形成超自动化的方向,后期也同步在研究。

也期望有兴趣的同学可以一起讨论,分享经验。

我在平台与AIGC的交互的组件设计方案

软件工程师罗小东,多年架构和平台设计经验,目前在研究平台与新技术结合中。

概述

临时记录的笔记,表达中可能会略带有一些口语化,同时注意此版本平台还在研发调试中。

这里阐述以平台运营为主,这里假设说已经有一个平台,包括技术、数据、运维、管理、运营等基础设施的能力。

这个设计原来主要的问题是超自动化的提升,结合LLM为了更好的实现,在这个过程中,也包含了一些自主的感知和学习的能力,带有智能体的一定的特征。在前期的研究中也是不断的查看和摸索了很多的开源项目,包括一出来就热门的Github项目,但在使用遇到的情况更多的是还只是属于一些例子或者带有很多不稳定因素,并没有说见到能达到较稳定的层面。

在这个过程中也发现,GPT的交互过程中,涉及到的问题也很多,比如最直接的是内容生成的发散性太强,接口费用太高,返回内容不准确,还有数据提交过去产生的安全性问题,接口响应时间等问题,实际中见到运用得最多的是知识库,LLM+数据源(向量库/其它loader库),比如langchain。针对于平台层来说,内容的不稳定还有交互不明确,数据安全性等,这些基本上就完全无法接入平台服务,试想,使用过程中突然有一个不稳定的因素,上层业务运行容易一片雪崩。

针对于前期的整合过程,做了一定的处理,以尽量减少和达到可用的目的,下面交互的架构图:

这里从几个点来进行阐述,前期研究中的一些交互设计思路和过程思路:

  • 增加和调整平台的一些规范要求
  • 结合AIGC进行的平台多场景Agent设计
  • 支撑交互的服务组件建设设计

在此过程中的多方调试,为了更好的进行交互设计,针对于Prompt的编写上制定了一定的规范,还有平台的工程上面也做了一定的适配调整,我有我思。

处理方案

主要是针对于前期运营平台过程中的一部分自动化处理方案,当然场景还在挖掘,比如当前团队的培训就是使用上面的交互流程来培训,以提高团队能力而进一步提高平台在实际中的落地。

调整的一些规范要求

这里的规范性指的可能很多,这里主要是当前做的一些内容,可能还不全,也在调试和挖掘场景中。主要包括:

  • 整体服务之间接口的规范,这个是遗留问题,涉及到的服务有的基本上要提供出可调用执行的api接口,比如k8s发布接口
  • 服务之间交互需要增加一层adapter层,这个类似于DDD工程结构里面的基础设计层,作用类似
  • 所有涉及到AIGC的交互,全部使用yaml格式来进行,同时要最小参数来生成结果,表达越简单越清晰越好。

以上服务调整的规范和提供能力,主要是为了更好的进行后期的交互,这里指的是所有的平台服务(包括技术、数据、运维),有一些自动化运维比如ansible或者k8s发布可能没有接口,可以结合第三方,比如jenkins来提供API以执行服务。

adapter层是针对于第三方交互的时候调用的,也是为了给AIGC服务调用的解析模板能力,这层目前还在适配,往往可能很多时候还是空的,做到的时候,统一通过这层进行交互对接处理。

使用yaml来交互的原因主要是上面提到的准确性的问题,在调试过程中发现,GPT结合yaml生成出来结果准确性基本上很高,没见到有哪些错误,甚至它还能帮你处理错误,这推理也是比较好.

比如下面的培训试题:

这个Prompt生成出来的试题准确程度还是比较高,除了见过一两次接口生成的时候不完整,基本上没见到错误,后续还继续观察,至少得到一定的准确比例。另一个原因是交互的数据提交问题,并不想提交太多数据以规避token的成本,只需要针对提交的参数,获取到清洗出来的数据即可,同时一些数据增加了脱敏的处理。

结合AIGC进行的平台多场景Agent设计

这里交互的方式主要是使用很多Agent,也可以理解成专家,这些专家的目的是完成每一项目过程中的任务,也就是将原来一些手工处理的或者需要人工处理的,交由Agent来处理,比如刚刚提到的知识库,这也是一种解答的专家。

不同的场景针有一不同的专家来调用Prompt的服务,来获取到结果,可能调用一个或者多个,通过多线程进行结果的整合,类似于MapReduce一样的,这个不是很难处理,之前也有考虑工作流,这样一个流程可能就是一个专家。我们并没有使用langchian,主要是在使用过程中发现,可能调用服务和管理数据,会更可控。

在处理完成之后,返回的结果会针对于每个专家设定的角色去调用相应的服务实现,每个服务实现针对于yaml结果进行解析,然后调用本服务能力,比如发送邮件之类的,或者说数据抽取。这里如果用过DataX的同学可能就会比较理解,DataX在做数据抽取的时候,使用的是一个json文件,我们的目标也就是生成类似的文件,用于更好的做交互,这个生成对LLM来说,难度并不高。

最后便是结果的通知和整合情况,这里IM工具比较多,专家也可以做成接口服务,放到IM工具里面,比如在钉钉里面设置多个机器人,这样组合起来的ChatOps能力就更强一些,我们目前正在调度这几步,目前还没有调试到对话的程度,目前也在考虑这块。

数据来源的问题,每个Agent针对于特定的场景,在交互中数据的来源也是比较明确的,一个是向量库,另一个是数据服务,这两个可以理解成GPT的记忆能力库,会在交互过程中,进行记录分析,然后再进一步的将结果反馈,从而下一步调用的时候,GPT返回更加专业或者达到经验积累的目标,原来的考虑是类似于自我演化的系统,这也是在调试,这步也包含上面说的对话调试,当然效果上还没有达到预期。

支撑交互的服务组件设计

交互组件是以服务的形式的提供,即微服务的形式进行管理,每个是单独的服务,便于后期的共用或者单独使用。下面是服务的截图:

在这里为了更好的达到交互的目标,设计了几个服务组件,主要是:

  • 推理服务:这个主要是对于基础层的Prompt工程管理,还有模板内容解析,还有一些向量库,总的目标来说就是管理Prompt工程
  • 助理服务: 这个主要是对于Agent而言,也就是专家,每个场景的专家会调用推理服务的一个或者多个Prompt接口中获取到结果,并提供出yaml交互
  • 脱敏服务:这个会比较好理解,主要是针对于一些敏感词和或者一些内部数据做的脱敏,回来之后在助理服务进行置换

服务化的另一个考虑是针对于LLM来说,是一个可拔插的东西,在不需要的时候,不部署或者这些服务即可,比如针对一些比较感触的团队。

总结

上面便是平台在前期AIGC交互中的一些探索和处理方式,在这个过程中想像空间还是比较大,能挖掘的场景也是比较多,目前发现的很多人工处理部分是可以使用自动化来替换的,比如刚刚提到的团队培训,后期便可形成梯队模式和定向培养,在这个过程中验证的效果大部分还是达到预期。这些也在之前的GDG活动中做过一些分享,这里表达得更加细化,也期望可以给做这方面的同学一些参考,也欢迎提供更好的思路和经验。

我在GDG活动上分享使用AIGC提升平台的内容稿

软件工程师罗小东,技术架构师,有一些平台化和产品化经验,目前在结合新技术研究平台中

概述

一直以来都是接触平台技术,主要集中在中小企业上,从平台化、中台化、产品化几个路线都有一些的实践、运营和落地点,但是问题也随之而来,另外随着行业AI技术的发展,新的平台形态是怎么样子,这个也在思考和探索。本次分享主要是结合企业平台化和AIGC结合上的经验分享,同时我们对平台下一步的形态方向。

通过集成超自动化的理念,使用平台自动驾驶仪操作模式进行管理。能在不干涉的情况下生成优化平台。结合了AIGC的推理能力,使平台管理更加自动化和智能化,结合实践过程中的指导和管理的最佳实践。

这里分享主要从几个平台形态维度来进行阐述,大致内容如下:
1、中小企业目前平台化的产品形态
2、平台在项目落地常见的处理方式
3、平台超自动化和AIGC的结合方案
4、后期的愿景和应用自动化赋能

每个设计人员有自己的方案和思路,有不同的路径,我有我思,期望可以给一些不同的参考。

这里是分享稿,会略带口语化,同时偏向于中小企业偏多的场景,比如研发团队规模在几个或是几百多研发团队的场景。

内容阐述

这里按我们提的几个点来阐述,结合实际和开源项目来进一步实践阐述,一个是吸引这方面有兴趣的朋友,另一个是降低研发成本,提高软件质量。

中小企业目前平台化的产品形态

首先我们先来了解目前多见到的企业平台化内容,就是通用常见的层面。

一般来说,企业研发型平台主要包含有基本的devops、通用开发平台、快速开发平台、数据治理平台、AI平台、还有一套运维管理体系,后面做得发展产品形态的,可能还有一套运营管理平台,可能是saas化或单独项目化,这个主要看团队。

目前这些基本上都很多形成很多企业或是团队的配置点,形成一套基础的环境在项目或是团队。

这里我们为了更好的研究,我们这里也利用开源技术搭建了一个简版的企业平台,主要是结合Ops体系连接起来,比如devops/dataops/chatops/aiops等,同步搭建一个运营平台,用于管理,同时对外提供SaaS租户能力。

平台在项目落地常见的处理方式

假如说,我们把一个平台比作一个膄船舶,这个对很多中小型团队来说,这可能就是一个中等级别的航母,打造一个航母在一定的经验和资金存在的情况下,可能并不是特别难,但是运营管理上,成本可能就出来。一次出行,需要配置的人员、资源、还有发挥的能力等都是消耗极大的,再加上后期升级、维护管理等都是一比不小的开支。

这里主要是过程中常见的几个点:

  • 各种平台技术概念的灌输
  • 团队人员的培训流程化
  • 完善的平台文档和培训
  • 各种流程制定和标准文档
  • 过程人员项目技术支持
  • 脚本过程的自动化
  • 运维管理的自动化
  • 项目和代码生成的自动化
  • 测试脚本和自动化
  • 服务器监控处理的自动化
  • ……

比如以下几个例子:

过程的管理使用自动化的脚本和多种自动化的能力,来实现多个服务和多个组件之间的维护管理,比如运维和自动化,包括运维的自动化、发布的自动化、还有数据采集的自动化,同时结合钉钉进行统一的进行交互,达到一个ChatOps体系的目标。

另一个是人员的培养,也做了很多文档和经验分享,包括人员入职还有每周会进去考核,整理出经验,每隔一段时间进行一次内部的沙龙分享,以达到对平台技术的熟悉,还有项目使用过程的熟悉。

当然,还有很多,你会发现这个过程需要东西,很多都形成标准和自动化,但是针对于中小型企业来说,要落地,同时也发现另外的问题,比如人员要求过高,架构师支持,技术要求高,还有流程过多,复杂,整体结合串起来需要较大量的知识面等,特别是整个平台过程管理需要大量的实战经验。

这个问题导致的一个最大卡点,是平台的延续性的问题,这个针对于中小型企业来说,几乎是致命的。我们换个角度来考虑,在人才还有资源,投入有限的情况下,一旦说有一部分跟不上或者说无法偏差,很可能这个平台就会变得维护成本极高,使用成本也极高。

比如前端需要架构师,开发需要架构师,数据需要架构师,运维需要架构师,AI算法工程师 … 仅仅这几个岗位角色加起来研发的预算就立马上来。

平台超自动化和AIGC的结合方案

针对于这块上,我们目前整理的解决方案是,在自动化能力上,进一步形成和加强形成超自动化理念的整合,同时结合AIGC一起,进行交互输出,形成更为智能的平台运营方式。

举个简单的例子,假如我们把平台比作一台车,以前的车都是人手工操作的,这个是人工驾驶,而现在的车,可以实现自动驾驶,或者辅助驾驶。那换成平台,也是一样的概念,平台的发展,也应该可以可以实现自动化操作的辅助,形成更加智能化。以前的平台可能是在那里是人工去操作,而更加先进的平台,应该是可以自动去操作,或者辅助操作,以规避掉其使用的复杂性。

再接着上面提到的平台落地过程中的几个点:

  • 各种平台技术概念的输出,是否是可以自动结合平台输出给开发
  • 团队人员的培训,考核,是否是可以针对要求内容自动生成试题,自动考核结果
  • 平台的文档,代码的文档,是否是可以自动的生成解释,形成研发参考
  • 过程的自动化脚本,是否可以针对于平台自动生成,同时自动执行
  • 项目的解决方案,是否是可以自动生成针对性的解决方案,给市场参考
  • 市场商务的推广,是否可以针对平台自动生成,自动投放到媒体平台
  • ……

然后这个过程会发现,很多可以基于自动能力上更加智能一层,而在前期的AIGC探索和技术预研中,是可以做到大部分的,特别是大模型的结合,重点是Prompt的定义和数据的输入。这个的理解就类似于,原来的平台可能是人工在操作,但是缺少一个”大脑”在推进和促进它自动发展,让它活起来,或者说”活”得更会思考一些。

这个便是我们提到的,平台超自动化提升,使用平台自动驾驶仪操作模式进行管理。自动驾驶仪操作模式使该平台可以管理项目和软件的底层基础设施,能在不干涉的情况下生成优化平台。根据多年的平台研发和产品化经验,运用经过实践检验和强化的最佳实践来管理和维护平台,特别是优化在最低级别的场景方面。这些工作有助于保护平台,提高基础平台的稳定性和可控性。结合了AIGC的推理能力,使平台管理更加自动化和智能化,结合实践过程中的指导和管理的最佳实践。

下面是在这块上,我们目前在调试和结合AIGC能力的是几个自动化流程:

  • 结合个人成长愿景,技术概念的自动生成和推送
  • 团队培养试题生成和考核调度,通过结果形成团队梯队
  • 团队知识库和软件工程项目管理文档的自动生成
  • 开发微服务自动生成和功能自动生成,安全报告生成
  • 实时和离线数据方案论,数据指标自动生成
  • 资源管理的运维脚本和k8s部署脚本等自动生成
  • ……

当然,这些的前提是数据的采集和二次加工,结合Prompt整合起来,为了更好的管理这些Prompt,我们也是建立了一个管理平台,同时结合最新的大模型能力,这样便于我们更好的推进和管理工程结构,我们在某个角度上是期望后面通过不断的调试Prompt和优化数据采集来优化这个流程。

后期的愿景和业务自动化赋能

当前技术的发展有点超过我们的预期,前期平台产化的时候,原来的猜想可能会先走数字化,AI智能的发展还需要几年才可以普及。这也无形中形成一种推进,所以推进平台超自动化理念和形成平台自动驾驶这个计划也提前了进程。

目前的期望是在这块上的研究和处理,能达到基础平台的自动化能力达到预期,后期可以应用到业务自动化的能力上,当然,这个过程为了稳定性和健壮性会有取舍,但是传统的操作在高质量发展要求上,我们预计始终会有一定的提升,如何提升也是我们在探索和挖掘场景。

总结

一直以来接触的都是平台化,中台化等理念,在形成产品化运营之后,在思考如何更进一步的提升,同时结合团队和企业的发展,行业的技术先进性推动基础平台更加的智能化,使用平台自动驾驶仪操作模式进行管理是我们在推进的一个方向,当然我们也已经看到很多产品已经在往这个方向的结合。

以上为个人在实际过程中的一些经验分享,每个设计人员有每个不一样的思路,期望可以给其它人员一些参考。

我从中台化到产品化的一些总结手稿

罗小东,多年平台架构和落地经验,在中台产品化建设方面有一些经验。

背景

在2018年,中台概念风行,那时尝试进行了一些spring cloud和k8s的研究,带领一些成员进行培养,同步启动了alinesno-cloud的开源项目,后来该项目形成了具备产品状态的商业运营,这个过程属于中小团队(即几人或者百来人之间的技术团队)落地的范畴。

注:这并不是书籍,也不会出版,只是以书的形态进行维护。

目前,由于其它因素,个人已不再参与商业运营,转而组建社区团队,运营开源项目,这里将对前期建设过程进行手稿总结和归纳。

手稿内容

手稿的相关资料和地址,配套的开源项目地址,主要形成的是一套落地手册和理念,从设计、研究、产品、运营形成的一套材料手册。这里做的主要是技术中台、数据中台、运维自动化、以及运营管理的一套中台产品套件,

期望可以为一些企业团队打造中台产品提供参考。从2018年设计alinesno-cloud开源项目的第一版本建设开始进行记录编写,整个产品输出过程大概是建设初版本到产品化运营,主要包括以下内容:

  1. 中小微企业数字化转型的现状和挑战;
  2. 数字中台的概念、意义和构建方法;
  3. 中台产品设计与开发的流程和方法;
  4. 中台产品运营与管理的策略和技巧;
  5. 团队中台化转型案例和落地经验分享。

结合在中台化转型领域的实战经验,从实战落地出发地介绍了中台产品建设过程、意义和建设方法,并分享了实用的案例和经验。读者可以通过了解如何打造中台产品,提高企业效率和竞争力,同时也可以学习到数字化转型的相关知识和技能。

手稿说明

中台化是很多企业在解决针对于传统系统中一些问题的方案,在这个过程中接触过很多团队在做,实际上落地下来的团队较少,遇到的很多还在PPT层面的比较多,方法论的比较多,但是只要深入解析还有进一步落地,后期升级还有运营等状态比较少。遇到的更多是中间就放弃或者没有形成后期的运营升级等状态。

有很多听说过建中台,然后又听说拆中台等名词,在这个过程中,也拆过原来搭建的中台,但是拆是为了更好的建设和落地,以达到匹配团队实际情况的目标而不是不用。

过程的落地需要很多的因素,反而技术的因素是最好把控的,其它的因素比如团队技术能力情况、组织情况、人员情况、项目情况等等多种因素的存在。还有长期的运营升级等,才能形成的产品化的状态,还有项目过程中不断磨合等。手稿主要从以下几个章节:

  1. 行业发展思考与发展
  2. 产品思考与规划
  3. 团队建设与管理
  4. 产品架构与研发
  5. 项目实战与运营
  6. 产品优化和输出
  7. 中台产品化心得

这个过程比较长期的投入还有不断的实践摸索,形成团队自己的设计理念,落地理念等,避免一半一半的信息,最终很难落地。这里整理了过程中的手稿,对外展示在这个过程中项目还有问题等,还有产品形态等。从上面进行的阐述,每个团队和场景不一样,组织结构也不一样,这个过程只是说这边的落地和产品化过程,期望给一些参考,有自己的设计。

总结

中台化是解决针对于传统系统中一些问题的方案,在这个过程中接触过很多团队在做,遇到的很多还在PPT层面的比较多,要深入解析还有进一步落地,每个团队和场景不一样,组织结构也不一样,这个过程只是说这边的落地和产品化过程,期望给一些参考。同时也非常感谢一些开源项目,在鸣谢章节进行了说明。

下面是相关的链接:

  • 手稿地址:http://alinesno-book.linesno.com/book/

我在超化研究上的日志采集架构设计

软件工程师罗小东,多年平台架构和落地经验,在与社区团队研究超自动化方面的设计和产品方向。

背景

以下是针对超化管理超化的设计,因此会偏向技术方向的阐述。

目前对于超化的关注点似乎更多集中在方法论方面,而较少关注具体实现,目前仍处于探索阶段。我们的编码工作目前在 Github 上进行,以便与对这个领域感兴趣的同学进行更好的交流。

在进行超自动化研究的过程中,我们遇到了数据采集的问题。在上层自动化过程中,需要大量的数据支持,因此需要采集大量内容。由于缺乏业务场景,我们在这方面的研究考虑是先使用超自动化来管理超自动化(即自己管理自己)。这里主要针对日志采集设计。

概述

我们原来的整体设计方向是朝着数据支持方面发展的。根据一定的规则和判断条件,结合 AGI(人工通用智能)的推理判断,形成智能化的操作。在日志的采集和管理方面,我们需要采集完整的数据链,进行判断、管理和预测。在确定采集哪些数据时,我们参考了许多开源项目,但也发现了一些问题。各个开源项目过于分散,无法形成组合,数据分离也比较麻烦。另外,技术迭代速度较快,有些项目没有很好地跟进。综合考虑后,我们需要进行部分重写和整合。这里主要采集的内容包括:

  • 前端日志:包括 UI 事件、访问日志、操作日志、热点日志和 IO 日志等。
  • 自动化日志:镜像日志、构建日志、过程日志和操作日志。
  • 安全日志:代码、质量、版本、漏洞安全、容器漏洞、密钥日志和 Git 提交日志等。
  • 应用日志:运行日志、运行状态、请求日志、运行情况和链路情况等。
  • 系统日志:操作日志、历史日志、IO 日志、网络日志、请求情况和运行情况等。
  • 操作日志:操作记录、SQL 操作和审计操作等。
  • 登录日志:登录的所有信息和请求,例如 IP、地点、位置和账号等。
  • 项目日志:任务操作日志、变更日志、审计日志、人员变动和状态变更等。
  • 链路追踪:请求链路、操作链路、日志链路、SQL 链路和阶段链路等。

这只是初步设计,后期还会继续添加。目前按照上述设计进行集成,采集回来的数据使用流水线方式进行判断和处理。在这个过程中,我们主要使用了 GPT 的推理结果作为推理能力的基础。当前的原则是尽量使用流水线和自动化,在特定阶段使用 GPT 的能力作为辅助,以提高过程的稳定性。实现的超化能力演化效果类似于以下示例:

  • 在云服务器准备到期时,自动采购或续费。
  • 当功能准备延期时,自动通知并向指定人员提供合理建议的方案。
  • 每月或每周自动生成报告结果,并给出合理的建议。
  • 自动检测和构建验证过程中的漏洞,并生成分支。

在这些过程中,我们使用规则和推理能力进行简单的判断,协调这些自动化流水线,类似于自动驾驶,但也有辅助驾驶,推理能力就是这个协调的大脑。为了实现更便捷的操作,我们还添加了语音交互,以便更好地进行操作,并将结果通过 SSE 推送到系统界面或进行语音播报。

下面是当前设计的整合思路,这仅涉及日志采集方面的设计,其他自动化内容不包含在其中,我有自己的思路。

过程设计

相对而言,采集的设计是相对简单的。目前有许多开源工具可用,但搭建起来可能需要较长时间。然而,由于 AIGC(人工智能生成代码)的能力,我们可以使用生成式代码和单元测试,效果还是不错的。

采集工具

我们的采集工具主要使用了一些开源工具,并结合了 Maven、Shell 和自研的流水线进行改进。在选择工具时,我们考虑了定制化的需求,并综合考虑后决定自行开发。下面是我们主要使用的采集技术:

  • 前端采集:log.js、filebeat 和 nginx。
  • 自动化采集:Python + shell,并将数据发送到 Webhook。
  • 安全日志采集:Trivy、Checkstyle、Murphysec、SpotBugs、Gitleaks 等工具。
  • 应用日志采集:自定义的 logback、OpenTelemetry、AOP、Nginx 等。
  • 系统日志采集:Ansible、Shell、Python,定时采集结果并结合 node-exporter 返回。
  • 操作日志采集:AOP 和自定义的 logback,自定义的 MDC 参数。
  • 登录日志采集:Nginx、AOP 等。
  • 项目日志采集:通过调用 API 进行定时采集,并有一些会接收推送结果(例如禅道)。
  • 链路追踪采集:OpenTelemetry 和 agent 的方式。

对于数据量较大的情况,我们使用 Kafka 作为数据缓冲。为了方便交互和安全性,我们在 Kafka 前面加了一层控制器层,提供了 HTTP 接口,并使用自定义的令牌进行拦截。目前还在研究过程中,尚未添加 HTTPS。

有些 Webhook 提供的是一个前端系统,例如 Spring Boot 应用或 gRPC 应用,它们接收数据后将其输入到数据仓库中。我们使用 ClickHouse 作为数据仓库,因为它能够保存多种数据结构。一些日志会在实时计算后保存到数据仓库中,另一部分会使用数据进行离线计算。我们对 ds 的 2.0 版本进行了二次开发,以适应当前的工程结构并更好地维护。

维护平台

采集之后,并不仅仅是结束了。我们还设计了几个平台来管理数据,以应对不同的应用场景。这些平台类似于数据的前端和展示,便于管理过程流程跟进,并提供更好的可视化。我们基于 Ruoyi-Plus 进行了改造,主要产出了以下平台,便于维护管理,比如自动操作服务、安全感知服务、持续集成服务、日志审计服务、容器管理服务、监控预警服务、链路追踪服务等。

这些服务功能主要是在数据上展示和管理,便于超自动化的管理。一些数据来源于 ODS 层和 ADS 层,目前的流水线集成还在 GitHub Actions 上,但数据应该已经采集到了。后续需要进行验证,并进行多个自动化流水线的验证处理。这个过程可能需要进行调试,当前的功能点已经规划和编码产出。

总结

以上是我们在研究超自动化过程中关于日志处理的思路和结构。目前还在进行调试和验证。除了日志的自动化处理,还有其他方面需要结合超自动化,例如项目管理、产品市场营销、流水线自动生成等。希望对从事这方面的同学提供一些经验参考。

鸣谢

在处理日志的过程中,我们参考了一些产品,主要包括以下内容:

  • GitHub Security 服务
  • 阿里云分布式链路
  • AnsibleTower 自动化操作
  • ELK 套件
  • PlumeLog 开源日志工具