ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何为 SurfSense 后端启用 PostHog 服务端事件上报?

如何为 SurfSense 后端启用 PostHog 服务端事件上报? 如何为 SurfSense 后端启用 PostHog 服务端事件上报【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSenseSurfSense 的 Web 前端只能捕获浏览器里发生的事件而 MCP 客户端、个人访问令牌PAT脚本和 Celery 后台任务这类流量浏览器根本看不到。SurfSense 后端内置了一套服务端产品分析Product Analytics能力可以把这些服务端真实事件会话、文档摄取、连接器索引、计费、自动化上报到 PostHog。该能力完全可选只要POSTHOG_API_KEY未设置所有上报调用都是静默的空操作不会报错也不会产生任何网络请求。本文说明如何在本地开发栈和生产 Docker Compose 部署中开启它以及如何确认事件确实到达。配置前提与前端共用同一个项目密钥启用之前只需要确认一件事使用与前端NEXT_PUBLIC_POSTHOG_KEY相同的项目密钥project key。这样服务端事件才能合并到 Web 应用已经通过用户 id 识别出的同一批 PostHog persons 上——后端每个事件的distinct_id固定取str(user.id)与前端识别逻辑对应。本地开发环境写入surfsense_backend/.env本地开发栈的 compose 文件读取surfsense_backend/.env在文件中追加三项配置POSTHOG_API_KEYphc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx POSTHOG_HOSThttps://us.i.posthog.com POSTHOG_AI_PRIVACY_MODEtrue各变量的适用条件POSTHOG_API_KEY你的 PostHog 项目密钥必须与前端NEXT_PUBLIC_POSTHOG_KEY一致。不设置时后端分析整体关闭这是设计行为而非故障。POSTHOG_HOSTPostHog 服务端点默认值就是https://us.i.posthog.com见 后端配置 中的读取逻辑。自建self-hostedPostHog 实例时改为你的地址。POSTHOG_AI_PRIVACY_MODE默认true。该模式下 LLM 分析回调只上报指标不发送$ai_input/$ai_output_choices中的提示词和补全正文——因为聊天内容包含用户的私有文档。只有在你确认需要把 LLM 提示词与补全正文发到 PostHog 的 AI observability 视图时才设为false。生产部署写入docker/.env生产 composedocker/docker-compose.yml中backend、celery_worker、celery_beat三个服务都通过env_file读取docker/.env因此只需把上面三项追加到docker/.env无需修改任何 compose 文件。这三个服务分别对应 API、Celery worker 和 beat事件无论来自哪条链路都会带上相同的上报配置。重启服务并验证事件上报写入配置后按常规方式重启对应的 compose 栈即可本地用开发 compose 文件生产用docker compose -f docker/docker-compose.yml重启让新环境变量进入 API、Celery worker 和 beat 进程。客户端是惰性创建的不在导入时初始化而是在 API 或某个 Celery worker 进程首次触发 capture 时才构建这样在 Celery 的 prefork 模型下每个 worker 进程各建各的客户端不会受fork()影响。验证时到 PostHog 的项目界面中触发一次真实操作一次聊天请求、一次连接器索引、一次文档摄取然后按文档给出的事件契约核对每个后端事件都带sourcebackend属性据此与前端捕获的事件区分开事件携带auth_method和client属性用于入口归因client由认证主体推导PAT 为pat系统调用为对应来源其余为web事件发送时带disable_geoiptrue即服务器 IP 不会覆盖该 person 的真实客户端推导的位置——这是你应当看到的行为若发现位置被服务器 IP 改写说明配置未生效触发一次 LangGraph 聊天后检查是否出现按 turn 和 chat id 归键的$ai_generation/$ai_span追踪经 PostHog 的 LangChain 回调处理器发出。若事件中出现了用户内容类字段工作区名、连接器标题、文档标题、提示词、原始查询属于违反文档的取值约定文档明确要求事件属性保持低基数不得把用户内容作为事件属性上报。实现位置与限制上报逻辑集中在 surfsense_backend/app/observability/analytics.py对外暴露capture、capture_for、group_identify、is_enabled、shutdown等函数。两个与运维相关的约束值得知道capture()是非阻塞的队列追加真正的网络 I/O 发生在后台消费线程shutdown()会 flush 队列并 join 消费线程必须在进程退出前运行否则队列中未发出的事件会丢失。事件捕获被 try/except 包裹分析上报永远不会打断一个正在处理的请求。另外注意边界这套服务端分析与文档中的 OpenTelemetry 链路是两条独立通道见 observability 文档 的 Product Analytics (PostHog) 一节SURFSENSE_ENABLE_OTEL等 OTel 配置不会影响 PostHog 上报反之亦然。前端/浏览器的 OpenTelemetry 与日志导出不在该文档支持范围内。【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSense创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表