#sentry #process #error #script #failed #integration #failure

app sentry-process

将失败的过程/脚本报告给 Sentry

5 个稳定版本

2.1.0 2022年6月8日
2.0.0 2020年10月20日
1.0.2 2020年2月22日
1.0.1 2019年4月13日
1.0.0 2019年2月1日

#2359命令行工具

每月 25 次下载

MIT 许可证

14KB
207

Sentry Process

LICENSE pipeline status Crates.io Version Minimum rustc version Get help on Codementor

将失败的过程/脚本报告给 Sentry。

⚠️ 主仓库在此: https://gitlab.com/dsferruzza/sentry-process ⚠️

动机

Sentry 是一个很酷的系统,帮助开发者收集、监控和修复他们自己的应用程序中的错误/异常。它为许多技术提供了集成,以便报告的错误可以包含相关信息。

但有时将 Sentry 连接到任意进程可能是可取的。这样的进程可以是未提供 Sentry 支持的二进制文件,或者例如每晚在服务器上运行的 Bash 脚本。

使用 Sentry Process,现在可以轻松启动一个进程,该进程会在失败时向 Sentry 实例发送事件!

如何使用

  • 编译或安装项目
  • 设置 SENTRY_DSN 环境变量(使用 Sentry 中 您的项目 > 设置 > 客户端密钥 (DSN) 中提供的 URL)
  • 运行 sentry-process COMMAND [ARGUMENTS]... (像使用 sudo 一样包装您的进程调用)

如果运行 COMMAND [ARGUMENTS]... 的结果是退出代码不是 0,Sentry Process 会将其视为失败并报告。例如,sentry-process false 会报告,而 sentry-process true 则不会。

命令 COMMAND [ARGUMENTS]... 的退出码、标准输出和标准错误会被 sentry-process COMMAND [ARGUMENTS]... 重新发射,以便可以将其管道传输或供其他程序使用。实际上,标准输出和标准错误是流式的,所以你可以运行(例如)sentry-process wget https://somebigfileurl,看到进度就像你直接运行 wget https://somebigfileurl 一样。

Rust 版本要求

Sentry 进程需要 Rust 1.54+ 版本进行编译。

限制

  • 你想要运行的进程最终必须终止。对于像服务器这样的设计为永远不会死亡的进程,使用 Sentry 进程可能没有意义。
  • 你将 不会 获得关于 什么 失败的很多细节(即没有堆栈跟踪)。这是这里的权衡。
  • Sentry 进程会将你想要运行的进程的标准输出(stdout)和标准错误(stderr)发送到你的 Sentry 实例(如果它失败)。如果你的 Sentry 实例会拒绝大于 200 kB 的数据报告(请参阅 Sentry 的文档),因此 Sentry 进程使用环形缓冲区以确保不会达到此限制,并且最新的输出会与报告一起发送。

许可证

MIT 许可证 版权所有 (c) 2019 David Sferruzza

依赖

~12–29MB
~422K SLoC