|
| 1 | +Entry Points |
| 2 | +============ |
| 3 | + |
| 4 | +OpenTelemetry Python uses Python's **entry points** mechanism to provide a pluggable architecture. Entry points allow you to register custom components (exporters, samplers, etc.) that can be discovered and loaded at runtime. |
| 5 | + |
| 6 | +Configuration |
| 7 | +------------- |
| 8 | + |
| 9 | +Entry points are controlled via environment variables: |
| 10 | + |
| 11 | +* ``OTEL_TRACES_EXPORTER`` - Trace exporters (e.g., ``console``, ``otlp_proto_grpc``) |
| 12 | +* ``OTEL_METRICS_EXPORTER`` - Metrics exporters (e.g., ``console``, ``prometheus``) |
| 13 | +* ``OTEL_LOGS_EXPORTER`` - Log exporters (e.g., ``console``, ``otlp_proto_http``) |
| 14 | +* ``OTEL_TRACES_SAMPLER`` - Trace samplers (e.g., ``always_on``, ``traceidratio``) |
| 15 | +* ``OTEL_PROPAGATORS`` - Context propagators (e.g., ``tracecontext,baggage``) |
| 16 | + |
| 17 | +Available Entry Point Groups |
| 18 | +---------------------------- |
| 19 | + |
| 20 | +**Exporters** - Send telemetry data to backends: |
| 21 | + |
| 22 | +* ``opentelemetry_traces_exporter`` - Trace exporters |
| 23 | +* ``opentelemetry_metrics_exporter`` - Metrics exporters |
| 24 | +* ``opentelemetry_logs_exporter`` - Log exporters |
| 25 | + |
| 26 | +**Configuration** - Control telemetry behavior: |
| 27 | + |
| 28 | +* ``opentelemetry_traces_sampler`` - Decide which traces to collect |
| 29 | +* ``opentelemetry_id_generator`` - Generate trace/span IDs |
| 30 | +* ``opentelemetry_resource_detector`` - Detect environment info |
| 31 | + |
| 32 | +**Context** - Manage distributed tracing context: |
| 33 | + |
| 34 | +* ``opentelemetry_propagator`` - Cross-service context propagation |
| 35 | +* ``opentelemetry_context`` - Context storage mechanism |
| 36 | + |
| 37 | +**Providers** - Core telemetry factories: |
| 38 | + |
| 39 | +* ``opentelemetry_tracer_provider`` - Create tracers |
| 40 | +* ``opentelemetry_meter_provider`` - Create meters |
| 41 | +* ``opentelemetry_logger_provider`` - Create loggers |
| 42 | + |
| 43 | +Creating a Custom Exporter |
| 44 | +--------------------------- |
| 45 | + |
| 46 | +1. **Create your exporter class**: |
| 47 | + |
| 48 | +.. code-block:: python |
| 49 | +
|
| 50 | + from opentelemetry.sdk.trace.export import SpanExporter |
| 51 | + |
| 52 | + class MyExporter(SpanExporter): |
| 53 | + def export(self, spans): |
| 54 | + # Your export logic here |
| 55 | + for span in spans: |
| 56 | + print(f"Exporting: {span.name}") |
| 57 | +
|
| 58 | +2. **Register in pyproject.toml**: |
| 59 | + |
| 60 | +.. code-block:: toml |
| 61 | +
|
| 62 | + [project.entry-points.opentelemetry_traces_exporter] |
| 63 | + my_exporter = "mypackage.exporters:MyExporter" |
| 64 | +
|
| 65 | +3. **Use it**: |
| 66 | + |
| 67 | +.. code-block:: bash |
| 68 | +
|
| 69 | + export OTEL_TRACES_EXPORTER=my_exporter |
| 70 | + python your_app.py |
| 71 | +
|
| 72 | +See Also |
| 73 | +-------- |
| 74 | + |
| 75 | +* :doc:`trace` - Trace SDK documentation |
| 76 | +* :doc:`metrics` - Metrics SDK documentation |
| 77 | +* :doc:`environment_variables` - Environment variable reference |
0 commit comments