返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

Aiops探索:用n8n jumpserver k8s prometheus Loki落地aiops的方案

[复制链接]
链载Ai 显示全部楼层 发表于 4 天前 |阅读模式 打印 上一主题 下一主题

我的环境大体上有这些东西:n8n+jumpserver+k8s+prometheus+Loki,而我的设想是:1)识别人类意图并自动下发和执行指令;2)监控故障并自我修复;3)问题发现并给出修复方案。暂时先这3条需求。

一、 核心架构设计

首先来说,这个AiOps 智能体不是一个单一程序,而是一个由多个组件协同工作的系统。我们可以将其分为四个层次:

1、交互与意图层:智能体的“耳朵”和“嘴巴”,负责接收指令和反馈结果。
2、决策与编排层 :智能体的“大脑”,负责理解意图、分析数据、做出决策并编排后续任务。
3、监控与数据层 :智能体的“眼睛”和“记忆”,负责收集系统状态、日志和指标。
4、执行与控制层:智能体的“手”,负责在目标系统上执行具体的修复或操作指令。

二、 各组件在架构中的角色

组件
在 AIOps 智能体中的角色
核心功能
n8n核心工作流引擎 / 系统总线
连接所有组件,编排自动化流程,处理 Webhook 触发,是整个智能体的“中枢神经系统”。
Prometheus监控指标来源
实时收集 K8s 和其他服务的性能指标(CPU、内存、请求延迟等),并触发告警。
Loki日志数据来源
聚集所有 K8s Pod 和服务的日志,为问题诊断提供上下文。
Kubernetes (K8s)主要操作对象
应用运行的底层平台,智能体的很多操作(如重启、扩缩容)都直接作用于 K8s API。
Jumpserver安全执行通道
当需要在 K8s 节点或虚拟机上执行高危命令时,通过 Jumpserver 的 API 安全地执行,并记录所有操作。
LLM (大语言模型)智能决策核心
用于自然语言意图识别、根因分析、生成修复脚本。可以是 OpenAI API、 DeepSeek以及本地部署的模型。

三、 功能实现路径(分阶段落地)

建议从简单到复杂,分阶段实现,逐步构建你的 AIOps 智能体。

阶段一:基础自动化与告警闭环

这是最核心、最能立即产生价值的一步。

目标:实现 Prometheus 告警 -> n8n 自动处理 -> 执行修复 -> 结果反馈的完整闭环。

实现步骤:

1. 配置 Prometheus 告警

  • 在 Prometheus 中定义关键的告警规则,例如K8sPodCrashLoopingHighCPUUsageServiceDown
  • 配置 Alertmanager,将告警路由发送到 n8n 的 Webhook URL。

2. 在 n8n 中创建告警处理工作流

  • 触发节点:使用Webhook节点接收来自 Alertmanager 的告警 JSON 数据。
  • 决策节点:使用 IF 或 Switch 节点,根据告警的标签(如 alertname)来判断是什么类型的问题。
  • 执行节点:
    • 对于 K8s 问题 :使用 HTTP Request 节点调用 K8s API。例如,收到 PodCrashLooping 告警,可以调用 API 删除 Pod,让 K8s 自动重建。
    • 对于节点问题 :使用 HTTP Request 节点调用 Jumpserver 的 API,创建一个自动化任务,在指定节点上执行命令(如 systemctl restart docker)
  • 通知节点:使用SlackEmailDingTalk节点,将处理结果(成功/失败)发送给运维团队。

示例工作流:(处理 Pod 崩溃)

Webhook (接收告警)->IF (判断 alertname == K8sPodCrashLooping)->Code (解析 JSON, 提取 namespace, pod_name)->HTTP Request (调用 K8s API 删除 Pod)->Slack (发送 "od {pod_name} 已重启" 消息)


阶段二:问题诊断与日志关联

目标:当告警发生时,智能体能自动查询相关日志,提供更丰富的上下文,甚至给出初步的修复建议。

实现步骤:

1. 扩展 n8n 工作流

  • 在阶段一的工作流中,决策节点之后、执行节点之前,增加日志查询步骤。
  • 日志查询节点:使用 HTTP Request 节点,根据告警信息(如 pod_name, namespace)构建 Loki 的查询语句(LogQL),查询该 Pod 最近一段时间的错误日志。
  • 日志分析节点:
    • 简单规则 :使用 Code 节点(如 JavaScript)检查日志中是否包含特定关键词(如 OutOfMemoryError, Connection refused)。
    • 智能分析 (进阶):将查询到的日志作为上下文,调用 LLM API,让 LLM 总结日志内容并给出可能的原因。

2. 增强决策逻辑

  • 根据日志分析的结果,动态选择不同的修复策略。
  • 例如:如果日志发现是OutOfMemoryError,则执行 K8spatch操作,增加 Pod 的 memory limits;如果是Connection refused,则检查相关的 Service 和 Endpoints。

阶段三:意图识别与指令下发

目标:让运维人员可以通过自然语言与智能体交互,实现“说人话”就能运维。

实现步骤:

1. 搭建交互入口

  • 可以是一个聊天机器人(如 Slack Bot, Teams Bot),或者一个简单的 Web 界面。
  • 用户的指令通过 Webhook 发送到 n8n。
2. 在 n8n 中创建意图识别工作流:
  • 触发节点:Webhook节点接收用户的自然语言指令(如“把生产环境的 user-service 扩容到 5 个副本”)。
  • 意图识别节点:
    • 调用 LLM API。设计一个高质量的 Prompt,要求 LLM 将自然语言转换为结构化的 JSON。
    • Prompt 示例:
    你是一个运维指令解析器。请将用户的指令解析为JSON格式,包含action,target,namespace,replicas等字段。如果无法解析,返回{"error":"invalidcommand"}。用户指令:"把生产环境的user-service扩容到5个副本"输出JSON:
      • LLM 会返回类似:
      {"action":"scale","target":"deployment/user-service","namespace":"production","replicas":5}
      • 指令执行与反馈
        • 代码节点:解析 LLM 返回的 JSON。
        • 执行节点:根据 action 字段,调用不同的执行模块(如 K8s API, Jumpserver API)。
        • 反馈节点:将执行结果(如“已成功将 user-service 扩容至 5 个副本”)通过聊天机器人返回给用户。

      回复

      使用道具 举报

      您需要登录后才可以回帖 登录 | 立即注册

      本版积分规则

      链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
      • 官方手机版

      • 微信公众号

      • 商务合作

      • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
      • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ