Class MetricsCollector

java.lang.Object
java.util.concurrent.SubmissionPublisher<RECORD>
io.mishmash.opentelemetry.server.collector.AbstractCollector<io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse,MetricDataPoint>
io.mishmash.opentelemetry.server.collector.MetricsCollector
All Implemented Interfaces:
AutoCloseable, Flow.Publisher<MetricDataPoint>

public class MetricsCollector extends AbstractCollector<io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse,MetricDataPoint>
Processes incoming OpenTelemetry metrics packets - extracts all data points of all metrics contained in a packet and queues them to all MetricsSubscribers. Also notifies the client on potential errors.
  • Constructor Details

    • MetricsCollector

      public MetricsCollector(io.grpc.MethodDescriptor<io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse> exportMethod, Instrumentation otel)
      Creates a new metrics collector to be added to a Vert.x routing context.
      Parameters:
      exportMethod - the gRPC method to be attached to
      otel - a helper for own telemetry needs
  • Method Details

    • loadBatch

      public Batch<MetricDataPoint> loadBatch(io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest request, String transport, String encoding, io.opentelemetry.context.Context otelContext)
      Processes incoming packets (or batches) - extracts and publishes the contained OpenTelemetry metric data points (one by one) to all MetricsSubscribers.
      Specified by:
      loadBatch in class AbstractCollector<io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse,MetricDataPoint>
      Parameters:
      request - the client's OTLP request
      transport - the OTLP transport - "grpc" or "http"
      encoding - the OTLP encoding - "protobuf" or "json"
      otelContext - the Context used for own telemetry
      Returns:
      a new Batch with all items of the request
    • offerDataPoint

      protected boolean offerDataPoint(Batch<MetricDataPoint> batch, MetricDataPoint m, String uuid, String transport, String encoding)
      Actually sumbit a data point to all subscribers.
      Parameters:
      batch - the batch
      m - the data point
      uuid - id of the batch
      transport - OTLP transport used
      encoding - OTLP transport encoding used
      Returns:
      true if successful
    • getBatchResponse

      public io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse getBatchResponse(io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest request, Batch<MetricDataPoint> completedBatch, String transport, String encoding)
      Called to compute the correct response to the client after an entire batch (or packet) of OpenTelemetry logs, metrics or spans has been processed.
      Specified by:
      getBatchResponse in class AbstractCollector<io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse,MetricDataPoint>
      Parameters:
      request - the original request from the client
      completedBatch - the completed batch of records
      transport - the OTLP transport used - "grpc" or "http"
      encoding - - the OTLP encoding - "protobuf" or "json"
      Returns:
      the correct OTLP reposne to be sent back to the client
    • telemetrySignalType

      protected String telemetrySignalType()
      Returns "metrics" as the signal type for this collector's own telemetry.
      Specified by:
      telemetrySignalType in class AbstractCollector<io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse,MetricDataPoint>
      Returns:
      the signal type