I have AWS Lambda which collects and calculates data (in histogram format).
- I want to send that data to Prometheus using Opentelemetry.
- I can’t use PushGateWay for security reasons.
- As I run lambda, I don’t have API or expose API to scrape.
I’ve attached layer (arn:aws:lambda::184161586896:layer:opentelemetry-nodejs-0_9_0:4),
I’ve tried following code to send custom metrics and other solutions, but none of them worked.
import { MeterProvider } from '@opentelemetry/sdk-metrics';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = "<endpoint URL>";
const otlpMetricExporter = new OTLPMetricExporter({
url: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
});
const meterProvider = new MeterProvider({
exporter: otlpMetricExporter
});
const meter = meterProvider.getMeter('meter-name');
const blockingTimeHistogram = meter.createHistogram('metric1', {
description: 'metric1',
boundaries: [0, 50, 100, 200, 500, 1000], // Custom boundaries for milliseconds
});
export const recordMetrics = async (metric1) => {
try {
blockingTimeHistogram.record(parseFloat(metric1), { metricName: "name" });
// await meterProvider.forceFlush();
meterProvider.shutdown();
} catch (error) {
console.error("Prometheus call failed with Error : " + error);
}
};