Vinny1892/octantis
GitHub: Vinny1892/octantis
智能基础设施监控代理,利用 LLM 与 MCP 自动化调查分类并生成修复建议。
Stars: 2 | Forks: 0
# Octantis
[](https://github.com/Vinny1892/octantis/actions/workflows/ci.yml)
[](https://github.com/Vinny1892/octantis/actions/workflows/mcp-grafana.yml)
[](https://github.com/Vinny1892/octantis/pkgs/container/octantis)
[](https://www.python.org/downloads/)
[](LICENSE)
[](packages/octantis-plugin-sdk/LICENSE)
[](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, 事件分类, 云监控, 修复建议, 可观测性, 告警通知, 多通道协议, 大语言模型, 安全防御评估, 日志指标收集, 智能基础设施监控, 监控代理, 自主调查, 自动化根因分析, 逆向工具