openGauss-GaussMaster:基于LLM和AI技术的数据库智能运维Copilot项目

用户可通过文字命令与平台对话,完成智能问答、根因诊断、故障巡检、预测调优等数据库开发运维全生命周期任务。该项目是一站式、交互式AI原生运维系统,具备全栈感知、分布式诊断、智能决策等能力,支持可插拔架构和二次开发。【此简介由AI生成】

分支2Tags0
文件最后提交记录最后更新时间
first commit1 年前
first commit1 年前
first commit1 年前

GaussMaster

什么是GaussMaster

GaussMaster是一款开源的数据库智能运维Copilot。基于LLM和AI等技术,GaussMaster旨在提供一站式、交互式的AI原生运维系统。用户可以通过文字命令,与GaussMaster平台自由对话,完成智能问答,根因诊断,故障巡检,预测调优等等任务,覆盖数据库开发运维全生命周期。

GaussMaster概览

GaussMaster的设计目标具有如下能力:

  • 全栈感知能力。支持多源数据(指标、日志、业务负载)实时采集、关联分析与预测。
  • 分布式诊断能力。端到端链路追踪、跨节点依赖分析,支持复杂分布式系统的故障定位。
  • 智能决策能力。基于大模型(盘古,DeepSeek等)、领域模型、业务模型等各层级智能决策系统,实现自诊断、自恢复、自调优,减少人工干预。
  • 开放集成能力。可插拔架构,兼容多云 / 混合云环境,支持第三方工具接入和自定义扩展,支持二次开发低成本能力扩充。
  • 持续进化能力。通过用户反馈和机器学习模型迭代,动态适应新负载、新架构。

作为一个开源的数据库运维工具,GaussMaster期望与广泛的开发者构建一个开放多元的数据库运维生态。对接不同的数据库,运维工具,大模型底座和领域模型。

系统架构

系统架构

GaussMaster运行的系统架构如上图所示。GaussMaster的主服务依赖于以下模块运行:

  • DBMind服务。GaussMaster通过DBMind服务纳管运行中的openGauss运行实例。
  • 向量检索。GaussMaster调用用第三方的向量数据库存储知识片段,并在用户在线提问的时候进行向量检索。
  • 向量模型。GaussMaster调用第三方的Embedding Service,将用户的提问向量化,用以向量检索。
  • 重排序模型。GaussMaster调用第三方的Reranking Service将检索到的知识片段进行排序。
  • 大模型推理。GaussMaster调用第三方的大模型服务进行推理,完成智能问答智能运维等各项任务。

安装启动

前置条件

确保DBMind服务,向量数据库,向量模型服务,重排序模型服务和大模型推理服务都正在运行,并且GaussMaster服务所在网络环境可以连接到上述各服务的端口。

启动方式概览

  1. 执行python startup.py service setup -c conf命名, 该命令会在conf目录下创建GaussMaster配置文件gauss_master.conf和大模型配置文件model_config.yaml 在该命令执行后,用户需要完善配置信息
  2. 执行echo '{"VECTOR_password": "x", "DBMIND_password": "x"}' | python startup.py service setup -c conf --initialize --initialize_meta_db命令, 该命令会对配置文件中的信息进行检查并加密存储,然后将智能运维需要用到的本地知识向量化到向量数据库中
  3. 执行python startup.py service start -c conf命令,(在执行该命令前,需要先执行第5步,对UI进行编译) 该命令会启动GaussMaster服务,用户可以通过前台进行交互。

conf配置

在conf文件夹中找到gauss_master.conf配置文件,进行如下配置:

  1. [VECTOR]章节的内容为向量数据库的实例地址,数据库名,用户名和密码
  2. [DBMIND]章节的内容为对接DBMind暴露的对外接口,当前仅支持http协议
  3. [WEB-SERVICE]章节的内容为GaussMaster web服务的地址,当前仅支持http协议,所以ssl值为false

大语言模型选择

当前支持调用如下模型服务:

  • 盘古智子
  • Chatglm3
  • Baichuan2
  • Llama3
  • Qwen
  • DeepSeek

在线大模型配置

在conf文件夹中找到model_config.yaml配置文件,进行如下配置,以盘古智子模型为例。

# default llm
model_name: pangu_sigma_unify_plugin_71b

# 配置url信息
online_llm:
  pangu_sigma_unify_plugin_71b:
    enable: True
    model_name: pangu_sigma_unify_plugin_71b
    api_type: Pangu
    api_url: http://*.*.*.*:*/chat/completions
    recommended_config:
      temperature: 0.7
      top_p: 1.0

向量模型配置

修改model_config.yaml中如下内容,添加api_url和完整model_path

# embedding model
embedding_model:
  api_url: xxx
  model_path: xxx

前台服务部署

第一步:修改`ui.env.development'文件,配置后台服务的URL,如下

# 后端服务
VITE_BASE_PROXY_URL = http://x.x.x.x:x

第二步:修改ui\vite.config.ts文件,配置前台服务的ip和host

第三步:如果是第一次编译前台代码,需要执行npm install命令,否则只需要执行npm run dev命令即可

cd ui
npm install
npm run dev

快速上手

智能问答

在部署完成之后,通过RESTful API调用ask_gauss接口向GaussMaster提问。

curl -X 'POST' "<gaussmaster_endpoint>/v1/api/ask_gauss" \
      -H 'accept: text/event-stream'  \
      -H "Content-Type: application/json" \
      -d '{ \
         "user_id": "123", \
         "session_id": "123", \
         "model_name":"pangu_cloud_sigma_unify_plugin_38b", \
         "lang":"zh", \
         "history_len":3, \
         "question":"GaussMaster是什么"\
      }'

请注意将<gaussmaster_endpoint>替换成上文中部署的GaussMaster服务的endpoint。

智能运维

首先需要通过DBMind,将openGauss实例纳管起来。在确保DBMind已经纳管的openGauss实例之后,使用下述命令在GaussMaster中注册。

curl -X 'POST' 'http://<gaussmaster_endpoint>/v1/api/clusters/register' \
      -H 'Content-Type: application/json'  \
      -d '{ \
         "cluster_name": <cluster_name>, \
         "host": <opengauss_host>, \
         "port": <opengauss_port>, \
         "username": <opengauss_username>, \
         "password": <opengauss_password>\
      }' 

请注意填入<cluster_name>, <opengauss_host>, <opengauss_port>, <opengauss_username>, <opengauss_password>参数,填入openGauss实例的认证信息。

在GaussMaster服务中成功注册之后,调用如下命令进行交互式运维。

curl -X 'POST' 'http://<gaussmaster_endpoint>/v1/api/app/intelligent-interaction' \
      -H 'accept: application/json' \
      -H 'Content-Type: application/json' \
      -d '{ \
         "query": "帮我查询当前数据库集群状态", \
         "mode": "tool_interaction", \
         "user_id": <user_id>, \
         "session_id": <session_id> \
      }' 

其中<user_id><session_id>分别为本次对话的用户和session id的唯一标识符。

贡献

欢迎大家来参与贡献。详情请参阅我们的社区贡献

许可证

MulanPSL-2.0

项目介绍

用户可通过文字命令与平台对话,完成智能问答、根因诊断、故障巡检、预测调优等数据库开发运维全生命周期任务。该项目是一站式、交互式AI原生运维系统,具备全栈感知、分布式诊断、智能决策等能力,支持可插拔架构和二次开发。【此简介由AI生成】

定制我的领域