Configure the Helm chart for the Splunk Distribution of OpenTelemetry Collector for Kafka
Core configuration
Kafka receivers
Define one or more Kafka receivers. The chart supports all standard Kafka receiver options. For details about the receiver, see Understand the Splunk Distribution of OpenTelemetry Collector for Kafka design.
kafkaReceivers:
- name: main
brokers:
- "kafka-broker-1:9092"
- "kafka-broker-2:9092"
logs:
topics:
- "application-logs"
- "error-logs"
encoding: text
group_id: "soc4kafka-main"
Chart-specific: The name field is required. Use it to reference the receiver in pipelines.
For Kafka authentication with plain_text, SASL, or Kerberos, reference an existing Kubernetes Secret by using the secret field. See Manage secrets for the Helm chart for details.
TLS: For Kafka brokers that use TLS, add a tls block. For details and examples, see Configure TLS.
Splunk HTTP Event Collector (HEC) exporters
Define one or more Splunk HEC exporters. The chart supports all standard Splunk HEC exporter options. For details about the exporter, see Understand the Splunk Distribution of OpenTelemetry Collector for Kafka design.
splunkExporters:
- name: primary
endpoint: "https://splunk-hec:8088/services/collector"
token: "your-splunk-hec-token"
source: "soc4kafka"
sourcetype: "otel:logs"
index: "main"
tls:
insecure_skip_verify: false
sending_queue:
enabled: true
num_consumers: 10
queue_size: 10000
block_on_overflow: true
sizer: items
batch:
min_size: 1000
Chart-specific: The name field is required. Use it to reference the exporter in pipelines.
Instead of entering token directly, you can reference an existing Kubernetes Secret by using the secret field. See Manage secrets for the Helm chart for details.
TLS: Use an https:// endpoint to connect with TLS. The same tls options as for Kafka apply. See Configure TLS.
Queueing and batching: The chart applies HEC exporter defaults from defaults.exporters.splunk_hec. The default queue uses block_on_overflow: true so the collector applies backpressure when Splunk HEC is slow instead of immediately rejecting data at queue capacity. Batching is configured under sending_queue.batch; the default pipelines no longer use the processor batch.
Pipelines
Connect receivers to exporters. For details about pipelines, see Understand the Splunk Distribution of OpenTelemetry Collector for Kafka design.
Chart-specific: You can omit processors; the chart then uses defaults.pipelineProcessors (default: ["resourcedetection"]). Override per pipeline or change the default in values.yaml.
pipelines:
- name: main-logs
type: logs
receivers:
- main # Must match a receiver name from kafkaReceivers
exporters:
- primary # Must match an exporter name from splunkExporters
# processors is optional; defaults to ["resourcedetection"] (see defaults.pipelineProcessors)
processors:
- resourcedetection
Advanced configuration
See values.yaml for all available configuration options. Key areas:
-
TLS (tls.md): Configure TLS for Kafka receivers and Splunk HEC exporters.
-
Component defaults (
defaults): Override default OpenTelemetry component settings. -
Configuration override (
configOverride): Provide a complete OpenTelemetry configuration override. -
Resources (
resources): Set CPU and memory limits and requests. -
Autoscaling (
autoscaling): Configure the Horizontal Pod Autoscaler. -
Pod disruption budget (
podDisruptionBudget): Configure a pod disruption budget for high availability. -
Service account (
serviceAccount): Configure a service account with workload identity annotations for cloud environments, including AWS EKS, GCP GKE, and Azure AKS. -
Collector logs (
collectorLogs): Collect the collector's internal logs to files andstdoutorstderr. -
Collector metrics (
collectorMetrics): Collect internal collector metrics and system metrics for CPU, memory, disk, and network.
Collector logs
For information about configuring and collecting the Splunk Distribution of OpenTelemetry Collector for Kafka logs, see Collect logs from the Splunk Distribution of OpenTelemetry Collector for Kafka.
Metrics collection
Enable collection of internal collector metrics and system metrics. The chart configures the following components:
-
Prometheus receiver: Scrapes the collector's internal telemetry endpoint on port 8888.
-
Hostmetrics receiver: Collects system metrics for CPU, memory, disk, network, filesystems, and processes.
-
Telemetry service: Exposes collector metrics through a Prometheus endpoint.
-
Metrics pipeline: Forwards metrics to Splunk by using the first
splunkExporter.
collectorMetrics:
enabled: true
exporter: "" # Optional: name of splunkExporter to use (e.g., "primary")
# If not specified, uses the first splunkExporter
Features:
-
Exposes internal collector metrics through a Prometheus endpoint on port 8888.
-
Collects system metrics for CPU, memory, disk, network, filesystems, and processes by using the hostmetrics receiver.
-
Forwards metrics to Splunk by using the referenced
splunkExporter, or the first exporter if none is specified. -
Exposes a metrics port for Prometheus scraping.
-
Sends all metrics through the
resourcedetectionprocessor for host filtering.
Create a metrics index in Splunk for the metrics data. For details, see the Splunk Distribution of OpenTelemetry Collector for Kafka dashboard.
Advanced configuration: To customize metrics configuration, including exporters, scrapers, or intervals, use configOverride to override the generated configuration.
Configuration precedence
The chart merges configuration in this order, from highest to lowest priority:
-
configOverride: Has the highest priority and completely overrides generated configuration. Use it for customizations that the other settings do not support. -
Explicit configuration - Values specified directly in
kafkaReceiversandsplunkExportersoverride defaults. For example:
kafkaReceivers:
- name: main
group_id: "custom-group" # This overrides defaults.receivers.kafka.group_id
-
defaults: Has the lowest priority and provides default values for receivers, processors, and exporters that you do not configure explicitly.
Merge behavior:
-
The chart uses
mustMergeOverwriteto merge values recursively. Explicit values replace defaults at the same path. -
For nested objects, the chart replaces only the specified keys and preserves other default keys.
-
The chart applies
configOverridelast, so it can override any part of the generated configuration.
Example precedence:
defaults:
exporters:
splunk_hec:
sending_queue:
enabled: true
num_consumers: 10
queue_size: 10000
block_on_overflow: true
sizer: items
batch:
min_size: 1000
# If you specify in defaults but also in configOverride:
configOverride:
exporters:
splunk_hec:
sending_queue:
num_consumers: 20 # This wins - configOverride has highest priority
Automatic pod restarts
The chart restarts pods automatically in these cases:
-
ConfigMap changes: Pods restart when the OpenTelemetry configuration changes, based on the
checksum/configannotation. -
Secret changes: Pods restart when token values in
values.yamlchange for chart-created Secrets or when Secret references change, based on thechecksum/secretsannotation.
These restarts apply updated configuration and secrets to the collector.