[Feature] Trace: Support http/protobuf span exporter protocol (#12396)
Signed-off-by: zhanghaotong <zhanghaotong.zht@antgroup.com>
This commit is contained in:
@@ -33,6 +33,12 @@ This section explains how to configure the request tracing and export the trace
|
|||||||
|
|
||||||
Replace `0.0.0.0:4317` with the actual endpoint of the opentelemetry collector. If you launched the openTelemetry collector with tracing_compose.yaml, the default receiving port is 4317.
|
Replace `0.0.0.0:4317` with the actual endpoint of the opentelemetry collector. If you launched the openTelemetry collector with tracing_compose.yaml, the default receiving port is 4317.
|
||||||
|
|
||||||
|
To use the HTTP/protobuf span exporter, set the following environment variable and point to an HTTP endpoint, for example, `http://0.0.0.0:4318/v1/traces`.
|
||||||
|
```bash
|
||||||
|
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
4. raise some requests
|
4. raise some requests
|
||||||
5. Observe whether trace data is being exported
|
5. Observe whether trace data is being exported
|
||||||
* Access port 16686 of Jaeger using a web browser to visualize the request traces.
|
* Access port 16686 of Jaeger using a web browser to visualize the request traces.
|
||||||
|
|||||||
@@ -37,7 +37,15 @@ tracing_enabled = False
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from opentelemetry import context, propagate, trace
|
from opentelemetry import context, propagate, trace
|
||||||
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
|
||||||
|
OTLPSpanExporter as GRPCSpanExporter,
|
||||||
|
)
|
||||||
|
from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
|
||||||
|
OTLPSpanExporter as HTTPSpanExporter,
|
||||||
|
)
|
||||||
|
from opentelemetry.sdk.environment_variables import (
|
||||||
|
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL,
|
||||||
|
)
|
||||||
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
|
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
|
||||||
from opentelemetry.sdk.trace import TracerProvider, id_generator
|
from opentelemetry.sdk.trace import TracerProvider, id_generator
|
||||||
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
||||||
@@ -207,7 +215,7 @@ def process_tracing_init(otlp_endpoint, server_name):
|
|||||||
)
|
)
|
||||||
|
|
||||||
processor = BatchSpanProcessor(
|
processor = BatchSpanProcessor(
|
||||||
OTLPSpanExporter(endpoint=otlp_endpoint, insecure=True),
|
span_exporter=get_otlp_span_exporter(otlp_endpoint),
|
||||||
schedule_delay_millis=schedule_delay_millis,
|
schedule_delay_millis=schedule_delay_millis,
|
||||||
max_export_batch_size=max_export_batch_size,
|
max_export_batch_size=max_export_batch_size,
|
||||||
)
|
)
|
||||||
@@ -225,6 +233,22 @@ def process_tracing_init(otlp_endpoint, server_name):
|
|||||||
tracing_enabled = True
|
tracing_enabled = True
|
||||||
|
|
||||||
|
|
||||||
|
def get_otlp_span_exporter(endpoint):
|
||||||
|
protocol = os.environ.get(OTEL_EXPORTER_OTLP_TRACES_PROTOCOL, "grpc")
|
||||||
|
supported_protocols = {"grpc", "http/protobuf"}
|
||||||
|
|
||||||
|
if protocol not in supported_protocols:
|
||||||
|
raise ValueError(
|
||||||
|
f"Unsupported OTLP protocol '{protocol}' configured. "
|
||||||
|
f"Supported protocols are: {', '.join(sorted(supported_protocols))}"
|
||||||
|
)
|
||||||
|
|
||||||
|
if protocol == "grpc":
|
||||||
|
return GRPCSpanExporter(endpoint=endpoint, insecure=True)
|
||||||
|
elif protocol == "http/protobuf":
|
||||||
|
return HTTPSpanExporter(endpoint=endpoint)
|
||||||
|
|
||||||
|
|
||||||
# Should be called by each tracked thread.
|
# Should be called by each tracked thread.
|
||||||
def trace_set_thread_info(
|
def trace_set_thread_info(
|
||||||
thread_label: str, tp_rank: Optional[int] = None, dp_rank: Optional[int] = None
|
thread_label: str, tp_rank: Optional[int] = None, dp_rank: Optional[int] = None
|
||||||
|
|||||||
Reference in New Issue
Block a user