{"templateId":"markdown","versions":[{"version":"v1.40","label":"v1.40 STS","link":"/products/custody/v1.40/deployment/reference/telemetry-collector","default":true,"active":false,"folderId":"c15a2701"},{"version":"v1.39","label":"v1.39 STS","link":"/products/custody/v1.39/deployment/reference/telemetry-collector","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.38","label":"v1.38 STS","link":"/products/custody/v1.38/deployment/reference/telemetry-collector","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/deployment/reference/telemetry-collector","default":false,"active":true,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/deployment/reference/telemetry-collector","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/deployment/reference/telemetry-collector","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/deployment/reference/telemetry-collector","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"OTEL Collector deployment","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"otel-collector-deployment","__idx":0},"children":["OTEL Collector deployment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page covers deploying and configuring the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://opentelemetry.io/docs/collector/"},"children":["OpenTelemetry (OTEL) Collector"]}," for ","Ripple Custody","."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For an overview of telemetry concepts, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.34/deployment/reference/telemetry"},"children":["Configure telemetry"]},". For Helm chart configuration, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.34/deployment/reference/telemetry-configuration"},"children":["Telemetry configuration"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ","Ripple Custody"," Helm charts include an OTEL Collector instance:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  enabled: false        # Set to `false` by default\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this instance only for testing purposes. Do not use it for production workloads."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We recommend you set up a dedicated and segregated OTEL Collector instance."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must deploy OTEL Collector in line with your own requirements."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information on OTEL Collector deployment, see the following:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://opentelemetry.io/docs/kubernetes/helm/collector/#installing-the-chart","target":"_blank"},"children":["Kubernetes OpenTelemetry documentation"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-collector","target":"_blank"},"children":["official OTEL Collector Helm charts"]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The recommended best practice for production workload is to set up a dedicated OTEL Collector deployment that you segregate from ","Ripple Custody","."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All the YAML code snippets in the steps below use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["opentelemetry-collector"]}," section, as a reminder that this is the OTEL Collector Helm ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["values.yaml"]}," file configuration and not the ","Ripple Custody"," Helm configuration."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For detailed OTEL Collector Values File configuration, see the  ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-collector","target":"_blank"},"children":["Official Helm Chart for OTEL Collector"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"deploy-otel-collector","__idx":1},"children":["Deploy OTEL Collector"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can set up OTEL Collector using two different configurations:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A dedicated OTEL Collector instance for both the trusted and untrusted components."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Two dedicated and separate instances (one instance for the trusted components and one instance for the untrusted components)."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information on trusted and untrusted components, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.34/concepts/security"},"children":["Security"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To set up an OTEL Collector instance:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["enabled"]}," variable to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},":"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  enabled: true\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This automatically deploys an OTEL Collector pod alongside the ","Ripple Custody"," deployment and sets the appropriate environment variables for the pods to discover the OTEL Collector service."]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The default resource values might be too low for a typical deployment. Set the resource value to an appropriate level, as follows:",{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run load testing on the ","Ripple Custody"," instance, at the peak usage you expect the ","Ripple Custody"," instance to encounter and observe resource usage."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set the following values accordingly:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"  resources:\n    requests:\n      cpu: 4\n      memory: 4Gi\n    limits:\n      cpu: 8\n      memory: 16Gi\n","lang":"yaml"},"children":[]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Helm ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["values.yaml"]}," file settings must reflect your usage of ","Ripple Custody",". Those values need to be high enough that the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["opentelemetry-collector"]}," pod does not encounter a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Pending"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CrashLoopBackOff"]}," Kubernetes state."," ","The higher the number of users, the greater the volume of telemetry data generated, and the higher the resource consumption for OTEL Collector."]}]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add third-party contributors as parameters in the OTEL Collector configuration. For a list of supported third-party contributors, see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib","target":"_blank"},"children":["OTEL Collector Contrib Github Repository"]},". The OTEL Collector Contrib Github Repository contains three main folders for handling telemetry data:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver","target":"_blank"},"children":["Third Party Receivers"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor","target":"_blank"},"children":["Third Party Processors"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter","target":"_blank"},"children":["Third Party Exporters"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The recommendations for configuring the contributors are as follows:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For receiver configuration, set the appropriate network parameters:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"  opentelemetry-collector:\n    ports:\n      syslog:\n        protocol: TCP     # or UDP\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For processor configuration, set the appropriate values for the following:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log and trace formatting and enrichment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Trace throttling, as traces are very verbose."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For exporter configuration, set the exporters to export the telemetry data from OTEL Collector to another OTEL Receiver. The OTEL SDK fields can be modified when exported to another format."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Contributions from various telemetry solution vendors (such as Microsoft, AWS, Elasticsearch, and Prometheus) can be found in OTEL Collector, but not all vendors are present."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You may find support for the most popular telemetry solution vendors, but we do not guarantee it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a contribution from a telemetry vendor is present, it might not include everything. For example, exporter contributions from Elasticsearch are only available for logs and traces."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"configure-otel-collector","__idx":2},"children":["Configure OTEL Collector"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"telemetry-data-reception","__idx":3},"children":["Telemetry data reception"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, OTEL Collector listens to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["OTLP"]}," ports (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4317"]}," for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["gRPC"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4318"]}," for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HTTP/HTTPS"]},"), but not for the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["rSyslog"]}," protocol."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ","Ripple Custody"," Helm charts configure OTEL Collector to listen to port ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["54526"]}," with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TCP"]}," network protocol for rSyslog telemetry data."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  ports:\n    syslog:\n      enabled: true\n      containerPort: 54526\n      servicePort: 54526\n      hostPort: 54526\n      protocol: TCP\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"host-telemetry-data","__idx":4},"children":["Host telemetry data"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, OTEL Collector only receives telemetry data sent by the telemetry network protocol (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OTLP"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rSyslog"]},") from the ","Ripple Custody"," components."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["OTEL Collector also offers the possibility to read and export host telemetry data (for example stdout logs and host metrics)."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Since OTEL Collector uses the Kubernetes API to access the host telemetry data, it needs the correct Role Based Access Control (RBAC) permissions."," ","You must set appropriate RBAC permissions in the Kubernetes cluster for OTEL Collector to access the desired host telemetry data."," ","For more information, see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://opentelemetry.io/docs/kubernetes/collector/components/","target":"_blank"},"children":["OTEL Collector documentation"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can enable OTEL Collector log collection by using the stdout of the ","Ripple Custody"," components:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  enabled: true\n\n  presets:\n    logsCollection:\n      enabled: true\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["More telemetry collection options are available by configuring the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["presets"]}," field:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  enabled: true\n\n  presets:\n    logsCollection:\n      enabled: true\n      includeCollectorLogs: true\n      storeCheckpoints: true\n    hostMetrics:\n      enabled: true\n    kubernetesAttributes:\n      enabled: true\n    kubernetesEvents:\n      enabled: true\n    clusterMetrics:\n      enabled: true\n    kubeletMetrics:\n      enabled: true\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://opentelemetry.io/docs/kubernetes/helm/collector/#presets","target":"_blank"},"children":["OTEL Collector presets"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"pipeline-configuration","__idx":5},"children":["Pipeline configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must update the default ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pipelines"]}," configuration for the environment:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  config:\n\n    service:\n      pipelines:\n        logs/syslog:\n          receivers: [syslog]\n          processors: [batch]\n          exporters: [logging]\n        logs:\n          receivers: [otlp]\n          processors: [batch]\n          exporters: [logging]\n        traces:\n          receivers: [otlp]\n          processors: [tail_sampling]\n          exporters: [logging]\n        metrics:\n          receivers: [otlp]\n          processors: [batch]\n          exporters: [logging]\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There are 4 pipelines:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["logs/syslog"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["logs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["traces"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["metrics"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["OTEL Collector executes each pipeline in 3 steps:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Receivers —> Processors —> Exporters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib","target":"_blank"},"children":["OTEL Collector Contrib Github Repository"]}," provides an exhaustive list of all the Public implementation and documentation elements for OTEL Collector."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the full list of available third party contributions to OTEL Collector:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver","target":"_blank"},"children":["Receivers"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor","target":"_blank"},"children":["Processors"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter","target":"_blank"},"children":["Exporters"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"processors","__idx":6},"children":["Processors"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the context of OpenTelemetry, a processor is a component that sits between the receiver and exporter in the data pipeline."," ","Processors are responsible for modifying the telemetry data, such as traces, metrics, and logs that pass through them."," ","Some common tasks a processor might handle include filtering, batching, and data enrichment."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These processors play a crucial role in refining and preparing the telemetry data, making it ready for further analysis and insights."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Helm charts provide a default processor configuration named ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tail_sampling"]}," specifically for handling traces."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  config:\n\n    # OTEL Collector Processors\n    processors:\n      tail_sampling:\n        decision_wait: 30s\n        num_traces: 50000\n        expected_new_traces_per_sec: 50\n        policies: [...]\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tail_sampling"]}," processor has a number of policies defined for it.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"Each policy specifies the rules for selecting which traces should be kept for analysis.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"Some examples of these policies include capturing all domain-related traces, authenticated requests, and forced logs.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"Policies also exist to filter out traces based on certain criteria, such as specific HTTP targets, sources, payloads, latency, status codes, and more."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The final policy, samples-some, is a probabilistic sampling policy that keeps a certain percentage of traces.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"Operators often use this approach to reduce the volume of traces, thus saving storage and processing resources while still providing a representative sample of the overall trace data."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"exporters","__idx":7},"children":["Exporters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Exporters are the components responsible for transmitting telemetry data from OTEL Collector to external systems or storage."," ","An Exporter packages and sends the telemetry data to various destinations, such as monitoring platforms, logging systems, or analytics tools."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Exporters come in different types and formats, depending on the target system or service. Here are some examples:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":6,"id":"elasticsearch","__idx":8},"children":["Elasticsearch"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  config:\n\n    exporters:\n\n      elasticsearch/trace:\n        endpoints: ['http://my-elastic-search-host:9200']\n        traces_index: trace_index\n      elasticsearch/log:\n        endpoints: ['http://my-elastic-search-host:9200']\n        logs_index: log_index\n        sending_queue:\n          enabled: true\n          num_consumers: 20\n          queue_size: 1000\n      elasticsearch/syslog:\n        endpoints: ['http://my-elastic-search-host:9200']\n        logs_index: syslog_index\n        sending_queue:\n          enabled: true\n          num_consumers: 20\n          queue_size: 1000\n\n      pipelines:\n        logs/syslog:\n          exporters: [elasticsearch/syslog]\n        logs:\n          exporters: [elasticsearch/log]\n        traces:\n          exporters: [elasticsearch/trace]\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":6,"id":"azure-monitor","__idx":9},"children":["Azure Monitor"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"opentelemetry-collector:\n  config:\n\n    exporters:\n      azuremonitor:\n        endpoint: 'https://my-azure-region.applicationinsights.azure.com/'\n        instrumentation_key: 6ac20654-450e-29e4-65e2-1bdecb7db7c4\n        maxbatchsize: 1024\n        maxbatchinterval: 10s\n\n    service:\n      pipelines:\n        logs/syslog:\n          exporters: [azuremonitor]\n        logs:\n          exporters: [azuremonitor]\n        traces:\n          exporters: [azuremonitor]\n        metrics:\n          exporters: [azuremonitor]\n","lang":"yaml"},"children":[]}]},"headings":[{"value":"OTEL Collector deployment","id":"otel-collector-deployment","depth":1},{"value":"Deploy OTEL Collector","id":"deploy-otel-collector","depth":2},{"value":"Configure OTEL Collector","id":"configure-otel-collector","depth":2},{"value":"Telemetry data reception","id":"telemetry-data-reception","depth":3},{"value":"Host telemetry data","id":"host-telemetry-data","depth":5},{"value":"Pipeline configuration","id":"pipeline-configuration","depth":5},{"value":"Processors","id":"processors","depth":5},{"value":"Exporters","id":"exporters","depth":5},{"value":"Elasticsearch","id":"elasticsearch","depth":6},{"value":"Azure Monitor","id":"azure-monitor","depth":6}],"frontmatter":{"seo":{"title":"OTEL Collector deployment"}},"lastModified":"2026-04-07T19:14:09.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/v1.34/deployment/reference/telemetry-collector","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}