本期推荐的Sentry 是一个开发人员优先的错误跟踪和性能监控平台。
Sentry 是一个开发人员优先的错误跟踪和性能监控平台,可帮助开发人员了解真正重要的问题、更快地解决问题并不断了解他们的应用程序。
Sentry特性
- 源代码、错误过滤器、堆栈局部变量 — Sentry 通过堆栈跟踪增强了应用程序性能监控。
- 在停机之前快速识别性能问题。查看整个端到端分布式跟踪以查看准确的、性能不佳的 API 调用并显示任何相关错误。
- 面包屑通过向您显示导致错误的事件轨迹,使应用程序开发变得更容易一些。
- 无论您使用的是JavaScript、PHP还是介于两者之间的任何东西,Release 都可以让您了解哪些错误已得到解决,哪些错误是首次引入的。
- 软件开发周期可能充满歧义。问题所有者将控制权交还给开发人员,以修复他们代码中的问题。
- 实时应用程序监控意味着实时的数据。使用 Sentry 的查询构建器 Discover 查询整个组织的原始事件数据。
- 仪表板为我们的应用程序监控添加了视觉元素。
Sentry使用
Sentry Java SDK 可以与 Kotlin、Scala 和其他 JVM 语言一起使用。代码示例通常以 Java 和 Kotlin 的形式提供。
Sentry 通过在应用程序运行时中使用 SDK 来捕获数据。
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry</artifactId>
<version>6.2.1</version>
</dependency>
如果您使用多个 Sentry 依赖项,则可以添加物料清单以避免指定每个依赖项的版本。
应在应用程序的生命周期中尽早进行配置。
import io.sentry.Sentry;
Sentry.init(options -> {
options.setDsn("https://examplePublicKey@o0.ingest.sentry.io/0");
});
此代码段包含一个故意错误,因此您可以在设置后立即测试一切是否正常:
import io.sentry.Sentry;
try {
throw new Exception("This is a test.");
} catch (Exception e) {
Sentry.captureException(e);
}
在此页面上,我们让您使用 Sentry 的 SDK 启动并运行,以便它会自动报告您的应用程序中的错误和异常。
Sentry 通过在应用程序运行时中使用 SDK 来捕获数据。
# Using yarn
yarn add @sentry/node @sentry/tracing
# Using npm
npm install --save @sentry/node @sentry/tracing
完成此操作后,Sentry 的 Node SDK 将捕获所有事务和未处理的异常。
import * as Sentry from "@sentry/node";
import "@sentry/tracing";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
tracesSampleRate: 1.0,
});
此代码段包含一个故意错误,因此您可以在设置后立即测试一切是否正常:
const transaction = Sentry.startTransaction({
op: "test",
name: "My First Test Transaction",
});
setTimeout(() => {
try {
foo();
} catch (e) {
Sentry.captureException(e);
} finally {
transaction.finish();
}
}, 99);
要安装 Android SDK,请将其添加到您的build.gradle文件中:
// Make sure mavenCentral is there.
repositories {
mavenCentral()
}
// Enable Java 1.8 source compatibility if you haven't yet.
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
// Add Sentry's SDK as a dependency.
dependencies {
implementation 'io.sentry:sentry-android:6.2.1'
}
配置通过AndroidManifest.xml:
<application>
<meta-data android:name="io.sentry.dsn" android:value="https://examplePublicKey@o0.ingest.sentry.io/0" />
</application>
此代码段包含一个故意错误,因此您可以在设置后立即测试一切是否正常:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.lang.Exception;
import io.sentry.Sentry;
public class MyActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
throw new Exception("This is a test.");
} catch (Exception e) {
Sentry.captureException(e);
}
}
}
验证
身份验证令牌
身份验证令牌使用 auth 标头传递,并用于通过 API 以用户或组织帐户身份进行身份验证。在我们的文档中,我们有几个出现在大括号或 V 形之间的占位符,例如{API_KEY}or <auth_token>,您需要将其替换为您的身份验证令牌之一才能有效地使用 API 调用。
curl -H 'Authorization: Bearer {TOKEN}' https://sentry.io/api/0/projects/
如果您的身份验证令牌是1a2b3c,那么命令应该是:
curl -H 'Authorization: Bearer 1a2b3c' https://sentry.io/api/0/projects/
DSN 身份验证
某些 API 端点可能允许基于 DSN 的身份验证。这通常非常有限,并且端点将描述其是否受支持。这与承载令牌身份验证类似,但使用您的 DSN(客户端密钥)。
curl -H 'Authorization: DSN {DSN}' https://sentry.io/api/0/projects/
分页结果
API 中的分页是通过 Link 标头标准处理的:
curl -i https://sentry.io/api/0/projects/1/groups/
支持时,将始终为上一页和下一页返回游标,即使这些页面上没有结果也是如此。这允许您对 API 进行查询以获取尚未发现的结果。一个例子是当你实现轮询行为并且你想看看是否有任何新数据时。我们返回一个results=”[true|false]”指标来确定您是否真的需要分页。
分页示例
以下是使用此 API 端点的分页示例:
https://docs.sentry.io/api/events/list-an-issues-events/
此示例中的 HTTP 请求针对该问题返回 100 个事件,并在响应中包含以下链接标头:
<https://sentry.io/api/0/issues/123456/events/?&cursor=0:0:1>; rel="previous"; results="false"; cursor="0:0:1", <https://sentry.io/api/0/issues/123456/events/?&cursor=0:100:0>; rel="next"; results="true"; cursor="0:100:0"
链接响应中的一个 URL 具有rel=next,它指示下一个结果页面。它也有results=true,这意味着有更多的结果。
基于此,下一个请求是GET <https://sentry.io/api/0/issues/123456/events/?&cursor=0:100:0>。
此请求将再次返回该问题的下 100 个事件,并带有以下链接标头:
<https://sentry.io/api/0/issues/123456/events/?&cursor=0:0:1>; rel="previous"; results="true"; cursor="0:0:1", <https://sentry.io/api/0/issues/123456/events/?&cursor=0:200:0>; rel="next"; results="true"; cursor="0:200:0"
重复该过程,直到 URL 具有指示最后一页rel=next的标志。results=false
cursor 的三个值是:游标标识符(整数,通常为 0)、行偏移量和 is_prev(1 或 0)。
图示
—END—
开源协议:View license