LCOV - code coverage report
Current view: top level - src/metrics/export - metric_config.dart (source / functions) Coverage Total Hit
Test: lcov.info Lines: 100.0 % 11 11
Test Date: 2025-11-15 13:23:01 Functions: - 0 0

            Line data    Source code
       1              : // Licensed under the Apache License, Version 2.0
       2              : // Copyright 2025, Michael Bushe, All rights reserved.
       3              : 
       4              : import '../../otel.dart';
       5              : import '../../resource/resource.dart';
       6              : import '../meter_provider.dart';
       7              : import '../metric_exporter.dart';
       8              : import '../metric_reader.dart';
       9              : import 'composite_metric_exporter.dart';
      10              : import 'otlp/otlp_grpc_metric_exporter.dart';
      11              : import 'otlp/otlp_grpc_metric_exporter_config.dart';
      12              : 
      13              : /// Configuration for metrics exporters and readers.
      14              : class MetricsConfiguration {
      15              :   /// Configures a MeterProvider with given settings.
      16              :   ///
      17              :   /// This configures everything needed for metrics pipeline:
      18              :   /// - An exporter (defaults to OtlpGrpcMetricExporter if none provided)
      19              :   /// - A reader (defaults to PeriodicExportingMetricReader if none provided)
      20              :   /// - Sets up resources on the MeterProvider
      21           69 :   static MeterProvider configureMeterProvider({
      22              :     String endpoint = 'http://localhost:4317',
      23              :     bool secure = false,
      24              :     MetricExporter? metricExporter,
      25              :     MetricReader? metricReader,
      26              :     Resource? resource,
      27              :   }) {
      28              :     // If no exporter is provided, create a default one
      29           69 :     metricExporter ??= _createDefaultExporter(endpoint, secure);
      30              : 
      31              :     // If no reader is provided, create a periodic exporting metric reader
      32           58 :     metricReader ??= PeriodicExportingMetricReader(
      33              :       metricExporter,
      34              :       interval: const Duration(seconds: 15),
      35              :     );
      36              : 
      37              :     // Get meter provider
      38           69 :     final meterProvider = OTel.meterProvider();
      39              : 
      40              :     // Set resource if provided
      41              :     if (resource != null) {
      42           69 :       meterProvider.resource = resource;
      43              :     }
      44              : 
      45              :     // Add the metric reader
      46           69 :     meterProvider.addMetricReader(metricReader);
      47              : 
      48              :     return meterProvider;
      49              :   }
      50              : 
      51              :   /// Creates the default metric exporter.
      52           69 :   static MetricExporter _createDefaultExporter(String endpoint, bool secure) {
      53              :     // Configure the OTLP gRPC exporter
      54           69 :     final otlpExporter = OtlpGrpcMetricExporter(
      55           69 :       OtlpGrpcMetricExporterConfig(
      56              :         endpoint: endpoint,
      57              :         insecure: !secure,
      58              :         timeoutMillis: 10000,
      59              :       ),
      60              :     );
      61              : 
      62              :     // Use a composite exporter for both OTLP and Console output
      63          138 :     return CompositeMetricExporter([
      64              :       otlpExporter,
      65           69 :       ConsoleMetricExporter(),
      66              :     ]);
      67              :   }
      68              : }
        

Generated by: LCOV version 2.0-1