@@ -44,21 +44,18 @@ The following diagram represents a typical pipeline:
44
44
title: Pipeline
45
45
---
46
46
flowchart LR
47
- R1(Receiver 1) --> P1[Processor 1]
48
- R2(Receiver 2) --> P1
49
- RM(...) ~~~ P1
50
- RN(Receiver N) --> P1
51
- P1 --> P2[Processor 2]
52
- P2 --> PM[...]
53
- PM --> PN[Processor N]
54
- PN --> FO((fan-out))
55
- FO --> E1[[Exporter 1]]
56
- FO --> E2[[Exporter 2]]
57
- FO ~~~ EM[[...]]
58
- FO --> EN[[Exporter N]]
59
-
60
- %% The stroke color matches the website header.
61
- classDef default fill:#e3e8fc,stroke:#4f62ad
47
+ R1(Receiver 1) --> P1[Processor 1]
48
+ R2(Receiver 2) --> P1
49
+ RM(...) ~~~ P1
50
+ RN(Receiver N) --> P1
51
+ P1 --> P2[Processor 2]
52
+ P2 --> PM[...]
53
+ PM --> PN[Processor N]
54
+ PN --> FO((fan-out))
55
+ FO --> E1[[Exporter 1]]
56
+ FO --> E2[[Exporter 2]]
57
+ FO ~~~ EM[[...]]
58
+ FO --> EN[[Exporter N]]
62
59
```
63
60
64
61
Pipelines can have one or more receivers. Data from all receivers is pushed to
@@ -123,13 +120,11 @@ of processors and exporters are omitted for brevity):
123
120
124
121
` ` ` mermaid
125
122
flowchart LR
126
- R1("` #quot;opentelemetry-collector#quot; Receiver`") --> FO((fan-out))
127
- FO -->|Pipeline 'traces'| P1["`#quot;memory_limiter#quot; Processor`"]
128
- FO -->|Pipeline 'traces/2'| P2["`#quot;transform#quot; Processor`"]
129
- P1 ~~~ M1[...]
130
- P2 ~~~ M2[...]
131
-
132
- classDef default fill:#e3e8fc,stroke:#4f62ad;
123
+ R1("` #quot;opentelemetry-collector#quot; Receiver`") --> FO((fan-out))
124
+ FO -->|Pipeline 'traces'| P1["`#quot;memory_limiter#quot; Processor`"]
125
+ FO -->|Pipeline 'traces/2'| P2["`#quot;transform#quot; Processor`"]
126
+ P1 ~~~ M1[...]
127
+ P2 ~~~ M2[...]
133
128
```
134
129
135
130
{{% alert title="Important" color="warning" %}}
@@ -191,12 +186,10 @@ this diagram (part of processors and receivers are omitted for brevity):
191
186
192
187
` ` ` mermaid
193
188
flowchart LR
194
- M1[...] ~~~ P1["` #quot;memory_limiter#quot; Processor`"]
195
- M2[...] ~~~ P2["`#quot;transform#quot; Processor`"]
196
- P1 -->|Pipeline 'traces'|E1[["`#quot;otlp#quot; Exporter`"]]
197
- P2 -->|Pipeline 'traces/2'|E1
198
-
199
- classDef default fill:#e3e8fc,stroke:#4f62ad;
189
+ M1[...] ~~~ P1["` #quot;memory_limiter#quot; Processor`"]
190
+ M2[...] ~~~ P2["`#quot;transform#quot; Processor`"]
191
+ P1 -->|Pipeline 'traces'|E1[["`#quot;otlp#quot; Exporter`"]]
192
+ P2 -->|Pipeline 'traces/2'|E1
200
193
```
201
194
202
195
### Processors
@@ -247,21 +240,17 @@ When the Collector loads this config, the result looks like this diagram:
247
240
title : Pipeline "traces"
248
241
---
249
242
flowchart LR
250
- R1("`zipkin Receiver`") --> P1["`#quot;batch#quot; Processor`"]
251
- P1 --> E1[["`#quot;otlp#quot; Exporter`"]]
252
-
253
- classDef default fill:#e3e8fc,stroke:#4f62ad;
243
+ R1("`zipkin Receiver`") --> P1["`#quot;batch#quot; Processor`"]
244
+ P1 --> E1[["`#quot;otlp#quot; Exporter`"]]
254
245
```
255
246
256
247
``` mermaid
257
248
---
258
249
title: Pipeline "traces/2"
259
250
---
260
251
flowchart LR
261
- R1("`otlp Receiver`") --> P1["`#quot;batch#quot; Processor`"]
262
- P1 --> E1[["`#quot;otlp#quot; Exporter`"]]
263
-
264
- classDef default fill:#e3e8fc,stroke:#4f62ad;
252
+ R1("`otlp Receiver`") --> P1["`#quot;batch#quot; Processor`"]
253
+ P1 --> E1[["`#quot;otlp#quot; Exporter`"]]
265
254
```
266
255
267
256
Note that each ` batch ` processor is an independent instance, although they are
@@ -270,7 +259,7 @@ configured the same way with a `send_batch_size` of `10000`.
270
259
> The same name of the processor must not be referenced multiple times in the
271
260
> ` processors ` key of a single pipeline.
272
261
273
- ## < a name = " opentelemetry-agent " ></ a > Running as an agent
262
+ ## Running as an agent
274
263
275
264
On a typical VM/container, user applications are running in some processes/pods
276
265
with an OpenTelemetry library. Previously, the library did all the recording,
@@ -303,10 +292,8 @@ aggregation.
303
292
304
293
``` mermaid
305
294
flowchart LR
306
- subgraph S1 ["#nbsp;"]
307
- subgraph S2 ["#nbsp;"]
308
- end
309
- subgraph S3 ["#nbsp;"]
295
+ subgraph S1 ["#nbsp;"]
296
+ subgraph S2 ["#nbsp;"]
310
297
subgraph VM [VM]
311
298
PR["Process [Library]"] -->|Push sample spans, metrics| AB[Agent Binary]
312
299
AB -->|Push configs| PR
@@ -332,29 +319,29 @@ flowchart LR
332
319
APP4 --> AD
333
320
APP6 --> AD
334
321
end
335
- end
336
- subgraph Backends ["#nbsp;"]
337
- AB --> BE[Backend]
338
- AS --> PRM[Prometheus Backend]
339
- AS --> JA[Jaeger Backend]
340
- AD --> JA
341
- end
342
- end
343
-
344
- class S1,S2,S3 noLines;
322
+ end
323
+ subgraph Backends ["#nbsp;"]
324
+ AB --> BE[Backend]
325
+ AS --> PRM[Prometheus Backend]
326
+ AS --> JA[Jaeger Backend]
327
+ AD --> JA
328
+ end
329
+ end
330
+
331
+ class S2 noLines;
345
332
class VM,K8s-pod,K8s-node,Pod1,Pod2,Pod3,Backends withLines;
346
333
class PR,AB,AC,AS,APP1,APP2,APP3,APP4,APP5,APP6,AD,BE,PRM,JA nodeStyle
347
- classDef noLines fill:#fff, stroke:#fff,stroke-width:4px;
348
- classDef withLines fill:#fff,stroke:#4f62ad
349
- classDef nodeStyle fill:#e3e8fc,stroke:#4f62ad;
334
+ classDef noLines stroke:#fff,stroke-width:4px,color:#000000 ;
335
+ classDef withLines fill:#fff,stroke:#4f62ad,color:#000000;
336
+ classDef nodeStyle fill:#e3e8fc,stroke:#4f62ad,color:#000000 ;
350
337
```
351
338
352
339
> For developers and maintainers of other libraries: By adding specific
353
340
> receivers, you can configure an agent to accept traces, metrics, and logs from
354
341
> other tracing/monitoring libraries, such as Zipkin, Prometheus, etc. See
355
342
> [ Receivers] ( #receivers ) for details.
356
343
357
- ## < a name = " opentelemetry-collector " ></ a > Running as a gateway
344
+ ## Running as a gateway
358
345
359
346
The OpenTelemetry Collector can run as a gateway instance and receive spans and
360
347
metrics exported by one or more agents or libraries or by tasks/agents that emit
@@ -364,61 +351,61 @@ architecture:
364
351
365
352
``` mermaid
366
353
flowchart LR
367
- subgraph S1 ["#nbsp;"]
368
- subgraph S2 ["#nbsp;"]
354
+ subgraph S1 ["#nbsp;"]
355
+ subgraph S2 ["#nbsp;"]
369
356
subgraph S3 ["#nbsp;"]
370
- subgraph VM [VM]
371
- PR["Process [Library]"]
372
- end
373
- subgraph K8s-pod [K8s Pod]
374
- AC["`App Container [Library]`"]
375
- end
376
- subgraph K8s-node [K8s Node]
377
- subgraph Pod1 [Pod]
378
- APP1[App] ~~~ APP2[App]
379
- end
380
- subgraph Pod2 [Pod]
381
- APP3[App] ~~~ APP4[App]
382
- end
383
- subgraph Pod3 [Pod]
384
- APP5[App] ~~~ APP6[App]
385
- end
386
- subgraph AD [Agent Daemonset]
387
- end
388
- APP1 --> AD
389
- APP2 --> AD
390
- APP4 --> AD
391
- APP6 --> AD
392
- end
357
+ subgraph VM [VM]
358
+ PR["Process [Library]"]
359
+ end
360
+ subgraph K8s-pod [K8s Pod]
361
+ AC["`App Container [Library]`"]
362
+ end
363
+ subgraph K8s-node [K8s Node]
364
+ subgraph Pod1 [Pod]
365
+ APP1[App] ~~~ APP2[App]
366
+ end
367
+ subgraph Pod2 [Pod]
368
+ APP3[App] ~~~ APP4[App]
369
+ end
370
+ subgraph Pod3 [Pod]
371
+ APP5[App] ~~~ APP6[App]
372
+ end
373
+ subgraph AD [Agent Daemonset]
374
+ end
375
+ APP1 --> AD
376
+ APP2 --> AD
377
+ APP4 --> AD
378
+ APP6 --> AD
379
+ end
393
380
end
394
381
subgraph S4 ["#nbsp;"]
395
382
PR --> OTEL["`OpenTelemetry Collector Service`"]
396
383
AC --> OTEL
397
384
AD --> OTEL
398
385
OTEL ---> BE[Backend X]
399
386
end
400
- end
401
- subgraph S5 ["#nbsp;"]
387
+ end
388
+ subgraph S5 ["#nbsp;"]
402
389
subgraph S6 ["#nbsp;"]
403
390
JA[Jaeger Backend]
404
391
end
405
392
subgraph S7 ["#nbsp;"]
406
393
PRM[Prometheus Backend]
407
394
end
408
- end
409
- JA ~~~ PRM
410
- OTEL --> JA
411
- OTEL --> PRM
412
- end
395
+ end
396
+ JA ~~~ PRM
397
+ OTEL --> JA
398
+ OTEL --> PRM
399
+ end
413
400
414
401
class S1,S3,S4,S5,S6,S7,S8 noLines;
415
402
class VM,K8s-pod,K8s-node,Pod1,Pod2,Pod3 withLines;
416
403
class S2 lightLines
417
404
class PR,AC,APP1,APP2,APP3,APP4,APP5,APP6,AD,OTEL,BE,JA,PRM nodeStyle
418
- classDef noLines fill:#fff, stroke:#fff,stroke -width:4px ;
419
- classDef withLines fill:#fff,stroke:#4f62ad
420
- classDef lightLines fill:#fff,stroke:#acaeb0
421
- classDef nodeStyle fill:#e3e8fc,stroke:#4f62ad;
405
+ classDef noLines stroke-width:0px,color:#000000 ;
406
+ classDef withLines fill:#fff,stroke:#4f62ad,color:#000000;
407
+ classDef lightLines stroke:#acaeb0,color:#000000;
408
+ classDef nodeStyle fill:#e3e8fc,stroke:#4f62ad,color:#000000 ;
422
409
```
423
410
424
411
The OpenTelemetry Collector can also be deployed in other configurations, such
0 commit comments