{
  "configurations": [
    {
      "declarative_name": "java.common.service_peer_mapping",
      "declarative_schema": {
        "properties": {
          "peer": {
            "description": "Host name or IP address to match against.",
            "type": "string"
          },
          "service_name": {
            "description": "Peer service name to record for matching peers.",
            "type": "string"
          }
        },
        "required": [
          "peer",
          "service_name"
        ],
        "type": "object"
      },
      "declarative_type": "structured_list",
      "default": "",
      "description": "Used to specify a mapping from host names or IP addresses to peer services.",
      "name": "otel.instrumentation.common.peer-service-mapping",
      "type": "map"
    }
  ],
  "description": "The Apache Dubbo instrumentation provides RPC client spans and metrics, and RPC server spans and metrics for Apache Dubbo RPC calls.",
  "display_name": "Apache Dubbo",
  "has_javaagent": true,
  "javaagent_target_versions": [
    "org.apache.dubbo:dubbo:[2.7,)"
  ],
  "library_link": "https://github.com/apache/dubbo/",
  "name": "apache-dubbo-2.7",
  "scope": {
    "name": "io.opentelemetry.apache-dubbo-2.7"
  },
  "semantic_conventions": [
    "RPC_CLIENT_SPANS",
    "RPC_CLIENT_METRICS",
    "RPC_SERVER_SPANS",
    "RPC_SERVER_METRICS"
  ],
  "source_path": "instrumentation/apache-dubbo-2.7",
  "telemetry": [
    {
      "metrics": [
        {
          "attributes": [
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.service",
              "type": "STRING"
            },
            {
              "name": "rpc.system",
              "type": "STRING"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            }
          ],
          "data_type": "HISTOGRAM",
          "description": "The duration of an outbound RPC invocation.",
          "instrument": "histogram",
          "name": "rpc.client.duration",
          "unit": "ms"
        },
        {
          "attributes": [
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.service",
              "type": "STRING"
            },
            {
              "name": "rpc.system",
              "type": "STRING"
            }
          ],
          "data_type": "HISTOGRAM",
          "description": "The duration of an inbound RPC invocation.",
          "instrument": "histogram",
          "name": "rpc.server.duration",
          "unit": "ms"
        }
      ],
      "spans": [
        {
          "attributes": [
            {
              "name": "peer.service",
              "type": "STRING"
            },
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.service",
              "type": "STRING"
            },
            {
              "name": "rpc.system",
              "type": "STRING"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            }
          ],
          "span_kind": "CLIENT"
        },
        {
          "attributes": [
            {
              "name": "network.peer.address",
              "type": "STRING"
            },
            {
              "name": "network.peer.port",
              "type": "LONG"
            },
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.service",
              "type": "STRING"
            },
            {
              "name": "rpc.system",
              "type": "STRING"
            }
          ],
          "span_kind": "SERVER"
        }
      ],
      "when": "default"
    },
    {
      "metrics": [
        {
          "attributes": [
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.system.name",
              "type": "STRING"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            }
          ],
          "data_type": "HISTOGRAM",
          "description": "Measures the duration of outbound remote procedure calls (RPC).",
          "instrument": "histogram",
          "name": "rpc.client.call.duration",
          "unit": "s"
        },
        {
          "attributes": [
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.system.name",
              "type": "STRING"
            }
          ],
          "data_type": "HISTOGRAM",
          "description": "Measures the duration of inbound remote procedure calls (RPC).",
          "instrument": "histogram",
          "name": "rpc.server.call.duration",
          "unit": "s"
        }
      ],
      "spans": [
        {
          "attributes": [
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.system.name",
              "type": "STRING"
            },
            {
              "name": "server.address",
              "type": "STRING"
            },
            {
              "name": "server.port",
              "type": "LONG"
            },
            {
              "name": "service.peer.name",
              "type": "STRING"
            }
          ],
          "span_kind": "CLIENT"
        },
        {
          "attributes": [
            {
              "name": "network.peer.address",
              "type": "STRING"
            },
            {
              "name": "network.peer.port",
              "type": "LONG"
            },
            {
              "name": "rpc.method",
              "type": "STRING"
            },
            {
              "name": "rpc.system.name",
              "type": "STRING"
            }
          ],
          "span_kind": "SERVER"
        }
      ],
      "when": "otel.semconv-stability.opt-in=rpc,service.peer"
    }
  ]
}