Splunk Observability Cloud 用に Java アプリケーションの手動でインストルメンテーションする
スパンにカスタム属性を追加する必要がある場合、またはスパンとメトリクスを手動で生成する必要がある場合は、Java アプリケーションを手動でインストルメントします。
Splunk Distribution of OpenTelemetry Java のエージェントを使ってアプリケーションを自動的にインストルメントすれば、ほとんどのニーズに対応できます。アプリケーションを手動でインストルメントする必要があるのは、たとえば、スパンにカスタム属性を追加する必要があるときや、スパンとメトリクスを手動で生成する必要があるときだけです。
カスタムJavaアプリケーショントレースの送信
カスタムのスパンとトレースを作成するには、以下の手順に従ってください:
-
Splunk Distribution of OpenTelemetry Java をインストールします。「Splunk Observability Cloud に Java アプリケーションをインストルメンテーションする」を参照してください。
-
getTracerメソッドを使用して、トレーサーを獲得します:import io.opentelemetry.api.trace.Tracer; Tracer tracer = openTelemetry.getTracer("instrumentation-scope-name", "instrumentation-scope-version"); -
スパンを作成します。次の例は、サンプルアプリケーションでスパンを作成および終了する方法を示しています。
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(); } }
その他の例については、https://opentelemetry.io/docs/java/manual_instrumentation の OpenTelemetry Java インストルメンテーションリポジトリにある手動インストルメンテーションのドキュメントを参照してください。
カスタムJavaアプリケーション・メトリクスの送信
カスタムメトリクスを作成するには、以下の手順に従います:
-
Splunk Distribution of OpenTelemetry Java をインストールします。「Splunk Observability Cloud に Java アプリケーションをインストルメンテーションする」を参照してください。
-
メーターを作ります:
OpenTelemetry openTelemetry = GlobalOpenTelemetry.get(); Meter sampleMeter = openTelemetry.getMeter("foo.example.metrics"); -
特定のメトリクスタイプを作成します。次の例は、ゲージメトリクスを作成する方法を示しています。
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()));
その他の例については、https://opentelemetry.io/docs/java/manual_instrumentation の OpenTelemetry Java インストルメンテーションリポジトリにある手動インストルメンテーションのドキュメントを参照してください。