# enterprise-ops-agent **Repository Path**: shiqi_2/enterprise-ops-agent ## Basic Information - **Project Name**: enterprise-ops-agent - **Description**: 企业级安全自动化运维 Agent,聚焦大模型在运维场景中的安全落地与工程化实践。 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://ops.zging.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-07 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: 企业级安全自动化运维Agent, Agent ## README # enterprise-ops-agent 面向多服务器智能运维的 Agent 项目,已拆分为中心端和客户端两个服务: - `center-server`:多服务器智能运维的编排中心和分析决策中心,负责异常检测、记忆召回、LLM 建议、规则审批、人工审批、审计、Dashboard 和指标。 - `agent-client`:部署在每台目标服务器上,负责本机 CPU/内存/磁盘/进程状态采集,以及接收中心端审批后的本机动作执行。 ## 目录结构 ```text enterprise-ops-agent ├── agent-client │ ├── apps │ ├── internal │ ├── config │ └── README.md ├── center-server │ ├── apps │ ├── internal │ ├── config │ └── README.md ├── docs ├── deploy ├── README.md └── go.work ``` ## 服务边界 `Center Server` 保留原有单体中的编排和决策闭环: ```text Agent Client 采集 -> Center 检测 -> 记忆召回 -> LLM 建议 -> 规则审批 -> Agent Client 执行 -> Center 审计/反馈 ``` `Agent Client` 暴露本机 API: - `GET /healthz`:存活检查 - `GET /readyz`:就绪检查 - `GET /api/state`:采集本机状态 - `POST /api/actions`:执行中心端下发的审批动作 `Center Server` 暴露运营 API: - `GET /`:Web Dashboard - `GET /api/dashboard`:运行快照、时间线、审计日志 - `GET /api/fleet/dashboard`:多服务器总览 - `GET /api/agents/:host_id/dashboard`:单台服务器详情 - `POST /api/feedback`:人工复盘反馈 - `POST /api/approvals/:id/approve`:人工审批通过 - `POST /api/approvals/:id/reject`:人工审批驳回 - `GET /healthz`、`GET /readyz`、`GET /metrics` ## 本地运行 先启动一个 Agent Client: ```powershell cd agent-client go run .\apps\agent-client ``` 再启动 Center Server: ```powershell cd center-server $env:CENTER_AGENT_ENDPOINTS='http://localhost:7070' go run .\apps\center-server ``` 访问 Dashboard: ```text http://localhost:8080 ``` 默认开启 Agent 注册表,Center Server 会使用静态 `CENTER_AGENT_ENDPOINTS` 和已注册在线 Agent 进行采集和动作下发。需要单进程本机演示时,可以设置 `CENTER_ENABLE_AGENT_REGISTRY=false`,让中心端退回本机 `mock/real` 采集和执行模式。 ## Agent 注册与心跳 Agent Client 启动后会读取 `registration` 配置,调用 Center Server 注册接口,然后按间隔发送心跳: ```text Agent Client -> Center Server: POST /api/agents/register Agent Client -> Center Server: POST /api/agents/heartbeat Center Server -> Agent Client: GET /api/state Center Server -> Agent Client: POST /api/actions ``` Center Server 保存注册信息到内存注册表,并在 Dashboard 的“Agent Client 节点”区域展示在线状态、Host ID、主机名、Endpoint、系统版本、最近心跳时间和最近一次采集指标。在线 Agent 的 `endpoint` 会参与中心端采集和动作下发。 中心端后台巡检现在按在线 Agent 逐台执行: ```text 遍历在线 Agent -> 拉取状态 -> 异常检测 -> LLM/降级建议 -> 规则审批 -> 下发动作 -> 按 host_id 写审计和快照 ``` 多服务器接口: ```text GET /api/fleet/dashboard GET /api/agents GET /api/agents/{host_id}/dashboard GET /api/agents/{host_id}/state GET /api/agents/{host_id}/audit-logs GET /api/agents/{host_id}/timeline ``` ## 配置 中心端配置:`center-server/config/config.yaml` 关键项: ```yaml center: enable_agent_registry: true agent_endpoints: - http://localhost:7070 agent_request_timeout_sec: 5 registration_token: agent_offline_after_sec: 30 web: enabled: true listen_addr: :8080 ``` 客户端配置:`agent-client/config/config.yaml` 关键项: ```yaml registration: center_url: http://localhost:8080 host_id: token: endpoint: http://localhost:7070 heartbeat_interval_sec: 10 version: dev agent: mode: real web: enabled: true listen_addr: :7070 ``` 环境变量 `CENTER_AGENT_ENDPOINTS` 支持逗号分隔多个客户端地址。 客户端常用环境变量: ```bat set AGENT_CENTER_URL=http://localhost:8080 set AGENT_HOST_ID=server-001 set AGENT_TOKEN=change-me set AGENT_ENDPOINT=http://localhost:7070 ``` 如果中心端设置了 `CENTER_REGISTRATION_TOKEN` 或 `center.registration_token`,客户端 `AGENT_TOKEN` 必须一致。 ## 部署 部署文件位于 `deploy/`: - `deploy/center-server.Dockerfile` - `deploy/agent-client.Dockerfile` - `deploy/docker-compose.yml` Docker Compose 示例会启动一个 `agent-client` 和一个 `center-server`,中心端通过 `CENTER_AGENT_ENDPOINTS=http://agent-client:7070` 管理客户端。 ## 当前说明 这次拆分保留了原有核心闭环和 Dashboard。当前远端模式按配置顺序使用第一个可用 Agent Client 完成采集和执行;后续可以在此基础上扩展为多节点注册、节点选择、按节点并行检测和审批工单持久化。