#applications #resources #shared #amount #down #sentry #features

sentry_usage_accountant

Sentry应用程序使用的一个库,用于按功能细分共享系统资源的使用情况

5个版本

0.1.0 2024年3月4日
0.0.4 2024年1月12日
0.0.3 2024年1月8日
0.0.2 2023年11月4日
0.0.1 2023年11月4日

#619调试

Download history 1658/week @ 2024-05-03 893/week @ 2024-05-10 517/week @ 2024-05-17 295/week @ 2024-05-24 437/week @ 2024-05-31 662/week @ 2024-06-07 356/week @ 2024-06-14 496/week @ 2024-06-21 240/week @ 2024-06-28 324/week @ 2024-07-05 661/week @ 2024-07-12 885/week @ 2024-07-19 500/week @ 2024-07-26 446/week @ 2024-08-02 581/week @ 2024-08-09 457/week @ 2024-08-16

每月2,322次下载

Apache-2.0

24KB
464

rust-usage-accountant

Sentry应用程序使用的一个库,用于按功能细分共享系统资源的使用情况。


lib.rs:

这是一个库,旨在标准化我们记录每个Rust产品使用的共享资源的方式。

我们试图解决的问题是为每个功能使用给定共享基础设施资源的部分进行记录。共享资源的例子是Relay,它是所有摄取管道的一部分。记录这个比率使我们能够按产品功能正确分解共享基础设施的使用情况。

此API允许应用程序代码通过选择度量单位重复记录功能使用的资源量。每次应用程序代码记录使用情况时,它都指的是应用程序选择的时间段。

每次应用程序记录数量时,它提供以下字段

  • resource_id,用于识别物理资源。它可以是Kafka消费者、k8s pod的一部分内存等。这必须与其在其清单中分配的 shared_resource_id 匹配。
  • app_feature,用于识别产品功能。
  • unit,是记录的数量的度量单位。它可以字节、秒等。
  • amount,是实际使用的资源量。

使用-accountant的实例在本地累积使用数据,并定期将预聚合数据刷新到Kafka。从那里,数据流入Bigquery进行分析。在本地累积数据对于将此库的性能影响降到最低和减少Kafka消息量至关重要。

示例

use sentry_usage_accountant::{KafkaConfig, UsageAccountant, UsageUnit};
use std::collections::HashMap;

let kafka_config = KafkaConfig::new_producer_config(
    HashMap::from([("bootstrap.servers".to_string(), "localhost:9092".to_string())]),
);
let mut accountant = UsageAccountant::new_with_kafka(
   kafka_config,
   None,
   None,
);
accountant.record(
   "generic_metrics_indexer_consumer",
   "transactions",
   100,
   UsageUnit::Bytes,
).unwrap();

依赖项

~2–6MB
~98K SLoC