meshagent-otel 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,130 @@
1
+ from opentelemetry.sdk.resources import SERVICE_NAME, Resource
2
+ from opentelemetry import trace
3
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
4
+ from opentelemetry.sdk.trace import TracerProvider
5
+ from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
6
+
7
+ from opentelemetry import metrics
8
+ from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
9
+ from opentelemetry.sdk._logs.export import ConsoleLogExporter
10
+ from opentelemetry.sdk.metrics import MeterProvider
11
+ from opentelemetry.sdk.metrics.export import (
12
+ PeriodicExportingMetricReader,
13
+ ConsoleMetricExporter,
14
+ )
15
+ from opentelemetry import _logs
16
+ from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
17
+ from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
18
+ from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
19
+ from opentelemetry.sdk.metrics.export import AggregationTemporality
20
+ from opentelemetry.sdk.metrics import Counter, Histogram
21
+ import logging
22
+
23
+ import os
24
+
25
+ from .version import __version__
26
+
27
+
28
+ def _call_once(fn):
29
+ called = False
30
+ result = None
31
+
32
+ def wrapper(*args, **kwargs):
33
+ nonlocal called, result
34
+ if not called:
35
+ result = fn(*args, **kwargs)
36
+ called = True
37
+ return result
38
+
39
+ return wrapper
40
+
41
+
42
+ @_call_once
43
+ def otel_config(*, level=logging.INFO, service_name: str = "meshagent-service"):
44
+ attributes = {
45
+ SERVICE_NAME: service_name,
46
+ }
47
+
48
+ if os.getenv("MESHAGENT_PROJECT_ID") is not None:
49
+ attributes["project"] = os.getenv("MESHAGENT_PROJECT_ID")
50
+
51
+ if os.getenv("MESHAGENT_SESSION_ID") is not None:
52
+ attributes["session"] = os.getenv("MESHAGENT_SESSION_ID")
53
+
54
+ if os.getenv("MESHAGENT_ROOM") is not None:
55
+ attributes["room"] = os.getenv("MESHAGENT_ROOM")
56
+
57
+ resource = Resource.create(attributes=attributes)
58
+
59
+ logger_provider = None
60
+ tracer_provider = None
61
+ meter_provider = None
62
+
63
+ add_console_exporters = False
64
+
65
+ otel_endpoint = os.getenv("OTEL_ENDPOINT")
66
+
67
+ if otel_endpoint is not None:
68
+ otel_logs_endpoint = otel_endpoint + "/v1/logs"
69
+ otel_traces_endpoint = otel_endpoint + "/v1/traces"
70
+ otel_metrics_endpoint = otel_endpoint + "/v1/metrics"
71
+
72
+ if otel_logs_endpoint is not None:
73
+ logs_exporter = OTLPLogExporter(
74
+ endpoint=otel_logs_endpoint,
75
+ )
76
+ logger_provider = LoggerProvider(resource=resource)
77
+ _logs.set_logger_provider(logger_provider)
78
+
79
+ logger_provider.add_log_record_processor(
80
+ BatchLogRecordProcessor(logs_exporter)
81
+ )
82
+
83
+ if add_console_exporters:
84
+ logger_provider.add_log_record_processor(
85
+ BatchLogRecordProcessor(ConsoleLogExporter())
86
+ )
87
+
88
+ if otel_traces_endpoint is not None:
89
+ tracer_provider = TracerProvider(resource=resource)
90
+ processor = BatchSpanProcessor(
91
+ OTLPSpanExporter(endpoint=otel_traces_endpoint)
92
+ )
93
+ tracer_provider.add_span_processor(processor)
94
+ if add_console_exporters:
95
+ tracer_provider.add_span_processor(
96
+ BatchSpanProcessor(ConsoleSpanExporter())
97
+ )
98
+ trace.set_tracer_provider(tracer_provider)
99
+
100
+ if otel_metrics_endpoint is not None:
101
+ reader = PeriodicExportingMetricReader(
102
+ exporter=OTLPMetricExporter(
103
+ endpoint=otel_metrics_endpoint,
104
+ preferred_temporality={
105
+ Counter: AggregationTemporality.DELTA,
106
+ Histogram: AggregationTemporality.DELTA,
107
+ },
108
+ ),
109
+ export_interval_millis=1000,
110
+ )
111
+
112
+ readers = [
113
+ reader,
114
+ ]
115
+ if add_console_exporters:
116
+ readers.append(PeriodicExportingMetricReader(ConsoleMetricExporter()))
117
+
118
+ meter_provider = MeterProvider(resource=resource, metric_readers=readers)
119
+ metrics.set_meter_provider(meter_provider)
120
+
121
+ if logger_provider is not None:
122
+ logging_handler = LoggingHandler(level=level, logger_provider=logger_provider)
123
+ root = logging.getLogger()
124
+ root.setLevel(level)
125
+ root.addHandler(logging_handler)
126
+ else:
127
+ logging.basicConfig(level=level)
128
+
129
+
130
+ __all__ = [otel_config, __version__]
@@ -0,0 +1 @@
1
+ __version__ = "0.1.0"
@@ -0,0 +1,27 @@
1
+ Metadata-Version: 2.4
2
+ Name: meshagent-otel
3
+ Version: 0.1.0
4
+ Summary: CLI for Meshagent
5
+ License-Expression: Apache-2.0
6
+ Project-URL: Documentation, https://docs.meshagent.com
7
+ Project-URL: Website, https://www.meshagent.com
8
+ Project-URL: Source, https://www.meshagent.com
9
+ Requires-Python: >=3.12
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: opentelemetry-distro~=0.54b1
12
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http~=1.33
13
+
14
+ ## MeshAgent Otel
15
+
16
+ The ``meshagent.otel`` package is a streamlined way to enable otel in your meshagent projects.
17
+
18
+ Check out the [CLI Quickstart](https://docs.meshagent.com/cli/getting_started) for more details.
19
+
20
+ ---
21
+ ### Learn more about MeshAgent on our website or check out the docs for additional examples!
22
+
23
+ **Website**: [www.meshagent.com](https://www.meshagent.com/)
24
+
25
+ **Documentation**: [docs.meshagent.com](https://docs.meshagent.com/)
26
+
27
+ ---
@@ -0,0 +1,6 @@
1
+ meshagent/otel/__init__.py,sha256=KfrR3uku7nB0AY8dscq4CGoxDQYZ2OtSFzcnt90x1gs,4489
2
+ meshagent/otel/version.py,sha256=kUR5RAFc7HCeiqdlX36dZOHkUI5wI6V_43RpEcD8b-0,22
3
+ meshagent_otel-0.1.0.dist-info/METADATA,sha256=Qfu-U3gmH-EZzBVtYe0ew85VPxHSK0PT6_X0-OZCjOA,882
4
+ meshagent_otel-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
5
+ meshagent_otel-0.1.0.dist-info/top_level.txt,sha256=GlcXnHtRP6m7zlG3Df04M35OsHtNXy_DY09oFwWrH74,10
6
+ meshagent_otel-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ meshagent