window下如何私有化部署sentry

569 阅读4分钟

window 10 的 sentry 私有化部署

大家好,我是前端老杨。今天给大家分享 sentry 的快速私有化部署内容

参考文档:develop.sentry.dev/self-hosted…

试过不开启代理,安装包一直卡住。所以前提,需要电脑能科学上网

安装步骤

  1. 启用 windows WSL 功能
  • 输入以下命令检查电脑是否开启了 wSL

image.png

  • 如果没有打开,“控制面板” → “程序和功能” → “启用或关闭Windows功能”,勾选“适用于Linux的Windows子系统”和“虚拟机平台”,点击“确定”后重启电脑

image.png 2. window 商店安装 ubuntu20

ubuntu 是基于 liunx 内核开发完整的操作系统

image.png

  1. 进入 ubuntu 终端
  • 安装 docker,参考文档:docs.docker.com/engine/inst… 直接按照文档里步骤和命令就行,这里apt-get update升级可能会因为网络,无法升级成功,建议开启翻墙软件

  • 安装 docker-compose,请参考文档:docs.docker.com/compose/ins…

  • 修改 docker 镜像源,self-hosted里的有些镜像无法从原镜像源下载,修改成国内镜像源解决问题

sudo vi /etc/docker/daemon.json

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://mkoo7bej.mirror.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://your_preferred_mirror",
    "https://dockerhub.icu",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]
}
  1. 下载私有化部署仓库代码
  • 官方镜像仓库:https://github.com/getsentry/self-hosted.git,如果打不开可以使用 https://gitee.com/newxiaoming/self-hosted
  1. 安装项目依赖,启动项目

安装依赖过程,很漫长,安装尾声,提示需要你创建的一个 sentry 账号,用于后面网页端(http://localhost:9000/)进行登录

cd self-hosted

// 如果提示磁盘不够,无法在 ubuntu 上运行安装 sentry 项目;请到 WSL settings 的应用里,设置子系统内存大小;大概需要 `14G`

sudo ./install.sh

// 如果不添加sudo,可能会提示无权限,也可以添加一个全局docker组,然后给当前用户添加进去
// 官方 --wait 的话,会一直等待,我这里改成 -d,让他后台运行

sudo docker compose up -d

输入docker ps -a查看所有容器是否启动成功 image.png

  1. 访问项目

http://localhost:9000/,输入安装过程中创建的账号和密码

image.png

vue 项目接入 sentry

  1. 登录项目后,在projects中创建项目。选择vue框架,创建完毕之后会有 vue 项目接入文档。如果不小心关掉页面,也可以重新点击项目名称进入指导文档

image.png

  1. 也可以直接修改指导文档地址:http://localhost:9000/organizations/sentry/projects/javascript-vue-demo/?guidedStep=1&project=2, 你可以修改项目 id 为你的项目,javascript-vue-demo 为你项目名称
  2. 项目里安装 sentry
npm install --save @sentry/vue
  1. 配置 sentry
import Vue from "vue";
import Router from "vue-router";
import * as Sentry from "@sentry/vue";

const app = createApp(App);
Sentry.init({
  app,
  dsn: "http://25d6ed7f4860025bd338d0c62a9424b4@localhost:9000/2",
  // Setting this option to true will send default PII data to Sentry.
  // For example, automatic IP address collection on events
  sendDefaultPii: true,
});
app.use(router);
app.mount("#app");

dns的获取,有以下两个地方

  • 一开始指导文档里面会有的
  • 二是点击项目设置图标,进行设置菜单,选择DSN

image.png

  1. 上传 sourcemp 方便定位代码错误

官方文档

可以使用官方脚手架安装指引,自动安装;使用了 vite 框架,也可以手动进行配置 这里我以官方脚手架安装为准

npx @sentry/wizard@latest -i sourcemaps
  • 目前最新版本,要求 node >= 18.20.6
  • 安装过程需要选择私有化部署,填写本地网址:http://localhost:9000/
  • 因为我的项目使用了 pnpm,自动安装 npm install @sentry/vite-plugin 会失败,可以先手动使用 pnpm 安装,后再重新走下流程就可以选择跳过那一步
  1. 错误代码测试

这里参考官网例子,增加如下代码

<template>
  <button @click="throwError">测试sentry Throw error</button>
</template>
<script setup>
function throwError() {
  throw new Error("Sentry Error");
}
</script>
<style scoped></style>

就会出现以下错误提示

image.png

  1. 设置异常提醒邮箱为 qq 邮箱

文档说明:develop.sentry.dev/self-hosted…

ps:和官方有的出入地方

  1. 文档中说还需要修改 .env 中SENTRY_MAIL_HOST,实际测下来不需要修改; 只需要修改 self-hosted/sentry/config.yml
  2. 修改完配置也只需要 docker compose down 在 docker compose up 就行;不需要重新编译 ./install.sh
  • 这是我的qq邮箱配置 self-hosted/sentry/config.yml
# mail.backend: "smtp" # Use dummy if you want to disable email entirely
mail.host: "smtp.qq.com"
mail.port: 587
mail.username: "XXXXX@qq.com" # 这两个参数分别是的qq邮箱和授权码
mail.password: "****vmbbuhc****"
# NOTE: `mail.use-tls` and `mail.use-ssl` are mutually exclusive and should not
#        appear at the same time. Only uncomment one of them.
mail.use-tls: true
# mail.use-ssl: false

# NOTE: The following 2 configs (mail.from and mail.list-namespace) are set
#       through SENTRY_MAIL_HOST in sentry.conf.py so remove those first if
#       you want your values in this file to be effective!

# The email address to send on behalf of
# mail.from: 'root@localhost' or ...
mail.from: "XXX@qq.com"
mail.list-namespace: "localhost"
  • 先关掉再重新运行
docker compose down
docker compose up -d

可以去web端里,先发一个测试邮件进行验证配置是否正确

image.png

最终效果如下:

image.png

总结

  • 如果不想私有化部署,也可以使用 sentry.io 在线注册管理,可以参考这篇文档:juejin.cn/post/749124…
  • mac 电脑,只需要安装好 docker 和 docker compose,后续步骤都是一样
  • 更多的使用技巧和功能,可以查看官方文档
  • vue 接入代码实例,在 https://gitee.com/banmaxiaobai/edu-monitorsentry 分支上