Skip to content

Feature: Refactoring Databend Metrics Component with Prometheus #9422

Closed
@flaneur2020

Description

@flaneur2020

Summary

metrics-rs is a general abstraction layer across different metrics solutions like statsd, prometheus, new-relic, etc.

However, a general abstraction have a bit additional cost above a raw proemtheus client:

In a pulling metrics model, the memory allocation is mostly fixed for a set of labels. However in a push model, sometimes we need a buffer to store the recent metrics temporarly, like:

metrics-rs/metrics#245 (comment)

Nowadays prometheus is the de facto standard in the metrics area, we can consider take a raw prometheus client without considering pushing metrics to others like statsd, it have some benefits:

  • better performance: with proper metrics practise, the memory allocation of metrics should be O(1), no local buffered queue at all
  • reducing the abstraction layers: we can reduce abstraction layer about metrics, to make the code path easier to understand.
  • better coding standard: currently we have different metric practices among different modules, we can learn about the metrics practices in the prometheus community to unify our metrics practices.

We can choose between:

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions