Skip to content

Commit

Permalink
start trace as new service
Browse files Browse the repository at this point in the history
  • Loading branch information
rgstephens committed Sep 26, 2023
1 parent ef94e60 commit 51b226f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 11 deletions.
19 changes: 10 additions & 9 deletions rasa_sdk/tracing/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from typing import Any, Dict, Optional, Text

import grpc
from opentelemetry import trace
from opentelemetry.exporter.jaeger.thrift import JaegerExporter
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
Expand All @@ -14,7 +15,7 @@
from rasa_sdk.tracing.endpoints import EndpointConfig, read_endpoint_config


TRACING_SERVICE_NAME = os.environ.get("TRACING_SERVICE_NAME", "rasa_sdk")
TRACING_SERVICE_NAME = os.environ.get("RASA_SDK_TRACING_SERVICE_NAME", "action_server")

ENDPOINTS_TRACING_KEY = "tracing"

Expand All @@ -36,7 +37,7 @@ def get_tracer_provider(endpoints_file: Text) -> Optional[TracerProvider]:

if not cfg:
logger.info(
f"No endpoint for tracing type available in {endpoints_file},"
f"No endpoint for tracing type available in {endpoints_file}, "
f"tracing will not be configured."
)
return None
Expand Down Expand Up @@ -131,11 +132,8 @@ def configure_from_endpoint_config(cls, cfg: EndpointConfig) -> TracerProvider:
:param cfg: The configuration to be read for configuring tracing.
:return: The configured `TracerProvider`.
"""
provider = TracerProvider(
resource=Resource.create(
{SERVICE_NAME: cfg.kwargs.get("service_name", TRACING_SERVICE_NAME)}
)
)
resource = Resource(attributes={"service.name": TRACING_SERVICE_NAME})
trace.set_tracer_provider(TracerProvider(resource=resource))

insecure = cfg.kwargs.get("insecure")

Expand All @@ -150,9 +148,12 @@ def configure_from_endpoint_config(cls, cfg: EndpointConfig) -> TracerProvider:
f"Registered {cfg.type} endpoint for tracing. "
f"Traces will be exported to {cfg.kwargs['endpoint']}"
)
provider.add_span_processor(BatchSpanProcessor(otlp_exporter))
trace.get_tracer_provider().add_span_processor(
BatchSpanProcessor(otlp_exporter)
)
tracer = trace.get_tracer(__name__) # returns opentelemetry.sdk.trace.Tracer object

return provider
return tracer

@classmethod
def _get_credentials(
Expand Down
13 changes: 11 additions & 2 deletions rasa_sdk/tracing/utils.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import argparse
import logging
from rasa_sdk.tracing import config
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator

from opentelemetry.sdk.trace import TracerProvider
from sanic.request import Request

from typing import Optional, Tuple, Any, Text

logger = logging.getLogger(__name__)

def get_tracer_provider(
cmdline_arguments: argparse.Namespace,
Expand All @@ -27,12 +30,18 @@ def get_tracer_and_context(
tracer_provider: Optional[TracerProvider], request: Request
) -> Tuple[Any, Any, Text]:
"""Gets tracer and context"""
span_name = "rasa_sdk.create_app.webhook"
span_name = "/webhook"
trace.set_tracer_provider(
TracerProvider(
resource=Resource.create({"service.name": "action_server"})
)
)
if tracer_provider is None:
tracer = trace.get_tracer(span_name)
context = None
else:
tracer = tracer_provider.get_tracer(span_name)
# logger.debug(f"Using existing tracer_provider #3, span_name: {span_name}, headers: {request.headers}")
tracer = trace.get_tracer(span_name)
context = TraceContextTextMapPropagator().extract(request.headers)
return (tracer, context, span_name)

Expand Down

0 comments on commit 51b226f

Please sign in to comment.