基于观测云,使用 SkyWalking 实现 RUM、APM 和日志联动分析

    基于观测云,使用-SkyWalking-实现-RUM、APM-和日志联动分析.png

    应用场景

    分布式应用环境下,常常通过日志和链路来排查问题。观测云可以实现用户通过 Web 端进行的请求,通过 traceId 与后端的接口关联起来,如果后端接口输出了日志,通过 traceId 把链路和日志关联起来,最终形成 RUM、APM 和日志的联动,再运用观测云平台进行综合分析,能非常方便快捷地发现问题、定位问题。
    本文用一个简单容易上手的开源项目,一步一步实现全链路可观测。

    前置条件

    1. 您需要先创建一个观测云账号
    2. springboot 和 vue 应用。
    3. 一台部署了 nginx 的 Linux 服务器。

    环境版本

    • JDK 1.8
    • Vue 3.2
    • DataKit 1.2.19
    • Nginx 1.20.2
    • SkyWalking 8.7.0

    操作步骤

    步骤 1:部署 DataKit

    1.1 安装 Datakit

    登录『观测云』,依次进入『集成』-> 『DataKit』->『Linux』,点击“复制”图标复制安装命令。

    登录 Linux 服务器,执行复制的命令。

    1.2 开通采集器

    开通 RUM,需要让用户远程访问到 DataKit 的 9529 端口,编辑下面文件。

    vi /usr/local/datakit/conf.d/datakit.conf
    

    修改 listen 的值是“0.0.0.0:9529”。

    复制 conf 文件,开通 Skywalking 采集器。

    cd /usr/local/datakit/conf.d/skywalking
    cp skywalking.conf.sample skywalking.conf
    

    开通日志采集器。

    cd /usr/local/datakit/conf.d/log
    cp logging.conf.sample skywalking-service-log.conf
    

    编辑 skywalking-service-log.conf 文件,logfiles 填日志的文件路径,由于要把 jar 部署到 /usr/local/df-demo/skywalking 目录,这里日志路径是 “/usr/local/df-demo/skywalking/logs/log.log”,source 为 skywalking-service-log。

    1.3 重启 DataKit

    systemctl restart datakit
    

    步骤 2 :部署应用

    2.1 部署后端服务

    下载 skywalking-demo 项目,使用 Idea 打开,点击右边“package”,即可生成 skywalking-user-service.jar 文件。

    上传 skywalking-user-service.jar 到 /usr/local/df-demo/skywalking 目录。

    特别说明:1、项目需要添加依赖

            <dependency>
                <groupId>org.apache.skywalking</groupId>
                <artifactId>apm-toolkit-logback-1.x</artifactId>
                <version>8.7.0</version>
            </dependency>
    

    2、输出日志,需要把 traceId 输出。

    2.2 部署 web

    进入 web 项目的目录,命令行执行“cnpm install”。

    执行 “npm run build”生成部署文件。

    复制 disk 目录下的文件到服务器的“/usr/local/web”目录。

    编辑 /etc/nginx/nginx.conf 文件,增加如下内容。

       location / {
                root   /usr/local/web;
                try_files $uri $uri/ /index.html;
                index  index.html index.htm;
    
            }
    
    

    nginx 重新加载配置。

    nginx -s reload
    

    浏览器输入 Linux 服务 IP,访问前端界面。

    步骤 3 :开启 APM

    下载 SkyWalking

    把 agent 目录上传到 Linux 的 /usr/local/df-demo/skywalking 目录。

    如果微服务使用了 springcloud gateway,必须把 agent/optional-plugins/ 目录下的 apm-spring-cloud-gateway-2.1.x-plugin-8.7.0.jar 和 apm-spring-webflux-5.x-plugin-8.7.0.jar 复制到 skywalking-agent/plugins/ 目录下,注意 apm-spring-cloud-gateway 的版本需要和具体使用的 springcloud gateway 版本相对应。

    cp /usr/local/df-demo/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.1.x-plugin-8.7.0.jar /usr/local/df-demo/skywalking/agent/plugins/
    cp /usr/local/df-demo/skywalking/agent/optional-plugins/apm-spring-webflux-5.x-plugin-8.7.0.jar /usr/local/df-demo/skywalking/agent/plugins/
    

    执行如下命令,启动后端服务,点击前端界面的按钮,调用后端服务。

    cd /usr/local/df-demo/skywalking
    java  -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking-log  -Dskywalking.collector.backend_service=localhost:13800 -jar skywalking-user-service.jar
    

    登录『观测云』,进入『应用性能监测』查看服务、链路及拓扑图。

    步骤 4 :开启 RUM

    登录『 观测云』,进入『用户访问监测』,新建应用 skywalking-web-demo ,复制下方 JS。

    修改 /usr/local/web/index.html,把 JS 复制到 head 中,修改 datakitOrigin 为 DataKit 的地址,这里是 Linux 的 IP 地址加 9529 端口,allowedTracingOrigins 为后端接口的地址,这里是 Linux 的 IP 地址加 8090 端口。

    参数说明

    • datakitOrigin:数据传输地址,这里是 datakit 的域名或 IP,必填。
    • env:应用所属环境,必填。
    • version:应用所属版本,必填。
    • trackInteractions:是否开启用户行为统计,例如点击按钮、提交信息等动作,必填。
    • traceType:trace类型,默认为 ddtrace,非必填。
    • allowedTracingOrigins:实现 APM 与 RUM 链路打通,填写后端服务的域名或 IP ,非必填。

    点击前端界面的按钮。登录『 观测云』->『用户访问监测』,点击 “skywalking-web-demo”,查看 UV、PV、会话数、访问的页面等信息。

    步骤 5 :全链路可观测

    登录『 观测云』->『用户访问监测』,点击 “skywalking-web-demo”进入后点击“查看器”,选择“view”,查看页面调用情况,然后点击“route_change”进入。

    选择“链路”。

    点击一条请求记录,可以观测“火焰图”、“Span 列表”、“服务调用关系”及这条链路调用产生的日志。

    联系我们

    加入社区

    微信扫码
    加入官方交流群

    立即体验

    在线开通,按量计费,真正的云服务!

    立即开始

    选择观测云版本

    代码托管平台