Arize Phoenix

A service providing Arize Phoenix, an AI Observability and Evaluation platform based on OpenTelemetry and OpenInference, for development and testing purposes.

It works with Spring Boot libraries that support OpenTelemetry, including:

Since Phoenix only supports OpenTelemetry traces, when the Dev Service is enabled, the export of OpenTelemetry logs and metrics is disabled unless explicitly configured.

The Dev Service for Arize Phoenix is mutually exclusive with the Dev Service for Grafana LGTM and OpenTelemetry Collector, as they all integrate with OpenTelemetry. If more than one of those Dev Services is included in the project dependencies, ensure you only enable one of them via configuration properties (arconia.dev.services.<name>.enabled).

Dependencies

First, you need to add the Dev Service dependency to your project.

  • Gradle

  • Maven

dependencies {
  testAndDevelopmentOnly "io.arconia:arconia-dev-services-phoenix"
}
<dependency>
    <groupId>io.arconia</groupId>
    <artifactId>arconia-dev-services-phoenix</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

You can optionally include the Spring Boot DevTools dependency to enable live reload of your application during development.

  • Gradle

  • Maven

dependencies {
  developmentOnly "org.springframework.boot:spring-boot-devtools"
}
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

When you use the Spring Boot DevTools in your project, Arconia will keep the Dev Services running while you make changes to your code instead of restarting them with the application. This allows you to see the changes in real-time without having to restart the Dev Services.

Running the Application

When using the Arconia Dev Services, you can keep running your application as you normally would. The Dev Services will automatically start when you run your application.

  • Gradle

  • Maven

  • CLI

./gradlew bootRun
./mvnw spring-boot:run
arconia dev
Unlike the lower-level Testcontainers support in Spring Boot, Arconia doesn’t require special tasks to run your application when using Dev Services (./gradlew bootTestRun or ./mvnw spring-boot:test-run) nor requires you to define a separate @SpringBootApplication class for configuring Testcontainers.

Your integration tests will automatically use the Dev Services without any additional configuration.

By default, when running the application in dev mode, the Dev Service will be shared across multiple applications.

Accessing Phoenix

The application logs will show you the URL where you can access the Arize Phoenix UI.

...Phoenix UI: http://localhost:<port>

By default, traces are exported via OTLP using the HTTP/Protobuf format.

Configuring the Dev Service

You can configure the Dev Service via configuration properties.

Property Default Description

arconia.dev.services.phoenix.enabled

true

Whether the dev service is enabled.

arconia.dev.services.phoenix.image-name

arizephoenix/phoenix

Full name of the container image used in the dev service.

arconia.dev.services.phoenix.environment

{}

Environment variables to set in the container.

arconia.dev.services.phoenix.network-aliases

[]

Network aliases to assign to the dev service container.

arconia.dev.services.phoenix.port

0

Fixed port for exposing the Phoenix OTLP HTTP and UI port to the host. When it’s 0 (default), a random available port is assigned dynamically.

arconia.dev.services.phoenix.resources

[]

Resources from the classpath or host filesystem to copy into the container. They can be files or directories that will be copied to the specified destination path inside the container at startup and are immutable (read-only).

arconia.dev.services.phoenix.shared

true

Whether the dev service is shared among applications. Only applicable in dev mode.

arconia.dev.services.phoenix.startup-timeout

30s

Maximum waiting time for the service to start.

arconia.dev.services.phoenix.volumes

[]

Files or directories to mount from the host filesystem into the container. They are mounted at the specified destination path inside the container at startup and are mutable (read-write). Changes in either the host or the container will be immediately reflected in the other.

arconia.dev.services.phoenix.otlp-grpc-port

0

Fixed port for exposing the Phoenix OTLP gRPC port to the host. When it’s 0 (default), a random available port is assigned dynamically.

You can enable/disable the Dev Service selectively for a specific application mode (development, test), relying on one of the profiles which are automatically configured by Arconia (see Profiles).

You can enable/disable the Dev Service for a specific test class by using the @TestProperty annotation or equivalent Spring testing utilities.