Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之采样 Transactions
2021-03-06 02:28
标签:record ast map gets inf 静态 事件 tag rac 你可以通过两种方式控制发送到 Sentry 的 transactions 的量。 如果您希望 transactions 的 cross-section 均匀,无论您在应用程序中的何处或在什么情况下发生,并且对下文所述的默认继承和优先级行为感到满意,设置统一采样率都是一个不错的选择。 为此,请将 如果您满足以下条件,则提供采样功能是一个不错的选择: 若要进行动态采样,请将 为了方便起见,该函数还可以返回布尔值。返回 创建 transaction 时,传递给 对于基于浏览器的 SDK,它至少包括以下内容: 手动创建 transaction 时,可以通过将数据作为可选的第二个参数传递给 无论 transaction 的抽样决策是什么,该决策都将传递给其 child spans,并从那里传递给它们随后在其他服务中引起的任何 transactions。(有关如何完成传播的更多信息,请参见 Connecting Backend and Frontend Transactions。) 如果当前正在创建的 transaction 是那些后续 transactions 之一(换句话说,如果它具有父 transaction),则上游(父)抽样决策将始终包含在抽样上下文数据中,以便您的 在某些 SDK 中,为方便起见, 如果您使用的是 如果在 transaction 创建时知道是否要将 transaction 发送给 Sentry,则还可以选择将抽样决策直接传递给 transaction 构造函数(请注意,不在 transaction 有多种方法可以得出抽样决策。 当有可能出现不止一种情况时,应遵循以下优先规则: 中文文档陆续同步到: Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之采样 Transactions 标签:record ast map gets inf 静态 事件 tag rac 原文地址:https://www.cnblogs.com/hacker-linner/p/14312813.html系列
Uniform Sample Rate
Sentry.init()
中的 tracesSampleRate
选项设置为 0 到 1 之间的一个数字。设置此选项后,创建的每个 transaction 将有一定百分比的机会被发送到 Sentry。(因此,例如,如果将 tracesSampleRate
设置为 0.2
,将记录和发送大约 20% 的 transactions。)如下所示:Sentry.init({
// ...
tracesSampleRate: 0.2,
});
Dynamic Sampling Function
Sentry.init()
中的 tracesSampler
选项设置为一个函数,该函数将接受 samplingContext
对象并返回 0 到 1 之间的采样率。例如:Sentry.init({
// ...
tracesSampler: samplingContext => {
// Examine provided context data (including parent decision, if any) along
// with anything in the global namespace to compute the sample rate or
// sampling decision for this transaction
if ("...") {
// These are important - take a big sample
return 0.5;
} else if ("...") {
// These are less important or happen much more frequently - only take 1%
return 0.01;
} else if ("...") {
// These aren‘t something worth tracking - drop all transactions like this
return 0;
} else {
// Default sample rate
return 0.1;
}
};
});
true
等于返回 1
,并保证 transaction 将被发送到 Sentry。 返回 false
等于返回 0
,这将确保不会将 transaction 发送给 Sentry。Default Sampling Context Data
tracesSampler
的 samplingContext
对象中包含的信息因平台和集成而异。// contents of `samplingContext`
{
transactionContext: {
name: string; // human-readable identifier, like "GET /users"
op: string; // short description of transaction type, like "pageload"
}
parentSampled: boolean; // if this transaction has a parent, its sampling decision
location: Location | WorkerLocation; // the window.location or self.location object
... // custom context as passed to `startTransaction`
}
Custom Sampling Context Data
startTransaction
来将数据添加到 samplingContext
。如果您希望采样器可以访问但不想将其作为 tags
或 data
附加到 transaction 中的数据(例如敏感信息或太大而无法随 transaction 发送的信息),这将非常有用。例如:Sentry.startTransaction(
{
// `transactionContext` - will be recorded on transaction
name: ‘Search from navbar‘,
op: ‘search‘,
tags: {
testGroup: ‘A3‘,
treatmentName: ‘eager load‘,
},
},
// `customSamplingContext` - won‘t be recorded
{
// PII
userId: ‘12312012‘,
// too big to send
resultsFromLastSearch: { ... }
},
);
Inheritance
tracesSampler
选择是否和何时继承该决定。(在大多数情况下,继承是正确的选择,这样就不会出现部分跟踪。)tracesSampler
函数可以返回一个布尔值,这样,如果这是期望的行为,则可以直接返回父级的决策。tracesSampler: samplingContext => {
// always inherit
if (samplingContext.parentSampled !== undefined) {
return samplingContext.parentSampled
}
...
// rest of sampling logic here
}
tracesSampleRate
而不是 tracesSampler
,则该决策将始终被继承。Forcing a Sampling Decision
customSamplingContext
对象中)。 如果这样做,则 transaction 将不受 tracesSampleRate
的约束,也不会运行tracesSampler
,因此您可以指望通过的决策不会被覆盖。Sentry.startTransaction({
name: "Search from navbar",
sampled: true,
});
Precedence
tracesSampleRate
中设置的静态采样率进行随机采样tracesSampler
返回的动态采样率进行随机采样tracesSampler
返回的绝对决策(100% 机会或 0% 机会)startTransaction
startTransaction
(请参见上面的 Forcing a Sampling Decision),则无论其他任何因素,都将使用该决策。tracesSampler
,则将使用其决策。它可以选择保留或忽略任何父抽样决策,或者使用抽样上下文数据做出自己的决策,或者为 transaction 选择抽样率。tracesSampler
,但是有一个父采样决策,则将使用父采样决策。tracesSampler
且没有父级采样决策,则将使用 tracesSampleRate
。
我是为少。
微信:uuhells123。
公众号:黑客下午茶。
谢谢点赞支持??????!
文章标题:Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之采样 Transactions
文章链接:http://soscw.com/essay/60659.html