Class IngestionOtelStats

java.lang.Object
com.linkedin.davinci.stats.ingestion.IngestionOtelStats
Direct Known Subclasses:
NoOpIngestionOtelStats

public class IngestionOtelStats extends Object
OpenTelemetry metrics for ingestion statistics. Note: Tehuti metrics are managed separately in IngestionStatsReporter.
  • Constructor Details

    • IngestionOtelStats

      public IngestionOtelStats(io.tehuti.metrics.MetricsRepository metricsRepository, String storeName, String clusterName)
  • Method Details

    • setIngestionTask

      public void setIngestionTask(int version, StoreIngestionTask task)
      Sets the StoreIngestionTask for a specific version. This enables async gauge metrics to access task data.
    • removeIngestionTask

      public void removeIngestionTask(int version)
      Removes the StoreIngestionTask and associated per-version state for a specific version.
    • close

      public void close()
      Cleans up all per-version state for this store. Call this when the store is being deleted.

      Note: OTel instruments (counters, histograms, async gauges) are NOT deregistered here. OpenTelemetry SDK does not support deregistering individual instruments from a Meter. The instruments will remain registered but will report zero/stale values until the MeterProvider is shut down.

    • setIngestionTaskPushTimeoutGauge

      public void setIngestionTaskPushTimeoutGauge(int version, int value)
    • recordIdleTime

      public void recordIdleTime(int version, long idleTimeMs)
    • emitOtelMetrics

      public boolean emitOtelMetrics()
    • updateVersionInfo

      public void updateVersionInfo(int currentVersion, int futureVersion)
    • recordSubscribePrepTime

      public void recordSubscribePrepTime(int version, double latencyMs)
    • recordIngestionTime

      public void recordIngestionTime(int version, double latencyMs)
    • recordPreprocessingLeaderTime

      public void recordPreprocessingLeaderTime(int version, double latencyMs)
    • recordPreprocessingInternalTime

      public void recordPreprocessingInternalTime(int version, double latencyMs)
    • recordProducerTime

      public void recordProducerTime(int version, double latencyMs)
    • recordBatchProcessingRequestCount

      public void recordBatchProcessingRequestCount(int version, long value)
    • recordBatchProcessingRequestRecordCount

      public void recordBatchProcessingRequestRecordCount(int version, long value)
    • recordBatchProcessingRequestErrorCount

      public void recordBatchProcessingRequestErrorCount(int version, long value)
    • recordBatchProcessingRequestTime

      public void recordBatchProcessingRequestTime(int version, double latencyMs)
    • recordDcrTotalCount

      public void recordDcrTotalCount(int version, long value)
    • recordDuplicateKeyUpdateCount

      public void recordDuplicateKeyUpdateCount(int version, long value)
    • recordRecordsConsumed

      public void recordRecordsConsumed(int version, ReplicaType replicaType, long value)
    • recordRecordsProduced

      public void recordRecordsProduced(int version, ReplicaType replicaType, long value)
    • recordBytesConsumed

      public void recordBytesConsumed(int version, ReplicaType replicaType, long value)
    • recordBytesProduced

      public void recordBytesProduced(int version, ReplicaType replicaType, long value)
    • recordProducerCallbackTime

      public void recordProducerCallbackTime(int version, ReplicaType replicaType, double latencyMs)
    • recordDcrEventCount

      public void recordDcrEventCount(int version, VeniceDCREvent event, long value)
    • recordTimeBetweenComponents

      public void recordTimeBetweenComponents(int version, VeniceIngestionSourceComponent sourceComponent, VeniceIngestionDestinationComponent destComponent, double latencyMs)