{
  "configurations": [
    {
      "declarative_name": "java.common.controller_telemetry/development.enabled",
      "default": false,
      "description": "Enables the creation of experimental controller spans.",
      "name": "otel.instrumentation.common.experimental.controller-telemetry.enabled",
      "type": "boolean"
    }
  ],
  "description": "This instrumentation enriches HTTP server spans with route information for Spring WebFlux 5.0+. It also installs WebClient telemetry interceptors and enables controller spans (controller spans are disabled by default).",
  "display_name": "Spring WebFlux",
  "features": [
    "HTTP_ROUTE",
    "CONTROLLER_SPANS"
  ],
  "has_javaagent": true,
  "javaagent_target_versions": [
    "io.projectreactor.ipc:reactor-netty:[0.7.0.RELEASE,)",
    "io.projectreactor.netty:reactor-netty:[0.8.0.RELEASE,)",
    "org.springframework:spring-webflux:[5.0.0.RELEASE,)"
  ],
  "library_link": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/reactive/package-summary.html",
  "name": "spring-webflux-5.0",
  "scope": {
    "name": "io.opentelemetry.spring-webflux-5.0",
    "schema_url": "https://opentelemetry.io/schemas/1.41.0"
  },
  "source_path": "instrumentation/spring/spring-webflux/spring-webflux-5.0",
  "telemetry": [
    {
      "metrics": [
        {
          "attributes": [
            {
              "name": "http.request.method",
              "type": "STRING"
            },
            {
              "name": "http.response.status_code",
              "type": "LONG"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            }
          ],
          "data_type": "HISTOGRAM",
          "description": "Duration of HTTP client requests.",
          "instrument": "histogram",
          "name": "http.client.request.duration",
          "unit": "s"
        }
      ],
      "spans": [
        {
          "attributes": [
            {
              "name": "error.type",
              "type": "STRING"
            },
            {
              "name": "http.request.method",
              "type": "STRING"
            },
            {
              "name": "http.response.status_code",
              "type": "LONG"
            },
            {
              "name": "peer.service",
              "type": "STRING"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            },
            {
              "name": "url.full",
              "type": "STRING"
            }
          ],
          "span_kind": "CLIENT"
        },
        {
          "attributes": [
            {
              "name": "code.function",
              "type": "STRING"
            },
            {
              "name": "code.namespace",
              "type": "STRING"
            }
          ],
          "span_kind": "INTERNAL"
        }
      ],
      "when": "otel.instrumentation.common.experimental.controller-telemetry.enabled=true"
    },
    {
      "metrics": [
        {
          "attributes": [
            {
              "name": "http.request.method",
              "type": "STRING"
            },
            {
              "name": "http.response.status_code",
              "type": "LONG"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            }
          ],
          "data_type": "HISTOGRAM",
          "description": "Duration of HTTP client requests.",
          "instrument": "histogram",
          "name": "http.client.request.duration",
          "unit": "s"
        }
      ],
      "spans": [
        {
          "attributes": [
            {
              "name": "error.type",
              "type": "STRING"
            },
            {
              "name": "http.request.method",
              "type": "STRING"
            },
            {
              "name": "http.response.status_code",
              "type": "LONG"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            },
            {
              "name": "service.peer.name",
              "type": "STRING"
            },
            {
              "name": "url.full",
              "type": "STRING"
            }
          ],
          "span_kind": "CLIENT"
        },
        {
          "attributes": [
            {
              "name": "code.function",
              "type": "STRING"
            },
            {
              "name": "code.namespace",
              "type": "STRING"
            }
          ],
          "span_kind": "INTERNAL"
        }
      ],
      "when": "otel.instrumentation.common.experimental.controller-telemetry.enabled=true,otel.semconv-stability.opt-in=service.peer"
    }
  ]
}