Search in sources :

Example 1 with Metric

use of com.amazon.dataprepper.model.metric.Metric in project data-prepper by opensearch-project.

the class MetricsPluginHistogramTest method test.

@Test
public void test() throws JsonProcessingException {
    final double bound_0 = 10.0;
    final double bound_1 = 100.0;
    final double bound_2 = 1000.0;
    HistogramDataPoint dp = HistogramDataPoint.newBuilder().addBucketCounts(0).addBucketCounts(5).addBucketCounts(17).addBucketCounts(33).addExplicitBounds(bound_0).addExplicitBounds(bound_1).addExplicitBounds(bound_2).setCount(4).setSum(1d / 3d).build();
    Histogram histogram = Histogram.newBuilder().addDataPoints(dp).build();
    List<Record<? extends Metric>> processedRecords = (List<Record<? extends Metric>>) rawProcessor.doExecute(Collections.singletonList(new Record<>(fillServiceRequest(histogram))));
    Record<? extends Metric> record = processedRecords.get(0);
    ObjectMapper objectMapper = new ObjectMapper();
    Map<Object, Object> map = objectMapper.readValue(record.getData().toJsonString(), Map.class);
    DefaultBucket bucket_0 = new DefaultBucket((double) -Float.MAX_VALUE, bound_0, 0L);
    DefaultBucket bucket_1 = new DefaultBucket(bound_0, bound_1, 5L);
    DefaultBucket bucket_2 = new DefaultBucket(bound_1, bound_2, 17L);
    DefaultBucket bucket_3 = new DefaultBucket(bound_2, (double) Float.MAX_VALUE, 33L);
    assertHistogramProcessing(map, Arrays.asList(bucket_0, bucket_1, bucket_2, bucket_3));
}
Also used : Histogram(io.opentelemetry.proto.metrics.v1.Histogram) DefaultBucket(com.amazon.dataprepper.model.metric.DefaultBucket) HistogramDataPoint(io.opentelemetry.proto.metrics.v1.HistogramDataPoint) Record(com.amazon.dataprepper.model.record.Record) Metric(com.amazon.dataprepper.model.metric.Metric) List(java.util.List) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Example 2 with Metric

use of com.amazon.dataprepper.model.metric.Metric in project data-prepper by opensearch-project.

the class OTelMetricsRawProcessor method doExecute.

@Override
public Collection<Record<? extends Metric>> doExecute(Collection<Record<ExportMetricsServiceRequest>> records) {
    Collection<Record<? extends Metric>> recordsOut = new ArrayList<>();
    for (Record<ExportMetricsServiceRequest> ets : records) {
        for (ResourceMetrics rs : ets.getData().getResourceMetricsList()) {
            final Map<String, Object> resourceAttributes = OTelMetricsProtoHelper.getResourceAttributes(rs.getResource());
            final String serviceName = OTelMetricsProtoHelper.getServiceName(rs.getResource()).orElse(null);
            for (InstrumentationLibraryMetrics is : rs.getInstrumentationLibraryMetricsList()) {
                final Map<String, Object> ils = OTelMetricsProtoHelper.getInstrumentationLibraryAttributes(is.getInstrumentationLibrary());
                for (io.opentelemetry.proto.metrics.v1.Metric metric : is.getMetricsList()) {
                    if (metric.hasGauge()) {
                        recordsOut.addAll(mapGauge(metric, serviceName, ils, resourceAttributes));
                    } else if (metric.hasSum()) {
                        recordsOut.addAll(mapSum(metric, serviceName, ils, resourceAttributes));
                    } else if (metric.hasSummary()) {
                        recordsOut.addAll(mapSummary(metric, serviceName, ils, resourceAttributes));
                    } else if (metric.hasHistogram()) {
                        recordsOut.addAll(mapHistogram(metric, serviceName, ils, resourceAttributes));
                    }
                }
            }
        }
    }
    return recordsOut;
}
Also used : ArrayList(java.util.ArrayList) InstrumentationLibraryMetrics(io.opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics) ResourceMetrics(io.opentelemetry.proto.metrics.v1.ResourceMetrics) Record(com.amazon.dataprepper.model.record.Record) Metric(com.amazon.dataprepper.model.metric.Metric) ExportMetricsServiceRequest(io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest)

Example 3 with Metric

use of com.amazon.dataprepper.model.metric.Metric in project data-prepper by opensearch-project.

the class MetricsPluginGaugeTest method test.

@Test
public void test() throws JsonProcessingException {
    NumberDataPoint.Builder p1 = NumberDataPoint.newBuilder().setAsInt(4);
    Gauge gauge = Gauge.newBuilder().addDataPoints(p1).build();
    io.opentelemetry.proto.metrics.v1.Metric.Builder metric = io.opentelemetry.proto.metrics.v1.Metric.newBuilder().setGauge(gauge).setUnit("seconds").setName("name").setDescription("description");
    InstrumentationLibraryMetrics isntLib = InstrumentationLibraryMetrics.newBuilder().addMetrics(metric).build();
    Resource resource = Resource.newBuilder().addAttributes(KeyValue.newBuilder().setKey("service.name").setValue(AnyValue.newBuilder().setStringValue("service").build())).build();
    ResourceMetrics resourceMetrics = ResourceMetrics.newBuilder().addInstrumentationLibraryMetrics(isntLib).setResource(resource).build();
    ExportMetricsServiceRequest exportMetricRequest = ExportMetricsServiceRequest.newBuilder().addResourceMetrics(resourceMetrics).build();
    Record<ExportMetricsServiceRequest> record = new Record<>(exportMetricRequest);
    Collection<Record<? extends Metric>> records = rawProcessor.doExecute(Collections.singletonList(record));
    List<Record<? extends Metric>> list = new ArrayList<>(records);
    Record<? extends Metric> dataPrepperResult = list.get(0);
    ObjectMapper objectMapper = new ObjectMapper();
    Map map = objectMapper.readValue(dataPrepperResult.getData().toJsonString(), Map.class);
    assertSumProcessing(map);
}
Also used : Resource(io.opentelemetry.proto.resource.v1.Resource) ArrayList(java.util.ArrayList) InstrumentationLibraryMetrics(io.opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics) Gauge(io.opentelemetry.proto.metrics.v1.Gauge) ResourceMetrics(io.opentelemetry.proto.metrics.v1.ResourceMetrics) NumberDataPoint(io.opentelemetry.proto.metrics.v1.NumberDataPoint) Metric(com.amazon.dataprepper.model.metric.Metric) Record(com.amazon.dataprepper.model.record.Record) Map(java.util.Map) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ExportMetricsServiceRequest(io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest) Test(org.junit.Test)

Aggregations

Metric (com.amazon.dataprepper.model.metric.Metric)3 Record (com.amazon.dataprepper.model.record.Record)3 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 ExportMetricsServiceRequest (io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest)2 InstrumentationLibraryMetrics (io.opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics)2 ResourceMetrics (io.opentelemetry.proto.metrics.v1.ResourceMetrics)2 ArrayList (java.util.ArrayList)2 Test (org.junit.Test)2 DefaultBucket (com.amazon.dataprepper.model.metric.DefaultBucket)1 Gauge (io.opentelemetry.proto.metrics.v1.Gauge)1 Histogram (io.opentelemetry.proto.metrics.v1.Histogram)1 HistogramDataPoint (io.opentelemetry.proto.metrics.v1.HistogramDataPoint)1 NumberDataPoint (io.opentelemetry.proto.metrics.v1.NumberDataPoint)1 Resource (io.opentelemetry.proto.resource.v1.Resource)1 List (java.util.List)1 Map (java.util.Map)1