Skip to content

Commit 6a2c64a

Browse files
committed
feat: add pt localization python exporter
1 parent 546f3e8 commit 6a2c64a

File tree

1 file changed

+320
-0
lines changed

1 file changed

+320
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
---
2+
title: Exporters
3+
weight: 50
4+
description: Processar e exportar seus dados de telemetria
5+
default_lang_commit: 546f3e88ca3673de8aad69358d416256d1fe6411
6+
cSpell:ignore: LOWMEMORY
7+
---
8+
9+
<!-- markdownlint-disable no-duplicate-heading -->
10+
11+
{{% docs/languages/exporters/intro python %}}
12+
13+
### Dependências {#otlp-dependencies}
14+
15+
Se você deseja enviar dados de telemetria para um endpoint OTLP (como o
16+
[OpenTelemetry Collector](#collector-setup), [Jaeger](#jaeger) ou
17+
[Prometheus](#prometheus)), você pode escolher entre dois protocolos diferentes
18+
para transportar seus dados:
19+
20+
- [HTTP/protobuf](https://pypi.org/project/opentelemetry-exporter-otlp-proto-http/)
21+
- [gRPC](https://pypi.org/project/opentelemetry-exporter-otlp-proto-grpc/)
22+
23+
Comece instalando os pacotes do exporter necessários como dependências do seu
24+
projeto antes de prosseguir.
25+
26+
{{< tabpane text=true >}} {{% tab "HTTP/Proto" %}}
27+
28+
```shell
29+
pip install opentelemetry-exporter-otlp-proto-http
30+
```
31+
32+
{{% /tab %}} {{% tab gRPC %}}
33+
34+
```shell
35+
pip install opentelemetry-exporter-otlp-proto-grpc
36+
```
37+
38+
{{% /tab %}} {{< /tabpane >}}
39+
40+
### Uso {#usage}
41+
42+
Em seguida, configure o exporter para apontar para um endpoint OTLP no seu
43+
código.
44+
45+
{{< tabpane text=true >}} {{% tab "HTTP/Proto" %}}
46+
47+
```python
48+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
49+
50+
from opentelemetry import trace
51+
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
52+
from opentelemetry.sdk.trace import TracerProvider
53+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
54+
55+
from opentelemetry import metrics
56+
from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
57+
from opentelemetry.sdk.metrics import MeterProvider
58+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
59+
60+
# Nome do serviço é necessário para a maioria dos backends
61+
resource = Resource(attributes={
62+
SERVICE_NAME: "nome-do-seu-serviço"
63+
})
64+
65+
tracerProvider = TracerProvider(resource=resource)
66+
processor = BatchSpanProcessor(OTLPSpanExporter(endpoint="<traces-endpoint>/v1/traces"))
67+
tracerProvider.add_span_processor(processor)
68+
trace.set_tracer_provider(tracerProvider)
69+
70+
reader = PeriodicExportingMetricReader(
71+
OTLPMetricExporter(endpoint="<traces-endpoint>/v1/metrics")
72+
)
73+
meterProvider = MeterProvider(resource=resource, metric_readers=[reader])
74+
metrics.set_meter_provider(meterProvider)
75+
```
76+
77+
{{% /tab %}} {{% tab gRPC %}}
78+
79+
```python
80+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
81+
82+
from opentelemetry import trace
83+
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
84+
from opentelemetry.sdk.trace import TracerProvider
85+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
86+
87+
from opentelemetry import metrics
88+
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
89+
from opentelemetry.sdk.metrics import MeterProvider
90+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
91+
92+
# Nome do serviço é necessário para a maioria dos backends
93+
resource = Resource(attributes={
94+
SERVICE_NAME: "nome-do-seu-serviço"
95+
})
96+
97+
tracerProvider = TracerProvider(resource=resource)
98+
processor = BatchSpanProcessor(OTLPSpanExporter(endpoint="seu-endpoint-aqui"))
99+
tracerProvider.add_span_processor(processor)
100+
trace.set_tracer_provider(tracerProvider)
101+
102+
reader = PeriodicExportingMetricReader(
103+
OTLPMetricExporter(endpoint="localhost:5555")
104+
)
105+
meterProvider = MeterProvider(resource=resource, metric_readers=[reader])
106+
metrics.set_meter_provider(meterProvider)
107+
```
108+
109+
{{% /tab %}} {{< /tabpane >}}
110+
111+
## Console {#console}
112+
113+
Para depurar sua instrumentação ou ver os valores localmente em desenvolvimento,
114+
você pode usar exporters que escrevem dados de telemetria no console (_stdout_).
115+
116+
O `ConsoleSpanExporter` e o `ConsoleMetricExporter` estão inclusos no pacote
117+
`opentelemetry-sdk`.
118+
119+
```python
120+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
121+
122+
from opentelemetry import trace
123+
from opentelemetry.sdk.trace import TracerProvider
124+
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
125+
126+
from opentelemetry import metrics
127+
from opentelemetry.sdk.metrics import MeterProvider
128+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader, ConsoleMetricExporter
129+
130+
# Nome do serviço é necessário para a maioria dos backends,
131+
# e embora não seja necessário para exportação no console,
132+
# é bom definir o nome do serviço de qualquer maneira.
133+
resource = Resource(attributes={
134+
SERVICE_NAME: "nome-do-seu-serviço"
135+
})
136+
137+
tracerProvider = TracerProvider(resource=resource)
138+
processor = BatchSpanProcessor(ConsoleSpanExporter())
139+
tracerProvider.add_span_processor(processor)
140+
trace.set_tracer_provider(tracerProvider)
141+
142+
reader = PeriodicExportingMetricReader(ConsoleMetricExporter())
143+
meterProvider = MeterProvider(resource=resource, metric_readers=[reader])
144+
metrics.set_meter_provider(meterProvider)
145+
```
146+
147+
{{% alert title="Nota" color="info" %}}
148+
149+
Existem predefinições de temporalidade para cada tipo de instrumentação. Essas
150+
predefinições podem ser definidas com a variável de ambiente
151+
`OTEL_EXPORTER_METRICS_TEMPORALITY_PREFERENCE`, por exemplo:
152+
153+
```sh
154+
export OTEL_EXPORTER_METRICS_TEMPORALITY_PREFERENCE="DELTA"
155+
```
156+
157+
O valor padrão para `OTEL_EXPORTER_METRICS_TEMPORALITY_PREFERENCE` é
158+
`"CUMULATIVE"`.
159+
160+
Os valores disponíveis e suas configurações correspondentes para esta variável
161+
de ambiente são:
162+
163+
- `CUMULATIVE`
164+
165+
- `Counter`: `CUMULATIVE`
166+
- `UpDownCounter`: `CUMULATIVE`
167+
- `Histogram`: `CUMULATIVE`
168+
- `ObservableCounter`: `CUMULATIVE`
169+
- `ObservableUpDownCounter`: `CUMULATIVE`
170+
- `ObservableGauge`: `CUMULATIVE`
171+
172+
- `DELTA`
173+
174+
- `Counter`: `DELTA`
175+
- `UpDownCounter`: `CUMULATIVE`
176+
- `Histogram`: `DELTA`
177+
- `ObservableCounter`: `DELTA`
178+
- `ObservableUpDownCounter`: `CUMULATIVE`
179+
- `ObservableGauge`: `CUMULATIVE`
180+
181+
- `LOWMEMORY`
182+
- `Counter`: `DELTA`
183+
- `UpDownCounter`: `CUMULATIVE`
184+
- `Histogram`: `DELTA`
185+
- `ObservableCounter`: `CUMULATIVE`
186+
- `ObservableUpDownCounter`: `CUMULATIVE`
187+
- `ObservableGauge`: `CUMULATIVE`
188+
189+
Definir `OTEL_EXPORTER_METRICS_TEMPORALITY_PREFERENCE` para qualquer valor
190+
diferente de `CUMULATIVE`, `DELTA` ou `LOWMEMORY` registrará um aviso e definirá
191+
esta variável de ambiente para `CUMULATIVE`.
192+
193+
{{% /alert %}}
194+
195+
{{% docs/languages/exporters/jaeger %}}
196+
197+
{{% docs/languages/exporters/prometheus-setup %}}
198+
199+
### Dependências {#prometheus-dependencies}
200+
201+
Instale o
202+
[pacote de exporter](https://pypi.org/project/opentelemetry-exporter-prometheus/)
203+
como uma dependência para sua aplicação:
204+
205+
```sh
206+
pip install opentelemetry-exporter-prometheus
207+
```
208+
209+
Atualize sua configuração do OpenTelemetry para usar o exporter e enviar dados
210+
para seu backend Prometheus:
211+
212+
```python
213+
from prometheus_client import start_http_server
214+
215+
from opentelemetry import metrics
216+
from opentelemetry.exporter.prometheus import PrometheusMetricReader
217+
from opentelemetry.sdk.metrics import MeterProvider
218+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
219+
220+
# Nome do serviço é necessário para a maioria dos backends
221+
resource = Resource(attributes={
222+
SERVICE_NAME: "nome-do-seu-serviço"
223+
})
224+
225+
# Iniciar cliente Prometheus
226+
start_http_server(port=9464, addr="localhost")
227+
# Inicializar PrometheusMetricReader que puxa métricas do SDK
228+
# sob demanda para responder a solicitações de raspagem
229+
reader = PrometheusMetricReader()
230+
provider = MeterProvider(resource=resource, metric_readers=[reader])
231+
metrics.set_meter_provider(provider)
232+
```
233+
234+
Com o acima, você pode acessar suas métricas em <http://localhost:9464/metrics>.
235+
O Prometheus ou um OpenTelemetry Collector com o receptor Prometheus pode
236+
coletar as métricas deste endpoint.
237+
238+
{{% docs/languages/exporters/zipkin-setup %}}
239+
240+
### Dependências {#zipkin-dependencies}
241+
242+
Para enviar seus dados de rastro para o [Zipkin](https://zipkin.io/), você pode
243+
escolher entre dois protocolos diferentes para transportar seus dados:
244+
245+
- [HTTP/protobuf](https://pypi.org/project/opentelemetry-exporter-zipkin-proto-http/)
246+
- [Thrift](https://pypi.org/project/opentelemetry-exporter-zipkin-json/)
247+
248+
Instale o pacote de exporter como uma dependência para sua aplicação:
249+
250+
{{< tabpane text=true >}} {{% tab "HTTP/Proto" %}}
251+
252+
```shell
253+
pip install opentelemetry-exporter-zipkin-proto-http
254+
```
255+
256+
{{% /tab %}} {{% tab Thrift %}}
257+
258+
```shell
259+
pip install opentelemetry-exporter-zipkin-json
260+
```
261+
262+
{{% /tab %}} {{< /tabpane >}}
263+
264+
Atualize sua configuração do OpenTelemetry para usar o exporter e enviar dados
265+
para seu backend Zipkin:
266+
267+
{{< tabpane text=true >}} {{% tab "HTTP/Proto" %}}
268+
269+
```python
270+
from opentelemetry import trace
271+
from opentelemetry.exporter.zipkin.proto.http import ZipkinExporter
272+
from opentelemetry.sdk.trace import TracerProvider
273+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
274+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
275+
276+
resource = Resource(attributes={
277+
SERVICE_NAME: "nome-do-seu-serviço"
278+
})
279+
280+
zipkin_exporter = ZipkinExporter(endpoint="http://localhost:9411/api/v2/spans")
281+
282+
provider = TracerProvider(resource=resource)
283+
processor = BatchSpanProcessor(zipkin_exporter)
284+
provider.add_span_processor(processor)
285+
trace.set_tracer_provider(provider)
286+
```
287+
288+
{{% /tab %}} {{% tab Thrift %}}
289+
290+
```python
291+
from opentelemetry import trace
292+
from opentelemetry.exporter.zipkin.json import ZipkinExporter
293+
from opentelemetry.sdk.trace import TracerProvider
294+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
295+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
296+
297+
resource = Resource(attributes={
298+
SERVICE_NAME: "nome-do-seu-serviço"
299+
})
300+
301+
zipkin_exporter = ZipkinExporter(endpoint="http://localhost:9411/api/v2/spans")
302+
303+
provider = TracerProvider(resource=resource)
304+
processor = BatchSpanProcessor(zipkin_exporter)
305+
provider.add_span_processor(processor)
306+
trace.set_tracer_provider(provider)
307+
```
308+
309+
{{% /tab %}} {{< /tabpane >}}
310+
311+
{{% docs/languages/exporters/outro python `https://opentelemetry-python.readthedocs.io/en/latest/sdk/trace.export.html#opentelemetry.sdk.trace.export.SpanExporter` %}}
312+
313+
```python
314+
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
315+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
316+
317+
processor = SimpleSpanProcessor(OTLPSpanExporter(endpoint="seu-endpoint-aqui"))
318+
```
319+
320+
{{% /docs/languages/exporters/outro %}}

0 commit comments

Comments
 (0)