Vinny1892/octantis

GitHub: Vinny1892/octantis

智能基础设施监控代理,利用 LLM 与 MCP 自动化调查分类并生成修复建议。

Stars: 2 | Forks: 0

# Octantis [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/55d072d000073824.svg)](https://github.com/Vinny1892/octantis/actions/workflows/ci.yml) [![Build mcp-grafana](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ad858a2169073826.svg)](https://github.com/Vinny1892/octantis/actions/workflows/mcp-grafana.yml) [![GHCR](https://img.shields.io/badge/ghcr.io-octantis-blue?logo=github)](https://github.com/Vinny1892/octantis/pkgs/container/octantis) [![Python 3.12+](https://img.shields.io/badge/python-3.12%2B-blue.svg)](https://www.python.org/downloads/) [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE) [![SDK License: Apache-2.0](https://img.shields.io/badge/SDK_License-Apache--2.0-green.svg)](packages/octantis-plugin-sdk/LICENSE) [![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/octantis)](https://artifacthub.io/packages/search?repo=octantis) 用于 **Kubernetes、Docker 和 AWS** 的智能基础设施监控代理。通过 OTLP 接收指标和日志,使用 LLM 自主调查和分类事件,并通过 Slack/Discord 通知具体修复方案。 ## 目录 - [工作原理](#how-it-works) - [容器镜像](#container-image) - [运行 Octantis](#running-octantis) - [本地 Kind 集群(快速启动)](#local-kind-cluster-quickstart) - [现有 Kubernetes 集群](#existing-kubernetes-cluster) - [从源码构建](#from-source) - [配置](#configuration) - [MCP 服务](#mcp-servers) - [严重等级](#severity-levels) - [贡献](#contributing) - [文档](#documentation) ## 工作原理 ``` OTel Collector ──OTLP──► Octantis ──MCP──► Grafana / K8s / Docker / AWS │ ├── LLM (Anthropic / OpenRouter / Bedrock) │ └──► Slack / Discord (remediation plan) ``` 1. **接收** — 从 OpenTelemetry Collector(gRPC :4317,HTTP :4318)接收 OTLP 指标/日志 2. **过滤** — 丢弃健康检查、良性模式,并通过指纹冷却期去重 3. **检测** — 根据 OTLP 资源属性自动识别源平台(K8s、Docker、AWS) 4. **调查** — LLM 通过 MCP 自主查询 Prometheus(PromQL)、Loki(LogQL)和平台工具 5. **分析** — 将严重性分类为(CRITICAL / MODERATE / LOW / NOT_A_PROBLEM)并附带置信度评分 6. **规划** — 生成可操作的修复步骤 7. **通知** — 发送至 Slack 和/或 Discord(仅当严重性 >= 阈值时) ## 容器镜像 ``` ghcr.io/vinny1892/octantis:latest ``` 在每次推送到 `master` 时由 CI 自动发布。生产环境请固定到特定提交 SHA(例如:`ghcr.io/vinny1892/octantis:dba131d`)。 ## 运行 Octantis ### 本地 Kind 集群(快速启动) 体验 Octantis 的最快方式。`dev/` 目录包含用于创建 Kind 集群的脚本,内置完整的可观测性栈(Prometheus、Grafana、Mimir、OTel Collector、MetalLB、MCP 服务器和 Octantis 本身)——运行端到端本地所需的一切。 ``` # 先决条件:Docker, Kind, kubectl, Helm # 1. 配置密钥 export OPENROUTER_API_KEY="sk-or-..." export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..." export DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..." # 2. 创建集群 bash dev/setup.sh ``` 详见 [`dev/README.md`](dev/README.md)(架构、密钥、故障排查等完整说明)。 ### 现有 Kubernetes 集群 若要将 Octantis 部署到真实集群(EKS、GKE、AKS 等),请使用示例清单文件: ``` # 1. 创建密钥 kubectl create secret generic octantis-secrets \ --namespace monitoring \ --from-literal=ANTHROPIC_API_KEY=sk-ant-... \ --from-literal=GRAFANA_MCP_API_KEY=glsa_... # 2. 部署 MCP 服务器 + Octantis kubectl apply -f examples/kubernetes/ ``` 详见 [`examples/kubernetes/`](examples/kubernetes/) 中的清单文件。在 ConfigMap 中自定义镜像、模型和通知设置。 镜像:`ghcr.io/vinny1892/octantis:latest` ### 从源码构建 要在集群外运行 Octantis(需要 Python 3.12+ 和 [`uv`](https://docs.astral.sh/uv/)): ``` uv sync cp .env.example .env # edit with your keys uv run octantis ``` 详见 [Onboarding — Local Development](.github/ONBOARDING.md#local-development) 中的完整设置说明。 ## 配置 所有设置均通过环境变量控制。完整列表请参考 [`.env.example`](.env.example)。 关键配置项: | 变量 | 默认值 | 描述 | |---|---|---| | `LLM_PROVIDER` | `anthropic` | `anthropic`、`openrouter` 或 `bedrock` | | `LLM_MODEL` | `claude-sonnet-4-6` | 模型 ID(例如:`anthropic/claude-sonnet-4-6` 用于 OpenRouter,`global.anthropic.claude-opus-4-6-v1` 用于 Bedrock) | | `GRAFANA_MCP_URL` | — | Grafana MCP SSE 端点(可观测性插槽) | | `K8S_MCP_URL` | — | Kubernetes MCP SSE 端点(平台插槽) | | `DOCKER_MCP_URL` | — | Docker MCP SSE 端点(平台插槽) | | `AWS_MCP_URL` | — | AWS MCP SSE 端点(平台插槽) | | `OCTANTIS_PLATFORM` | (auto) | 强制指定平台:`k8s`、`docker` 或 `aws` | | `MIN_SEVERITY_TO_NOTIFY` | `MODERATE` | 触发通知的最小严重性等级 | | `LANGUAGE` | `en` | 输出语言(`en`、`pt-br`) | | `SLACK_WEBHOOK_URL` | — | Slack 通知(留空则禁用) | | `DISCORD_WEBHOOK_URL` | — | Discord 通知(留空则禁用) | ## MCP 服务 Octantis 通过 SSE 连接 MCP 服务器,采用 **插槽模型**(最多 1 个可观测性插槽 + 1 个平台插槽): | 服务器 | 插槽 | 镜像 | 用途 | |---|---|---|---| | Grafana MCP | observability | `ghcr.io/vinny1892/mcp-grafana:latest` | PromQL、LogQL、仪表板查询 | | Kubernetes MCP | platform | `ghcr.io/containers/kubernetes-mcp-server:latest` | Pod 状态、事件、部署、日志 | | Docker MCP | platform | (community/custom) | 容器检查、日志、资源统计 | | AWS MCP | platform | (community/custom) | EC2 状态、CloudWatch 指标、ECS 任务 | 平台会根据 OTLP 资源属性自动识别(K8s → Docker → AWS),也可通过 `OCTANTIS_PLATFORM` 覆盖。 ## 严重等级 | 等级 | 含义 | 动作 | |---|---|---| | `CRITICAL` | 服务中断 / 数据丢失风险 | 通知 + 修复方案 | | `MODERATE` | 降级 / 趋势恶化 | 通知 + 修复方案 | | `LOW` | 轻微异常 | 仅记录日志 | | `NOT_A_PROBLEM` | 预期或误报 | 仅记录日志 | ## 贡献 详见 [CONTRIBUTING.md](.github/CONTRIBUTING.md)。 ## 文档 - [架构概览](.github/OVERVIEW.md) — 数据流和设计决策 - [过滤管道](.github/PIPELINE.md) — 事件摄取与预过滤 - [LangGraph 代理](.github/AGENT.md) — 调查、分析、规划与通知 - [入门指南](.github/ONBOARDING.md) — 设置指南与代码映射 - [许可协议](LICENSING.md) — 双许可模型(AGPL-3.0 核心、Apache-2.0 SDK)、计划层级与 AGPL 常见问题
标签:API集成, AWS, Discord, DLL 劫持, Docker, DPI, GET参数, Grafana, LLM, MCP, OpenTelemetry, OTLP, Slack, Unmanaged PE, 事件分类, 云监控, 修复建议, 可观测性, 告警通知, 多通道协议, 大语言模型, 安全防御评估, 日志指标收集, 智能基础设施监控, 监控代理, 自主调查, 自动化根因分析, 逆向工具