背景
泛微 E9 是企业常见的 OA 协同办公系统,承载流程审批、门户访问、表单提交、组织协作等核心业务。系统运行一段时间后,常见问题包括页面访问慢、流程提交卡顿、接口异常、日志排查困难等。
通过将泛微 E9 接入观测云,可以从后端 APM、前端 RUM、日志、主机指标等多个维度进行统一观测,实现从用户访问体验到后端调用链路的完整分析。

整体方案
整体接入分为两部分:后端 APM 在 Resin JVM 启动参数中加载 dd-java-agent.jar,采集 Java 链路;前端 RUM 在泛微 E9 前端入口 HTML 的 head 首行插入观测云 RUM SDK,采集用户访问体验。

一、后端 APM 接入
1. 下载 Java Agent
进入 DataKit 数据目录:
cd /usr/local/datakit/data
下载观测云 Java Agent:
wget -O dd-java-agent.jar https://static.guance.com/dd-image/dd-java-agent.jar
确认文件存在:
ls -lh /usr/local/datakit/data/dd-java-agent.jar
2. 定位 Resin 配置目录
泛微 E9 的 Resin 配置文件位于:data/weaver/Resin4/conf
进入目录后,找到 resin.properties 文件。如下图所示。

修改前建议备份:
cp resin.properties resin.properties.bak.$(date +%Y%m%d%H%M%S)
3. 修改 resin.properties
打开文件:data/weaver/Resin4/conf/resin.properties
找到 jvm_args 配置行。jvm_args 位于 resin.properties 的「Arg passed directly to the JVM」配置段下,观测云 Java Agent 参数应追加在该行已有 JVM 参数末尾。如下图所示。

需要追加的参数:
-javaagent:/usr/local/datakit/data/dd-java-agent.jar -Ddd.logs.injection=true -Ddd.env=dev -Ddd.service=OA95 -Ddd.agent.host=127.0.0.1 -Ddd.agent.port=9529
示例:
jvm_args : -Xmx5550m -Xms5550m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -javaagent:wagent.jar -Djdk.tls.ephemeralDHKeySize=2048 -Dfile.encoding=GBK -javaagent:/usr/local/datakit/data/dd-java-agent.jar -Ddd.logs.injection=true -Ddd.env=dev -Ddd.service=OA95 -Ddd.agent.host=127.0.0.1 -Ddd.agent.port=9529
注意事项:
- 不要删除原有
jvm_args参数。 - 不要覆盖原有
-javaagent:wagent.jar。 - 新增参数建议追加到原
jvm_args行末尾。 - 参数之间必须用空格分隔。
- 尽量保持在同一行,避免 Resin 解析异常。
-Ddd.service=OA95可按实际系统命名调整。- 生产环境建议将
-Ddd.env=dev改为prod。
4. 重启泛微 E9 / Resin
保存配置后,按现场标准流程重启泛微 E9 或 Resin 服务。
重启后检查 Java 进程参数:ps -ef | grep java | grep dd-java-agent
如果能看到 -javaagent:/usr/local/datakit/data/dd-java-agent.jar,说明 Java Agent 已成功加载。
二、前端 RUM 接入
1. 前置条件
前端接入前,需要先注册并登录观测云账号,进入「用户访问监测」,新建一个前端应用,选择「CDN 同步载入」,然后复制系统生成的 SDK 代码。
控制台位置:用户访问监测 > 新建应用 > CDN 同步载入
观测云控制台会提示:单页应用建议将代码复制粘贴到 HTML 文件 head 标签的首行;多页应用建议将代码复制粘贴到公共 head 模板文件的首行。
2. 定位泛微 E9 前端入口文件
泛微 E9 前端入口目录:data/weaver/ecology/wui
进入目录:cd data/weaver/ecology/wui
找到文件:index.html
修改前建议备份:
cp index.html index.html.bak.$(date +%Y%m%d%H%M%S)

3. 插入 RUM SDK 代码
打开 data/weaver/ecology/wui/index.html,将观测云控制台生成的代码复制到 HTML 文件 head 标签的首行。
示例位置:<head> 的第一行放置观测云 RUM SDK,后续再保留原有页面内容。
实际代码以观测云控制台生成内容为准,核心参数包括:
applicationId:前端应用 ID。site:观测云 RUM 数据接收地址,例如https://rum-openway.guance.com。clientToken:观测云自动生成的 Client Token。env:环境标识,建议生产为prod。service:前端服务名,建议使用fanwei-e9-web。version:版本号,例如1.0.0。sessionSampleRate:会话采样率。sessionReplaySampleRate:会话回放采样率。traceType:链路追踪类型,建议与后端兼容,例如ddtrace。
三、前后端链路关联
如果希望从前端 RUM 请求跳转到后端 APM Trace,需要同时满足:

- 后端已接入 Java APM。
- 前端 RUM SDK 已开启链路追踪。
traceType使用与后端兼容的类型,例如ddtrace。allowedTracingOrigins中加入泛微 E9 后端接口域名。- 前端访问的接口能够携带链路追踪 Header。
- 后端 Java Agent 能接收并继续传递 Trace 上下文。
如果泛微 E9 是内网访问地址,也应将对应域名或 IP 加入允许列表。
总结
通过本次接入,后端无需改造业务代码即可完成 Java APM 链路采集,前端可同步采集页面加载、资源请求、接口请求、JS 错误及会话回放等数据,实现从用户访问体验到后端服务调用链路的全流程追踪。针对页面加载慢、业务流程慢、接口异常等问题,可更快速定位原因并提升排障效率。同时,本次接入将沉淀形成标准化实施步骤,便于后续复制推广至测试、生产及其他泛微 E9 环境。
