Vue 集成编辑

本文档介绍了如何在 Vue 应用程序中使用实时用户监控 JavaScript 代理。

支持的版本编辑

此集成支持 Vue.js 版本 ≥ 3.0

如果您使用的是 Vuejs 版本 < 3.0,请使用 @elastic/apm-rum-vue 1.x 来检测您的应用程序。详细信息可在 先前版本 中找到。

安装 Elastic APM Vue 包编辑

@elastic/apm-rum-vue 包作为依赖项安装到您的应用程序中

npm install --save @elastic/apm-rum-vue

使用 APM 插件编辑

app.use(ApmVuePlugin, options)

选项编辑

  • config (必需) - RUM 代理 配置选项.
  • router (可选) - Vue 路由器的实例。如果提供,将开始捕获页面加载和 SPA 导航事件作为事务,其路径作为其名称。
  • captureErrors (可选) - 如果启用,将安装一个全局 Vue 错误处理程序以捕获组件内部的渲染错误。默认为 true。插件捕获组件名称、生命周期钩子和文件名(如果可用)作为错误上下文的一部分。

检测您的 Vue 应用程序编辑

该包公开了 ApmVuePlugin,它是一个 Vue 插件,可以使用 Vue.use 方法安装到您的应用程序中。

import { createApp, defineComponent, h } from 'vue'
import { createRouter, createWebHashHistory } from 'vue-router'
import { ApmVuePlugin } from '@elastic/apm-rum-vue'
import App from './App.vue'

const Home = defineComponent({
  render: () => h("div", {}, "home")
})

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    { path: '/', component: Home }
  ]
})

createApp(App)
  .use(router)
  .use(ApmVuePlugin, {
    router,
    config: {
      serviceName: 'app-name',
      // agent configuration
    }
  })
  // app specific code
  .mount('#app')

在组件内部访问代理实例编辑

可以使用 this.$apm 在所有组件内部访问代理实例

<template>
  <div>Component timings as span</div>
</template>

<script>
export default {
  data() {
    return {
      span: null
    }
  },
  created() {
    this.span = this.$apm.startSpan('create-mount-duration', 'custom')
  },
  mounted() {
    this.span && this.span.end()
  }
}
</script>

ApmVuePlugin 期望路由器选项是 VueRouter 的实例,因为它使用 导航守卫 功能。

插件初始化后,页面加载和 SPA 导航事件都将被捕获为事务,其路径作为其名称,page-loadroute-change 作为类型。