@@ -6,35 +6,37 @@ weight: 2
66cSpell:ignore : prometheusremotewrite
77---
88
9- The agent collector deployment pattern consists of applications —
10- [ instrumented] [ instrumentation ] with an OpenTelemetry SDK using [ OpenTelemetry
11- protocol (OTLP)] [ otlp ] — or other collectors (using the OTLP exporter) that send
12- telemetry signals to a [ collector] [ ] instance running with the application or on
13- the same host as the application (such as a sidecar or a daemonset).
9+ In the agent deployment pattern, telemetry signals can come from
1410
15- Each client-side SDK or downstream collector is configured with a collector
16- location:
11+ - Applications [ instrumented] [ instrumentation ] with an OpenTelemetry SDK using
12+ the [ OpenTelemetry Protocol (OTLP)] [ otlp ]
13+ - Collectors using the OTLP exporter
14+
15+ The signals are sent to a [ Collector] [ collector ] instance that runs alongside
16+ the application or on the same host, such as a sidecar or DaemonSet.
17+
18+ Each client-side SDK or downstream Collector is configured with the address of a
19+ Collector instance:
1720
1821![ Decentralized collector deployment concept] ( ../../img/otel-agent-sdk.svg )
1922
20- 1 . In the app , the SDK is configured to send OTLP data to a collector .
21- 1 . The collector is configured to send telemetry data to one or more backends.
23+ 1 . In the application , the SDK is configured to send OTLP data to a Collector .
24+ 1 . The Collector is configured to send telemetry data to one or more backends.
2225
2326## Example
2427
25- A concrete example of the agent collector deployment pattern could look as
26- follows: you manually instrument, say, a [ Java application to export
27- metrics] [ instrument-java-metrics ] using the OpenTelemetry Java SDK. In the
28- context of the app, you would set the ` OTEL_METRICS_EXPORTER ` to ` otlp ` (which
29- is the default value) and configure the [ OTLP exporter] [ otlp-exporter ] with the
30- address of your collector, for example (in Bash or ` zsh ` shell):
28+ In this example of the agent deployment pattern, begin by manually instrumenting
29+ a [ Java application to export metrics] [ instrument-java-metrics ] using the
30+ OpenTelemetry Java SDK, including the default ` OTEL_METRICS_EXPORTER ` value,
31+ ` otlp ` . Next, configure the [ OTLP exporter] [ otlp-exporter ] with the address of
32+ your Collector. For example:
3133
3234``` shell
3335export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.example.com:4318
3436```
3537
36- The collector serving at ` collector.example.com:4318 ` would then be configured
37- like so :
38+ Next, configure the Collector running at ` collector.example.com:4318 ` as
39+ follows :
3840
3941{{< tabpane text=true >}} {{% tab Traces %}}
4042
@@ -103,20 +105,22 @@ service:
103105
104106{{% /tab %}} {{< /tabpane >}}
105107
106- If you want to try it out for yourself, you can have a look at the end-to-end
107- [Java][java-otlp-example] or [Python][py-otlp-example] examples.
108+ To explore this pattern end to end, see the [Java][java-otlp-example] or
109+ [Python][py-otlp-example] examples.
110+
111+ ## Trade-offs
108112
109- ## Tradeoffs
113+ Here are the key pros and cons of using an agent collector:
110114
111115Pros:
112116
113- - Simple to get started
114- - Clear 1:1 mapping between application and collector
117+ - Straightforward to get started
118+ - Clear one-to-one mapping between application and Collector
115119
116120Cons:
117121
118- - Scalability (human and load-wise)
119- - Inflexible
122+ - Limited scalability for teams and infrastructure resources
123+ - Inflexible for complex or evolving deployments
120124
121125[instrumentation]: /docs/languages/
122126[otlp]: /docs/specs/otel/protocol/
0 commit comments