ClouisleClouisle

监控与日志

观察服务健康、任务队列、运行指标、用量和审计事件

运维监控分为基础设施状态、产品运行状态和安全审计三层。

服务与队列

持续检查 frontend、api、worker、sandbox-worker、beat、PostgreSQL、Redis 和 Qdrant。重点关注 API 5xx、数据库连接、Redis 队列积压、知识库处理失败、Sandbox 超时/磁盘上限和 Beat 是否重复运行。

队列按职责分开,排查积压时要先确认是哪一条:

队列消费服务积压时的表现
defaultworker通知延迟、用量重置滞后、审计归档堆积
agentworker后台 AgentRun 长时间停留在运行中
knowledgeworker文档长时间停留在处理中
workflowworker工作流运行排队
sandboxsandbox-worker代码执行与 Agent 代码工具排队
docker compose ps
docker compose logs -f api worker sandbox-worker beat frontend

Kubernetes 使用 kubectl get pods、kubectl logs -f deployment/api 等命令查看。

数据库健康

PostgreSQL 是统计、检索词法通道和审计的共同依赖,除连接状态外还要看:

  • pg_stat_statements(镜像已预载并设置 track=all)中最耗时的语句,用于发现缺失索引的查询。
  • 无效索引:CONCURRENTLY 构建失败会留下 INVALID 索引,IF NOT EXISTS 不会重建它。
  • 仪表盘与统计接口的响应时间:变慢且 CPU 不高通常意味着走了顺序扫描而非覆盖索引。
SELECT query, calls, mean_exec_time, total_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 20;

SELECT c.relname
FROM pg_class c
JOIN pg_index i ON i.indexrelid = c.oid
WHERE NOT i.indisvalid;

索引创建、清理与验证步骤见数据库维护与索引调优。

观测控制台

产品内置的可观测性控制台位于监控 > 可观测性(路由 /dashboard/observability),数据由 GET /api/v1/admin/observability 下的接口提供。读端点需要 admin:dashboard:access 权限;告警确认、静默与规则更新需要 admin:observability:manage 权限。控制台没有 Prometheus 风格的 /metrics 端点,也没有内建 Prometheus/Grafana/Datadog/ELK 集成;外部监控只能采集日志并轮询健康端点与这组观测接口。

控制台按六个视图组织,排查时先选视图再看细节:

视图回答的问题数据来源
运行结果成功/失败率、耗时分布、最近失败GET /summary、GET /runs
按需 trace某次 AgentRun/工作流运行内部发生了什么GET /runs/{agent|workflow}/{run_id}
模型/工具/检索依赖哪家供应商、哪个工具或检索环节在拖慢或报错GET /dependencies
队列哪个队列在积压、哪些 Worker 在线GET /queues
基础设施数据库、Redis、Qdrant、实例健康GET /infrastructure
告警当前活跃告警、规则与静默GET /alerts、GET /alerts/rules
端点参数说明
GET /summaryperiod(15m/1h/24h/7d,默认 1h)、team_id紧凑的运行汇总与趋势;样本不足时百分位数与成功率为 null
GET /runsperiod、team_id、source(all/agent/workflow)、status、error_category、run_id、cursor、limit(1–50,默认 25)仅返回摘要的游标(keyset)分页列表;详情走 GET /runs/{agent|workflow}/{run_id}
GET /dependenciesperiod、team_id在已记录遥测支持时返回模型、工具与检索聚合
GET /queues无有界的当前队列与 Worker 快照
GET /infrastructure无有界基础设施快照、依赖健康状态与安全显示的 pg_stat_statements 查询
GET /alerts、GET /alerts/rules告警列表 status(active/resolved/all)、cursor、limit(1–50,默认 25)规则列表直接返回全部规则
POST /alerts/{id}/acknowledge、POST /alerts/{id}/silence静默需 duration_seconds(60–604800 秒)确认与静默都需要 admin:observability:manage
PUT /alerts/rules/{id}请求体可更新阈值、静默时长与恢复窗口需要 admin:observability:manage

Run 摘要保留 30 天,仅记录 allowlist 字段:时序、状态、模型名、token 数、资源与团队标识、错误码。不存 prompt、消息正文、工具参数与结果、凭据、traceback;无提交时间戳的历史运行不回填。单个 run 最多采集 128 个工具/检索 span,超出部分在 trace 中标记为截断。告警规则在读告警时求值,保留任务走 default Celery 队列。

字段与记录边界的完整说明见可观测性参考。

基础健康检查 GET /api/v1/health 无需认证,供容器健康检查与外部探活使用;它只返回 {"status": "healthy"},不含依赖详情。带依赖详情的基础设施快照走 GET /api/v1/admin/observability/infrastructure(需要 admin:dashboard:access):缺失探针报 unknown,不可用统计不显示为 0。

消息投递日志

飞书与微信的每条出站消息和产物都落在统一队列 integration_deliveries,管理端 Delivery Log(/deliveries)把它们按状态列出。读权限是 admin:integrations:settings:read,接口为 GET /api/v1/admin/deliveries(provider_type、status 可重复筛选,limit 1–100,默认 25)。

用户报告「消息没收到」时,先在这里确认:

  • 记录根本不存在 → 上游没产生投递,检查 Agent 是否完成、能力开关是否启用。
  • status=error → 看 error 与 error_detail,通常是凭据失效、收件人未绑定或产物超过大小上限。
  • status=pending 长时间不动 → 消费该渠道的 Worker 停了;sending 卡住通常是渠道请求超时。
  • status=unavailable → 该集成已被关闭或不属于当前团队。

页面结构、筛选条件和字段含义见 Delivery Log。注意它与站内通知的 notification_deliveries 是两条独立链路:后者只记录 email/webhook/feishu 通知渠道的结果。

产品指标

工作台仪表盘和 Agent/工作流监控页提供对话数、消息数、Token、响应时间、工具调用、工作流运行数、成功率、失败数和平均耗时。按团队和资源权限过滤,不同用户看到的数据范围可能不同。

Clouisle 观测仪表盘
Clouisle 观测仪表盘

审计与告警

审计日志记录操作者、资源、动作、时间和变更前后快照。通知系统可为文档处理失败、工作流失败、Agent 发布、配额接近/超限、异常登录和账户锁定发送站内或外部通知。

日志安全

日志中可能包含 URL、模型错误、用户输入摘要、工具参数和资源 ID。生产环境禁止无保护地公开日志端点,并按组织策略脱敏、保留和归档。

这篇文章对你有帮助吗?

本页目录