Skip to content

Instantly share code, notes, and snippets.

@pavelbucek
Created September 4, 2023 08:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pavelbucek/445eb104625f4816dfbae60c30597dee to your computer and use it in GitHub Desktop.
Save pavelbucek/445eb104625f4816dfbae60c30597dee to your computer and use it in GitHub Desktop.
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
import io.opentelemetry.sdk.resources.Resource;
import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class DynamicMetric {
public static void main(String[] args) throws InterruptedException {
// resource definition - one per service / jvm
Resource resource = Resource.getDefault()
.merge(Resource.create(
Attributes.of(AttributeKey.stringKey("service.name"), "manualService",
AttributeKey.stringKey("service.instance.id"), "myJavaInstance",
AttributeKey.stringKey("telemetry.sdk.name"), "opentelemetry-internal")));
// OTEL SDK initialization - metric only
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
.setResource(resource)
.build();
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
.setMeterProvider(sdkMeterProvider)
.buildAndRegisterGlobal();
// OTEL SDK metric initialization
openTelemetry.meterBuilder("scopeName").build()
.gaugeBuilder("my.first.metric")
.ofLongs()
.buildWithCallback(longMeasurement -> longMeasurement.record(Math.abs(new Random().nextLong() % 100)));
// let the program run for a while
new CountDownLatch(1).await(5, TimeUnit.MINUTES);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment