Agent
You are viewing the English version of this page because it has not yet been translated. Interested in helping out? See Contributing.
The agent collector deployment pattern consists of applications — instrumented with an OpenTelemetry SDK using OpenTelemetry protocol (OTLP) — or other collectors (using the OTLP exporter) that send telemetry signals to a collector instance running with the application or on the same host as the application (such as a sidecar or a daemonset).
Each client-side SDK or downstream collector is configured with a collector location:
- In the app, the SDK is configured to send OTLP data to a collector.
- The collector is configured to send telemetry data to one or more backends.
Example
A concrete example of the agent collector deployment pattern could look as
follows: you manually instrument, say, a Java application to export
metrics using the OpenTelemetry Java SDK. In the
context of the app, you would set the OTEL_METRICS_EXPORTER
to otlp
(which
is the default value) and configure the OTLP exporter with the
address of your collector, for example (in Bash or zsh
shell):
export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.example.com:4318
The collector serving at collector.example.com:4318
would then be configured
like so:
receivers:
otlp: # the OTLP receiver the app is sending traces to
protocols:
http:
endpoint: 0.0.0.0:4318
processors:
batch:
exporters:
otlp/jaeger: # Jaeger supports OTLP directly
endpoint: https://jaeger.example.com:4317
service:
pipelines:
traces/dev:
receivers: [otlp]
processors: [batch]
exporters: [otlp/jaeger]
receivers:
otlp: # the OTLP receiver the app is sending metrics to
protocols:
http:
endpoint: 0.0.0.0:4318
processors:
batch:
exporters:
prometheusremotewrite: # the PRW exporter, to ingest metrics to backend
endpoint: https://prw.example.com/v1/api/remote_write
service:
pipelines:
metrics/prod:
receivers: [otlp]
processors: [batch]
exporters: [prometheusremotewrite]
receivers:
otlp: # the OTLP receiver the app is sending logs to
protocols:
http:
endpoint: 0.0.0.0:4318
processors:
batch:
exporters:
file: # the File Exporter, to ingest logs to local file
path: ./app42_example.log
rotation:
service:
pipelines:
logs/dev:
receivers: [otlp]
processors: [batch]
exporters: [file]
If you want to try it out for yourself, you can have a look at the end-to-end Java or Python examples.
Tradeoffs
Pros:
- Simple to get started
- Clear 1:1 mapping between application and collector
Cons:
- Scalability (human and load-wise)
- Inflexible
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!