|
13 | 13 | from django.http import HttpResponse, JsonResponse |
14 | 14 | from opentelemetry import trace, metrics |
15 | 15 | from opentelemetry.trace.span import format_trace_id |
| 16 | +from opentelemetry.sdk.resources import Resource |
| 17 | +from opentelemetry.sdk.metrics import MeterProvider |
| 18 | +from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader |
| 19 | +from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter |
| 20 | +from opentelemetry.semconv.resource import ResourceAttributes |
16 | 21 |
|
17 | 22 | logger = logging.getLogger(__name__) |
18 | 23 |
|
| 24 | +# Custom export pipeline - runs alongside existing CWAgent & ADOT setup |
| 25 | +pipeline_resource = Resource.create({ |
| 26 | + "service.name": os.environ['SERVICE_NAME'], |
| 27 | + "deployment.environment.name": os.environ['DEPLOYMENT_ENVIRONMENT_NAME'] |
| 28 | +}) |
| 29 | + |
| 30 | +pipeline_metric_exporter = OTLPMetricExporter( |
| 31 | + endpoint="localhost:4317" |
| 32 | +) |
| 33 | + |
| 34 | +pipeline_metric_reader = PeriodicExportingMetricReader( |
| 35 | + exporter=pipeline_metric_exporter, |
| 36 | + export_interval_millis=1000 |
| 37 | +) |
| 38 | + |
| 39 | +pipeline_meter_provider = MeterProvider( |
| 40 | + resource=pipeline_resource, |
| 41 | + metric_readers=[pipeline_metric_reader] |
| 42 | +) |
| 43 | + |
| 44 | +pipeline_meter = pipeline_meter_provider.get_meter("myMeter") |
| 45 | + |
| 46 | + |
19 | 47 | #python equivalent of Meter meter = GlobalOpenTelemetry.getMeter("myMeter"); for custom metrics |
20 | 48 | meter = metrics.get_meter("myMeter") |
21 | 49 | agent_based_counter = meter.create_counter("agent_based_counter", unit="1", description="agent export counter") |
22 | 50 | agent_based_histogram = meter.create_histogram("agent_based_histogram", description="agent export histogram") |
23 | 51 | agent_based_gauge = meter.create_up_down_counter("agent_based_gauge", unit="1", description="agent export gauge") |
24 | 52 |
|
| 53 | +custom_pipeline_counter = pipeline_meter.create_counter("custom_pipeline_counter", unit="1", description="pipeline export counter") |
| 54 | +custom_pipeline_histogram = pipeline_meter.create_histogram("custom_pipeline_histogram", description="pipeline export histogram") |
| 55 | +custom_pipeline_gauge = pipeline_meter.create_up_down_counter("custom_pipeline_gauge", unit="1", description="pipeline export gauge") |
| 56 | + |
25 | 57 |
|
26 | 58 | should_send_local_root_client_call = False |
27 | 59 | lock = threading.Lock() |
@@ -63,6 +95,10 @@ def aws_sdk_call(request): |
63 | 95 | agent_based_histogram.record(random.randint(100, 1000), {"Operation": "histogram"}) |
64 | 96 | agent_based_gauge.add(random.randint(-10, 10), {"Operation": "gauge"}) |
65 | 97 |
|
| 98 | + custom_pipeline_counter.add(1, {"Operation": "pipeline_counter"}) |
| 99 | + custom_pipeline_histogram.record(random.randint(100, 1000), {"Operation": "pipeline_histogram"}) |
| 100 | + custom_pipeline_gauge.add(random.randint(-10, 10), {"Operation": "pipeline_gauge"}) |
| 101 | + |
66 | 102 | bucket_name = "e2e-test-bucket-name" |
67 | 103 |
|
68 | 104 | # Add a unique test ID to bucketname to associate buckets to specific test runs |
|
0 commit comments