|
1 | 1 | Entry Points |
2 | 2 | ============ |
3 | 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. |
| 4 | +OpenTelemetry Python uses Python's `entry points <https://setuptools.pypa.io/en/stable/userguide/entry_point.html>`_ 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 | 5 |
|
6 | 6 | Configuration |
7 | 7 | ------------- |
8 | 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 |
| 9 | +The SDK supports configuring entry points via environment variables by specifying the entry point name. For a complete list of supported environment variables, see :doc:`../api/environment_variables`. |
| 10 | + |
| 11 | +Entry Point Configuration Reference |
| 12 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 13 | + |
| 14 | +.. list-table:: |
| 15 | + :header-rows: 1 |
| 16 | + :widths: 20 20 40 20 |
| 17 | + |
| 18 | + * - Environment Variable |
| 19 | + - Entry Point Group |
| 20 | + - Available Entrypoint Names |
| 21 | + - Base Type |
| 22 | + * - OTEL_LOGS_EXPORTER |
| 23 | + - opentelemetry_logs_exporter |
| 24 | + - ``console``, ``otlp_proto_grpc``, ``otlp_proto_http`` |
| 25 | + - LogExporter |
| 26 | + * - OTEL_METRICS_EXPORTER |
| 27 | + - opentelemetry_metrics_exporter |
| 28 | + - ``console``, ``otlp``, ``otlp_proto_grpc``, |
| 29 | + ``otlp_proto_http``, ``prometheus`` |
| 30 | + - :class:`MetricExporter <opentelemetry.sdk.metrics.export.MetricExporter>` or :class:`MetricReader <opentelemetry.sdk.metrics.export.MetricReader>` |
| 31 | + * - OTEL_PROPAGATORS |
| 32 | + - opentelemetry_propagator |
| 33 | + - ``b3``, ``b3multi``, ``baggage``, |
| 34 | + ``jaeger``, ``tracecontext`` |
| 35 | + - :class:`TextMapPropagator <opentelemetry.propagators.textmap.TextMapPropagator>` |
| 36 | + * - OTEL_TRACES_SAMPLER |
| 37 | + - opentelemetry_traces_sampler |
| 38 | + - ``always_off``, ``always_on``, ``parentbased_always_off``, |
| 39 | + ``parentbased_always_on``, ``parentbased_traceidratio``, ``traceidratio`` |
| 40 | + - :class:`Sampler <opentelemetry.sdk.trace.sampling.Sampler>` |
| 41 | + * - OTEL_EXPERIMENTAL_RESOURCE_DETECTORS |
| 42 | + - opentelemetry_resource_detector |
| 43 | + - ``host``, ``os``, ``otel``, ``process`` |
| 44 | + - :class:`ResourceDetector <opentelemetry.sdk.resources.ResourceDetector>` |
| 45 | + * - OTEL_PYTHON_ID_GENERATOR |
| 46 | + - opentelemetry_id_generator |
| 47 | + - ``random`` |
| 48 | + - :class:`IdGenerator <opentelemetry.sdk.trace.id_generator.IdGenerator>` |
| 49 | + * - OTEL_TRACES_EXPORTER |
| 50 | + - opentelemetry_traces_exporter |
| 51 | + - ``console``, ``otlp``, ``otlp_proto_grpc``, ``otlp_proto_http``, |
| 52 | + ``zipkin``, ``zipkin_json``, ``zipkin_proto`` |
| 53 | + - :class:`SpanExporter <opentelemetry.sdk.trace.export.SpanExporter>` |
| 54 | + * - OTEL_PYTHON_TRACER_PROVIDER |
| 55 | + - opentelemetry_tracer_provider |
| 56 | + - ``default_tracer_provider``, ``sdk_tracer_provider`` |
| 57 | + - :class:`TracerProvider <opentelemetry.trace.TracerProvider>` |
| 58 | + * - OTEL_PYTHON_METER_PROVIDER |
| 59 | + - opentelemetry_meter_provider |
| 60 | + - ``default_meter_provider``, ``sdk_meter_provider`` |
| 61 | + - :class:`MeterProvider <opentelemetry.metrics.MeterProvider>` |
| 62 | + * - OTEL_PYTHON_LOGGER_PROVIDER |
| 63 | + - opentelemetry_logger_provider |
| 64 | + - ``default_logger_provider``, ``sdk_logger_provider`` |
| 65 | + - :class:`LoggerProvider <opentelemetry._logs.LoggerProvider>` |
| 66 | + * - OTEL_PYTHON_EVENT_LOGGER_PROVIDER |
| 67 | + - opentelemetry_event_logger_provider |
| 68 | + - ``default_event_logger_provider`` |
| 69 | + - *No implementations available* |
71 | 70 |
|
72 | 71 | See Also |
73 | 72 | -------- |
|
0 commit comments