From 3e5b49ef9d2c3ddb0127cb61071cfdda9317696b Mon Sep 17 00:00:00 2001 From: Harsh Modi Date: Jun 15 2023 14:14:31 +0000 Subject: create example programattic trace for koji-cli Signed-off-by: Harsh Modi --- diff --git a/cli/koji b/cli/koji index 87fd6f1..3b04a08 100755 --- a/cli/koji +++ b/cli/koji @@ -42,6 +42,18 @@ import koji.util from koji_cli.commands import * # noqa: F401, F403 from koji_cli.lib import categories, get_epilog_str, greetings, warn +try: + from otel_extensions import TelemetryOptions, init_telemetry_provider + + # Configure OpenTelemetry tracing wrapper. + otel_options = TelemetryOptions( + OTEL_SERVICE_NAME="koji-cli", + OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318", + OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf", + ) + init_telemetry_provider(otel_options) +except ImportError: + print("Cannot import OpenTelemetry dependencies, skipping OpenTelemetry initialization") def register_plugin(plugin): """Scan a given plugin for handlers diff --git a/cli/koji_cli/lib.py b/cli/koji_cli/lib.py index 2ec1a1f..84245b6 100644 --- a/cli/koji_cli/lib.py +++ b/cli/koji_cli/lib.py @@ -25,6 +25,12 @@ from koji import _ # noqa: F401 from koji.util import md5_constructor, to_list from koji.xmlrpcplus import xmlrpc_client +try: + from opentelemetry.instrumentation.requests import RequestsInstrumentor + + RequestsInstrumentor().instrument() +except ImportError: + print("Cannot import RequestsInstrumentor, skipping 'requests' instrumentation") # for compatibility with plugins based on older version of lib # Use optparse imports directly in new code. diff --git a/otel-requirements.txt b/otel-requirements.txt new file mode 100644 index 0000000..85ddc50 --- /dev/null +++ b/otel-requirements.txt @@ -0,0 +1,12 @@ +opentelemetry-api==1.18.0 +opentelemetry-exporter-otlp==1.18.0 +opentelemetry-exporter-otlp-proto-common==1.18.0 +opentelemetry-exporter-otlp-proto-grpc==1.18.0 +opentelemetry-exporter-otlp-proto-http==1.18.0 +opentelemetry-instrumentation==0.39b0 +opentelemetry-instrumentation-requests==0.39b0 +opentelemetry-proto==1.18.0 +opentelemetry-sdk==1.18.0 +opentelemetry-semantic-conventions==0.39b0 +opentelemetry-util-http==0.39b0 +otel-extensions==0.2.4