meshagent-otel 0.1.0__tar.gz
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.
- meshagent_otel-0.1.0/PKG-INFO +27 -0
- meshagent_otel-0.1.0/README.md +14 -0
- meshagent_otel-0.1.0/meshagent/otel/__init__.py +130 -0
- meshagent_otel-0.1.0/meshagent/otel/version.py +1 -0
- meshagent_otel-0.1.0/meshagent_otel.egg-info/PKG-INFO +27 -0
- meshagent_otel-0.1.0/meshagent_otel.egg-info/SOURCES.txt +9 -0
- meshagent_otel-0.1.0/meshagent_otel.egg-info/dependency_links.txt +1 -0
- meshagent_otel-0.1.0/meshagent_otel.egg-info/requires.txt +2 -0
- meshagent_otel-0.1.0/meshagent_otel.egg-info/top_level.txt +1 -0
- meshagent_otel-0.1.0/pyproject.toml +31 -0
- meshagent_otel-0.1.0/setup.cfg +4 -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,14 @@
|
|
1
|
+
## MeshAgent Otel
|
2
|
+
|
3
|
+
The ``meshagent.otel`` package is a streamlined way to enable otel in your meshagent projects.
|
4
|
+
|
5
|
+
Check out the [CLI Quickstart](https://docs.meshagent.com/cli/getting_started) for more details.
|
6
|
+
|
7
|
+
---
|
8
|
+
### Learn more about MeshAgent on our website or check out the docs for additional examples!
|
9
|
+
|
10
|
+
**Website**: [www.meshagent.com](https://www.meshagent.com/)
|
11
|
+
|
12
|
+
**Documentation**: [docs.meshagent.com](https://docs.meshagent.com/)
|
13
|
+
|
14
|
+
---
|
@@ -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,9 @@
|
|
1
|
+
README.md
|
2
|
+
pyproject.toml
|
3
|
+
meshagent/otel/__init__.py
|
4
|
+
meshagent/otel/version.py
|
5
|
+
meshagent_otel.egg-info/PKG-INFO
|
6
|
+
meshagent_otel.egg-info/SOURCES.txt
|
7
|
+
meshagent_otel.egg-info/dependency_links.txt
|
8
|
+
meshagent_otel.egg-info/requires.txt
|
9
|
+
meshagent_otel.egg-info/top_level.txt
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
meshagent
|
@@ -0,0 +1,31 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
3
|
+
build-backend = "setuptools.build_meta"
|
4
|
+
|
5
|
+
[project]
|
6
|
+
name = "meshagent-otel"
|
7
|
+
description = "CLI for Meshagent"
|
8
|
+
requires-python = ">=3.12"
|
9
|
+
license = "Apache-2.0"
|
10
|
+
keywords = []
|
11
|
+
dependencies = [
|
12
|
+
"opentelemetry-distro~=0.54b1",
|
13
|
+
"opentelemetry-exporter-otlp-proto-http~=1.33",
|
14
|
+
]
|
15
|
+
|
16
|
+
dynamic = ["version", "readme"]
|
17
|
+
|
18
|
+
[project.urls]
|
19
|
+
Documentation = "https://docs.meshagent.com"
|
20
|
+
Website = "https://www.meshagent.com"
|
21
|
+
Source = "https://www.meshagent.com"
|
22
|
+
|
23
|
+
[tool.setuptools.packages.find]
|
24
|
+
include = ["meshagent.*"]
|
25
|
+
|
26
|
+
[tool.setuptools.package-data]
|
27
|
+
"meshagent" = ["py.typed", "*.pyi", "**/*.pyi", "**/*.js"]
|
28
|
+
|
29
|
+
[tool.setuptools.dynamic]
|
30
|
+
version = {attr = "meshagent.otel.version.__version__"}
|
31
|
+
readme = { file = "README.md", content-type = "text/markdown" }
|