Splunk Observability Cloud 用に Java アプリケーションの手動でインストルメンテーションする 🔗
Splunk Distribution of OpenTelemetry Java のエージェントを使用してアプリケーションを自動的にインストルメンテーションすることで、ほとんどのニーズに対応できます。アプリケーションを手動でインストルメンテーションする必要があるのは、たとえばスパンにカスタム属性を追加する必要がある場合や、スパンとメトリクスを手動で生成する必要がある場合のみです。
注釈
手動 OTel インストルメンテーションは Splunk 自動 JVM インストルメンテーションと完全に互換性があり、Splunk によって完全にサポートされています。
Send custom Java application traces 🔗
カスタムのスパンとトレースを作成するには、以下の手順に従ってください:
Install the Splunk Distribution of OpenTelemetry Java. See Splunk Observability Cloud に Java アプリケーションをインストルメンテーションする.
Acquire a tracer using the
getTracer
method:import io.opentelemetry.api.trace.Tracer; Tracer tracer = openTelemetry.getTracer("instrumentation-scope-name", "instrumentation-scope-version");
Create a span. The following example shows how to create and end a span in a sample application:
import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Scope; // ... @GetMapping("/rolldice") public List<Integer> index(@RequestParam("player") Optional<String> player, @RequestParam("rolls") Optional<Integer> rolls) { Span span = tracer.spanBuilder("rollTheDice") .setAttribute("player.name", player.orElse("unknown")) .startSpan(); // Make the span the current span try (Scope scope = span.makeCurrent()) { //.. Application logic } catch(Throwable t) { span.recordException(t); throw t; } finally { span.end(); } }
For more examples, see the manual instrumentation docs in the OpenTelemetry Java Instrumentation repository at https://opentelemetry.io/docs/java/manual_instrumentation .
カスタムJavaアプリケーション・メトリクスの送信 🔗
カスタムメトリクスを作成するには、以下の手順に従います:
Install the Splunk Distribution of OpenTelemetry Java. See Splunk Observability Cloud に Java アプリケーションをインストルメンテーションする.
メーターを作ります:
OpenTelemetry openTelemetry = GlobalOpenTelemetry.get(); Meter sampleMeter = openTelemetry.getMeter("foo.example.metrics");
Build a specific metric type. The following example shows how to create a gauge metric:
sampleMeter .gaugeBuilder("player.hitpoints") .setDescription("A player's currently remaining hit points.") .setUnit("HP") .ofLongs() .buildWithCallback(res -> { long hitpoints = currentPlayer.hitpoints(); String playerName = currentPlayer.name(); res.record(hitpoints, Attributes.of(stringKey("name"), playerName))); }); .buildWithCallback( result -> result.record(Runtime.getRuntime().totalMemory(), Attributes.empty()));
For more examples, see the manual instrumentation docs in the OpenTelemetry Java Instrumentation repository at https://opentelemetry.io/docs/java/manual_instrumentation .