解析Sentry Relay 二次开发调试

目录
  • 开发
    • 构建和运行
    • 功能
    • 测试
    • Linting
    • Python和C-ABI
    • 开发Server
    • SSL
    • 与Sentry一起使用
    • 发布管理
    • 变更日志说明
  • 更多

开发

要构建 Relay,我们需要最新的稳定版 Rustcrate 被拆分为具有多个功能的工作区,因此在运行构建或运行测试时,请始终确保传递 --all--all-features 标志。processing 功能还需要 C 编译器和 CMake

要安装开发环境,必须安装 librdkafka 并在 path 上。 在 macOS 上,我们需要使用 brew install librdkafka 安装它,因为安装脚本使用 brew --prefix 来确定正确的位置。

我们使用 VSCode 进行开发。此存储库包含配置代码样式、linter 和有用功能的设置文件。 首次打开项目时,请确保 安装推荐扩展,因为它们将允许编辑器在编码期间提供帮助。

存储库的根目录包含一个 Makefile,其中包含用于开发的有用命令:

  • make check: 运行代码格式检查和 linter。这在打开 pull request 之前很有用。
  • make test: 运行单元测试、集成测试和 Python 包测试(有关更多信息,请参见下文)。
  • make all: 运行所有检查和测试。这会运行在 CI 中也执行的大多数任务。
  • make clean: 删除所有构建工件、virtualenv 和缓存文件。

集成测试要求 RedisKafka 在其默认配置中运行。 获取所有必需服务的最便捷方式是通过 sentry devservices,这需要最新的 Sentry 开发环境。

sentry devservices

https://develop.sentry.dev/services/devservices

构建和运行

重建和运行 Relay 的最简单方法是使用 cargo。根据配置,您可能需要运行 Sentry 的本地实例。

# 第一次初始化 Relay
cargo run --all-features -- config init

# 重建并运行所有功能
cargo run --all-features -- run

标准构建命令也可用作 make 目标。请注意,发布版本仍会生成调试信息。

# 在调试模式下不进行优化构建。
make build

# 使用发布优化和调试信息进行构建。
make release

为了在进行一些更改后快速验证 Relay 是否编译,您还可以使用 cargo check

cargo check --all --all-features

功能

默认情况下,Relay 编译时不使用 processing 模式。 这是用于作为代理运行的中继的配置。有两个可选功能:

  • processing: 启用事件处理(event processing)摄取(ingestion)功能。这允许在配置中启用 processing。启用后,Relay 会将事件生成到 Kafka topic 中,而不是转发到配置的上游。此外,它将执行完整的事件规范化过滤速率限制
  • ssl: 在服务器中启用 SSL 支持。

要启用功能,请将其传递给 cargo 调用。例如,要在启用了 processing 功能的情况下跨所有 workspace crates 运行测试,请运行:

cargo run --features=processing

测试

测试套件包括单元测试、集成测试套件和 Python 包的单独测试套件。单元测试是作为 Rust crates 的一部分实现的,可以通过以下方式运行:

# 测试默认功能
make test-rust

# 为所有功能运行 Rust 测试
make test-rust-all

集成测试套件需要 python。默认情况下,集成测试套件将创建一个 virtualenv,构建启用处理的 Relay 二进制文件,并运行一组集成测试:

# 创建一个新的 virtualenv,构建 Relay 并运行集成测试
make test-integration

# 手动构建和运行单个测试
make build
.venv/bin/pytest tests/integration -k <test_name>

Linting

我们使用来自最新稳定通道的 rustfmtclippy 进行代码格式化和 linting。 要确保正确设置这些工具并使用正确的配置运行,请使用以下 make 目标:

# 格式化整个代码库
make format

# 在整个代码库上运行 clippy
make lint

Python 和 C-ABI

潜在地,还需要将新功能添加到 Python 包中。这首先需要在 C ABI 中公开新功能。 为此,请参阅 Relay C-ABI readme。

  • Relay C-ABI readme

https://getsentry.github.io/relay/relay_cabi/

我们强烈建议在 virtual
environment 中开发和测试 python 包。更新和测试 ABI 后,确保 virtualenv 处于活动状态并安装构建原生库的包。有两种安装方法:

# 安装发布版本,推荐:
pip install --editable ./py

# 安装调试版本,安装速度更快,但运行时慢得多:
RELAY_DEBUG=1 pip install --editable ./py

对于测试,我们使用无处不在的 pytest。 同样,确保您的 virtualenv 处于活动状态并且已安装最新版本的原生库。然后,运行:

# 创建一个新的 virtualenv,安装发布版本并运行测试
make test-python

# 手动运行单个测试
.venv/bin/pytest py/tests -k <test_name>

开发 Server

如果你安装了 systemfdcargo-watchmake devserver 命令可以自动重新加载 Relay

cargo install systemfd cargo-watch
make devserver

SSL

该存储库包含用于开发目的的 SSL-certificate + private key。它有两种格式:一种是 (.pem, .cert) 对,一种是 .pfx (PKCS #12) 文件。

密码,.pfx 文件是 password

与 Sentry 一起使用

要使用现有的 Sentry devserverself-hosted Sentry 安装或 Sentry SaaS 开发 Relay,请将 .relay/config.yml 中的 upstream 配置为 Sentry serverURL。 例如,在本地开发中将 relay.upstream 设置为 http://localhost:8000/

要使用本地 development Sentry 测试 processing 模式,请使用以下配置:

relay:
  # 指向您的 Sentry devserver URL:
  upstream: http://localhost:8000/
  # 监听 3000 以外的端口:
  port: 3001
logging:
  # 启用完整的日志记录和回溯:
  level: trace
  enable_backtraces: true
limits:
  # 在 ^C 上加速 shutdown
  shutdown_timeout: 0
processing:
  # 启用存储规范化的 processing 模式并将数据发布到 Kafka:
  enabled: true
  kafka_config:
    - { name: "bootstrap.servers", value: "127.0.0.1:9092" }
    - { name: "message.max.bytes", value: 2097176 }
  redis: "redis://127.0.0.1"

请注意,Sentry devserver 还在 processing 模式下在端口 3000 上以类似配置启动 Relay。 该 Relay 不会干扰您的开发构建。为确保 SDK 发送到您的开发实例,请更新 DSN 中的端口:

http://<key>@localhost:3001/<id>

发布管理

我们使用 craft 来发布新版本。有两个单独的项目要发布:

  • Relay binary 从根文件夹中发布。在该目录中运行 craft preparecraft publish 以分别创建发布版本并发布它。我们使用日历版本控制并与 Sentry 协调发布。

Relay Python library 和 C-ABIpy/ 子文件夹中发布。切换到该目录并运行 craft preparecraft publish。我们在开发周期中使用语义版本控制和发布。

  • craft

https://github.com/getsentry/craft

  • 日历化版本

https://calver.org

  • 语义版本控制

https://semver.org

变更日志说明

对于暴露给 Python package 的更改,请在 py/CHANGELOG.md 中添加一个条目。这包括但不限于事件规范化PII 清理协议。对于 Relay server 的更改,请在 CHANGELOG.md 的以下标题下添加一个条目:

  • Features: 用于新的用户可见功能。
  • Bug Fixes: 用于用户可见的错误修复。
  • Internal: 用于内部操作中的功能和错误修复,尤其是 processing 模式。

changelog 条目中,请添加指向此 PR 的链接(考虑更具描述性的消息):

- ${getCleanTitle()}. (${PR_LINK})

如果以上都不适用,您可以通过在 PR 描述中添加 #skip-changelog 来选择退出。

更多

Sentry Web 前端监控 - 最佳实践(官方教程)

Sentry 后端监控 - 最佳实践(官方教程)

到此这篇关于Sentry Relay 二次开发调试简介的文章就介绍到这了,更多相关Sentry Relay 二次开发调试简介内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Sentry错误日志监控使用方法解析

    无论作为新手还是老手程序员在程序的开发过程中,代码运行时难免会抛出异常,而且项目在部署到测试.生产环境后,我们便不可能像在开发时那样容易的及时发现处理错误了.一般我们都是在错误发生一段时间后,错误信息才会传递到开发人员那里,然后一顿操作查看程序运行的日志,就熟练使用awk和grep去分析日志,但是往往我们会因为日志中缺少上下文关系,导致很难分析真正的错误是什么. Sentry由此应运而生成为了解决这个问题的一个很好的工具,设计了诸多特性帮助开发者更快.更方面.更直观的监控错误信息. 关于日志管理

  • 解析Sentry Relay 二次开发调试

    目录 开发 构建和运行 功能 测试 Linting Python和C-ABI 开发Server SSL 与Sentry一起使用 发布管理 变更日志说明 更多 开发 要构建 Relay,我们需要最新的稳定版 Rust.crate 被拆分为具有多个功能的工作区,因此在运行构建或运行测试时,请始终确保传递 --all 和 --all-features 标志.processing 功能还需要 C 编译器和 CMake. 要安装开发环境,必须安装 librdkafka 并在 path 上. 在 macOS

  • 微信小程序缓存支持二次开发封装实现解析

    这篇文章主要介绍了微信小程序缓存支持二次开发封装实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 微信小程序提供了缓存的api,包括同步和异步两种,具体api不多说明,可自行查看官方文档 现在微信小程序缓存api存在一个问题就是没有设定过期时间,下面给大家介绍一下对小程序缓存的二次封装,使其支持设定过期时间 实现方法 先声明,这个并非原创方法,只是查找资料的时候看到的,觉得挺有用,就记录下来,也算转播给大家 原作链接:https:/

  • vue开发调试神器vue-devtools使用详解

    前言: 由于vue是数据驱动的,所以这就存在在开发调试中查看DOM结构并不能解析出什么. 但是借助vue-devtools插件,我们就可以很容易的对数据结构进行解析和调试. 一.下载chrome扩展插件 GitHub下载地址: https://github.com/vuejs/vue-devtools 建议使用npm淘宝镜像按照依赖包 地址:http://npm.taobao.org/ 命令行安装npm淘宝镜像: $ npm install -g cnpm --registry=https://

  • Koa2微信公众号开发之本地开发调试环境搭建

    最近沉迷吃鸡不能自拔,好久没更新文章了.后续将陆续完善<Koa2微信公众号开发>. 一.简介 关于微信公众号的介绍就省略了,自行搜索.注册过程也不说了.我们会直接注册测试号来实现代码.这将会是个全面讲解微信公众号开发的系列教程.本篇是该系列的第一篇,本地开发环境搭建以及接入微信. 在开始之前最好去看看开发者文档微信公众平台技术文档 二.本地开发调试环境搭建 2.1 开发环境 MacOs Node v8.9.1 Koa2 2.2 微信公众平台开发的基本原理 我们先来看看微信公众平台开发的基本原理

  • 详解如何使用VisualStudio高效开发调试AndroidNDK

    本文介绍了如何使用VisualStudio高效开发调试AndroidNDK,分享给大家,具体如下: 场景 场景一:Java层代码与SO的开发分为不同的程序猿负责,开发SO的时候基本上APK的其他文件不会修改. 场景二:主要代码就是C++,Java层代码也只是个DEMO,Java代码基本没啥修改. 常见的做法是: 1. 使用编辑器或者编译器编写C++代码. 2. 使用NDK命令编译SO. 3. 重新打包APK,或者直接替换APK中的SO文件再重签名. 4. 安装到手机. 5. 运行. 6. 崩溃.

  • 详解AndroidStudio3.0开发调试安卓NDK的C++代码

    本文介绍了AndroidStudio3.0开发调试安卓NDK的C++代码,分享给大家,具有如下: 一.新建项目 新建项目,没有发现Include C++ Support 选项.因为印象中是有过该选项的,找了半天没找到. 后来无意间拖了下窗口大小,原来是被隐藏了,真特么坑. 新建一个测试项目,勾选Include C++ Support 选项,看看工程上有哪些不同. 1.gradle 首先看gradle文件,android节点下添加: externalNativeBuild { cmake { pa

  • VSCode远程开发调试服务器c/c++代码

    思路与上篇(PyCharm远程调试服务器python代码 )是一致的,所以端口转发这部分直接照抄上篇: 一.端口转发 对于没有公网IP的远程训练服务器,需要先配置端口转发,可以用ssh借道有办公网IP的办公机器. 0.公司给配置了一台Ubuntu系统的台式机器A,开发时想用Windows笔记本B,把远程CentOS训练服务器记为C. 1.首先需要修改台式机A上的ssh配置文件,如果不修改配置的话,将只有机器A可以访问训练服务器C. $ sudo vim /etc/ssh/sshd_config

  • UCenter Home二次开发指南

    前言本文将就UCH二次开发这个核心主题,以各种实现的代码为主,辅助部分说明概略的讲解如何针对UCH进行二次开发.过段时间UCH就开源了,准备到时候再详细的写篇UCH机制分析. 顺便说下,这篇文件写在大约两周以前,但是一直没有时间整理发布,今天听说UCH会在最近一段时间开源,到时候再发反而对大家帮助不大,所以决定不再整理,虽然文中一些说明还不详细,但是已经基本成文. 数据调用这里的数据调用是使用UCenter Home内置的数据调用,在后台的"高级应用"里有"数据调用"

  • destoon二次开发入门示例

    Destoon基于PHP+MySQL的开源B2B(电子商务)行业门户的首选解决方案.本文就Destoon的二次开发简述如下: 一.初始化系统 包含系统根目录下的common.inc.php即可初始化系统. 例如在站点根目录下创建一个hello.php,代码如下: <?php require 'common.inc.php'; echo 'Hello World'; ?> 二.编写逻辑 系统初始化之后,就可以在php文件里编写逻辑代码,同时也可以调用系统内置的变量.函数和类了. 示例代码如下:

  • Java微信二次开发(一) Java微信请求验证功能

    准备用Java做一个微信二次开发项目,把流程写在这里吧. 第一篇,做微信请求验证 需要导入库:servlet-api.jar 第一步:新建包com.wtz.service,新建类LoginServlet.java package com.wtz.service; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.ht

随机推荐