Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: gRPC storage plugin for metrics #4413

Open
jacobmarble opened this issue Apr 25, 2023 · 4 comments · May be fixed by #4414
Open

[Feature]: gRPC storage plugin for metrics #4413

jacobmarble opened this issue Apr 25, 2023 · 4 comments · May be fixed by #4414
Assignees

Comments

@jacobmarble
Copy link
Contributor

Requirement

As a Jaeger operator, I want to enable the Jaeger UI "Monitoring" tab for my SREs, DevOps, Engineers.

Problem

Service Performance Monitoring is a feature of Jaeger that is often overlooked.

My team can't use it because our metrics backend is InfluxDB. (InfluxDB is also our tracing backend.) The only Jaeger metrics plugin requires Prometheus.

Proposal

I offer to write a new metricsstore plugin, which backends to a remote (not sidecar) third-party gRPC service.

At the same time, I offer to write a third-party remote gRPC backend for the proposed plugin. This backend would support InfluxDB, and would live here:
https://github.com/influxdata/influxdb-observability/tree/main/jaeger-influxdb

Open questions

Several questions have been raised and discussed.

Where should the new plugin live? I propose that plugin/storage/grpc/shared/interface.go change like this (I hope the rest is obvious):

  type StoragePlugin interface {
    SpanReader()       spanstore.Reader
    SpanWriter()       spanstore.Writer
    DependencyReader() dependencystore.Reader
+   MetricsReader()    metricsstore.Reader
  }
...
  type Capabilities struct {
    ArchiveSpanReader   bool
    ArchiveSpanWriter   bool
    StreamingSpanWriter bool
+   MetricsReader       bool
  }
@jacobmarble
Copy link
Contributor Author

Please assign this issue to me.

@yurishkuro
Copy link
Member

  • MetricsReader() metricsstore.Reader

this would be a breaking change - see how other services mentioned in Capabilities are implemented with separate interfaces

@jacobmarble
Copy link
Contributor Author

Ah. Like this, then:

+  type MetricsReaderPlugin interface {
+    MetricsReader() metricsstore.Reader
+  }
...
  type Capabilities struct {
    ArchiveSpanReader   bool
    ArchiveSpanWriter   bool
    StreamingSpanWriter bool
+   MetricsReader       bool
  }

@jacobmarble jacobmarble changed the title [Feature]: plugin/metrics/grpc for SPM backends other than Prometheus [Feature]: gRPC storage plugin for metrics Apr 26, 2023
@jacobmarble jacobmarble linked a pull request Apr 26, 2023 that will close this issue
2 tasks
@jacobmarble
Copy link
Contributor Author

@yurishkuro please review this implementation: #4414

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants