Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

Library Instrumentation for Armeria version 1.3 and higher

Provides OpenTelemetry instrumentation for Armeria, enabling HTTP client spans and metrics, and HTTP server spans and metrics.

Quickstart

Add these dependencies to your project

Replace OPENTELEMETRY_VERSION with the latest release.

For Maven, add to your pom.xml dependencies:

<dependencies>
  <dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-armeria-1.3</artifactId>
    <version>OPENTELEMETRY_VERSION</version>
  </dependency>
</dependencies>

For Gradle, add to your dependencies:

implementation("io.opentelemetry.instrumentation:opentelemetry-armeria-1.3:OPENTELEMETRY_VERSION")

Usage

Server

import com.linecorp.armeria.server.Server;
import com.linecorp.armeria.server.ServerBuilder;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaServerTelemetry;

// ...

// Get an OpenTelemetry instance
OpenTelemetry openTelemetry = ...;

// Create an ArmeriaServerTelemetry instance
ArmeriaServerTelemetry telemetry = ArmeriaServerTelemetry.create(openTelemetry);

// Add the decorator to your server builder
Server server = Server.builder()
    .decorator(telemetry.createDecorator())
    // ... other server configuration
    .build();

Client

import com.linecorp.armeria.client.ClientBuilder;
import com.linecorp.armeria.client.WebClient;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaClientTelemetry;

// ...

// Get an OpenTelemetry instance
OpenTelemetry openTelemetry = ...;

// Create an ArmeriaClientTelemetry instance
ArmeriaClientTelemetry telemetry = ArmeriaClientTelemetry.create(openTelemetry);

// Add the decorator to your client builder
WebClient client = new ClientBuilder("http://my-service.com")
    .decorator(telemetry.createDecorator())
    // ... other client configuration
    .build(WebClient.class);