Resources

Using HTTP Event Collector for Splunk Data

October 1, 2024 by OpenObserve Team
Splunk HEC Receiver

Setting up a robust data collection and management system is essential for any modern enterprise, and the HTTP Event Collector (HEC) for Splunk is a powerful tool to achieve this. 

Why Choose Splunk HEC?

Using the HTTP Event Collector for Splunk streamlines the process of gathering and managing data from various sources. 

It allows you to send data directly to Splunk over HTTP or HTTPS, making it easy to integrate with your existing infrastructure.

Benefits:

  • Real-Time Data Ingestion: Captures data as it’s generated, ensuring timely insights.
  • Scalable and Flexible: Easily scales with your data needs and integrates with multiple sources.
  • Secure Data Transmission: Supports HTTPS for secure data transfer, protecting your sensitive information.

In this guide, we’ll walk you through the process of configuring and activating the Splunk HEC Receiver, ensuring your data collection is efficient and effective.

Getting Started

Before diving into the configuration, let’s outline the essential steps to get your Splunk HEC Receiver up and running.

Step 1: Configuring the Splunk HEC

First, you need to configure the Splunk HEC. This involves setting up an endpoint and generating an access token.

  1. Access Splunk Web:
    • Log in to your Splunk instance and navigate to Settings > Data Inputs > HTTP Event Collector.
  2. Create a New Token:
    • Click on “New Token,” and follow the prompts to configure the new token. Give it a name, select the allowed indexes, and configure any other settings as needed.
  3. Save and Note the Token:
    • Save your new token and make sure to copy it. You will need this token to configure the OpenTelemetry Collector.

Step 2: Deploying the Splunk Distribution of the OpenTelemetry Collector

Deploy the Splunk Distribution of the OpenTelemetry Collector in your environment. This collector will handle data collection and forwarding to Splunk.

Example Deployment Command:

kubectl apply -f https://github.com/signalfx/splunk-otel-collector-deployments

Step 3: Configuring the Splunk HEC in the Collector

Next, configure the Splunk HEC in the OpenTelemetry Collector. Add the Splunk HEC configuration to your collector’s configuration file.

Example Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"

exporters:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"

service:
  pipelines:
    logs:
      receivers: \[splunk_hec]
      exporters: \[splunk_hec]

Step 4: Restarting the Collector

After updating the configuration, restart the OpenTelemetry Collector to apply the changes. This ensures the new settings take effect and data starts flowing to your Splunk instance.

Restart Command:

kubectl rollout restart deployment/splunk-otel-collector

Smooth Sailing Ahead: Your Data Pipeline is Ready

By following these steps, you’ve set the foundation for an efficient data collection system using the Splunk HEC Receiver. 

This setup ensures that your data is ingested in real-time, securely transmitted, and ready for analysis in Splunk.

In the next sections, we’ll dive deeper into sample configurations, detailed settings, and advanced features to help you fine-tune your setup. 

Sample Configuration

Configuring the Splunk HEC Receiver might seem daunting at first, but with the right setup, you can streamline your data collection and analysis processes efficiently. 

Let’s walk through a sample configuration that will get your Splunk HEC Receiver integrated with the OpenTelemetry Collector. 

Setting the Stage: Basic Configuration

To begin, you need to define the basic settings for your Splunk HEC Receiver within the OpenTelemetry Collector configuration file. 

This includes specifying the endpoint and the authentication token required for data transmission.

Example Basic Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"

Adding It to the Collector Configuration File

Next, you’ll need to add this configuration to the OpenTelemetry Collector configuration file. This step integrates the Splunk HEC Receiver into your data pipeline, ensuring that telemetry data is correctly ingested and processed.

Example Collector Configuration File:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
   
exporters:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"

service:
  pipelines:
    logs:
      receivers: \[splunk_hec]
      processors: \[batch]
      exporters: \[splunk_hec]

Detailed Settings: Tailoring Your Configuration

To ensure your configuration meets your specific requirements, you might need to tweak additional settings such as TLS, CORS, and field mappings. Below is an example of a more detailed configuration that includes these settings.

Example Detailed Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    tls:
      insecure_skip_verify: true
    cors:
      allowed_origins: \["https://your-app.com"]
    hec_metadata_to_otel_attrs:
      source: "source"
      sourcetype: "sourcetype"
      index: "index"

exporters:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    tls:
      insecure_skip_verify: true

service:
  pipelines:
    logs:
      receivers: \[splunk_hec]
      processors: \[batch]
      exporters: [logging, splunk_hec]

Final Touch: Restarting the Collector

After updating your configuration file, you need to restart the OpenTelemetry Collector to apply the new settings. This ensures that your configuration changes take effect and that data starts flowing to your Splunk instance.

Restart Command:

kubectl rollout restart deployment/splunk-otel-collector

Why This Matters

Setting up the Splunk HEC Receiver correctly is crucial for efficient data collection and management. 

This configuration ensures that your data pipeline is robust, secure, and ready to handle large volumes of telemetry data. By following this sample configuration, you can streamline your observability efforts and gain deeper insights into your systems.

In the next section, we’ll dive into more advanced configurations, including detailed settings for endpoints, authentication methods, and optional features like TLS and field mappings. 

Detailed Configuration

Setting up the Splunk HTTP Event Collector (HEC) with OpenTelemetry is just the beginning. 

To ensure optimal performance and security, you may need to dive into more detailed settings. 

Comprehensive Configuration: All the Details You Need

A robust configuration for your Splunk HEC Receiver involves several key components. Here’s a detailed example that includes all the settings you might need:

Example Comprehensive Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    hec_metadata_to_otel_attrs:
      source: "source"
      sourcetype: "sourcetype"
      index: "index"
    tls:
      insecure_skip_verify: true
    cors:
      allowed_origins: \["https://your-app.com"]

exporters:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    tls:
      insecure_skip_verify: true

service:
  pipelines:
    logs:
      receivers: \[splunk_hec]
      processors: \[batch]
      exporters: [logging, splunk_hec]

Key Configuration Settings

Endpoint, Access Token, and Paths

  • Endpoint: The URL where your Splunk HEC instance is accessible. Ensure this is correctly set to avoid connectivity issues.
  • Token: The authentication token generated in Splunk for secure data transmission.
  • Paths: Specify the paths for log data and other telemetry data to ensure they are routed correctly within Splunk.

Example Settings:

endpoint: "https://your-splunk-instance:8088"
token: "your-splunk-hec-token"

Optional TLS Settings: Ensuring Secure Data Transmission

To secure your data in transit, you can configure TLS settings. This ensures that your telemetry data is encrypted and protected against interception.

Example TLS Configuration:

tls:
  insecure_skip_verify: true

If you need more stringent security settings, replace insecure_skip_verify with proper certificate configurations to verify your server’s identity.

Field Mappings: Adding Context to Your Data

Field mappings allow you to enrich your telemetry data with additional context, making it more meaningful and easier to analyze. You can map metadata from the Splunk HEC events to OpenTelemetry attributes.

Example Field Mappings:

hec_metadata_to_otel_attrs:
  source: "source"
  sourcetype: "sourcetype"
  index: "index"

Integrating OpenObserve: Enhancing Your Observability

While Splunk HEC provides powerful capabilities for data collection, integrating OpenObserve (O2) can take your observability to the next level. OpenObserve offers advanced visualization and alerting features, making it an excellent alternative or complement to Splunk for managing and analyzing telemetry data.

Example Configuration with OpenObserve:

exporters:
  otlp:
    endpoint: "http://your-openobserve-instance:4317"
    compression: gzip

service:
  pipelines:
    logs:
      receivers: \[splunk_hec]
      processors: \[batch]
      exporters: [logging, splunk_hec, otlp]

By carefully configuring your Splunk HEC Receiver and considering an integration with OpenObserve, you can build a robust, scalable, and secure observability solution. 

This setup not only ensures efficient data collection and management but also provides powerful tools for real-time monitoring and alerting, giving you comprehensive insights into your systems.

For more detailed information and to get started with OpenObserve, visit our website, check out our GitHub repository, or sign up here

In the next section, we’ll cover the various authorization methods available for the Splunk HEC Receiver, including basic authentication, bearer token authentication, OIDC, OAuth 2, and custom authentication implementations. 

Securing Your Setup: Authorization Methods for Splunk HEC Receiver

Ensuring secure access to your telemetry data is crucial for maintaining the integrity and confidentiality of your observability pipeline. The Splunk HEC Receiver supports multiple authentication methods to suit different security needs. 

Locking It Down: Authorization Methods

  1. Basic Authentication

Basic authentication is the simplest form of securing your Splunk HEC Receiver. It involves using a username and password to authenticate access. While easy to implement, it is recommended to use this method over HTTPS to ensure credentials are not transmitted in plain text.

Example Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    basic_auth:
      username: "your-username"
      password: "your-password"

  1. Bearer Token Authentication

Bearer token authentication uses a token to authenticate requests. This method is more secure than basic authentication and is ideal for environments where tokens can be managed and rotated regularly.

Example Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-bearer-token"

  1. OIDC Authentication

OpenID Connect (OIDC) provides a modern and secure method for authentication by using tokens issued by an OIDC provider. This method is particularly useful in environments where single sign-on (SSO) and federated identity management are implemented.

Example Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    oidc:
      issuer_url: "https://your-oidc-provider"
      client_id: "your-client-id"
      client_secret: "your-client-secret"

  1. OAuth 2 Client

OAuth 2 is a robust and flexible authentication framework that allows secure delegated access. Implementing OAuth 2 client authentication ensures that access tokens are issued securely and can be scoped appropriately for different services.

Example Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    oauth2:
      client_id: "your-client-id"
      client_secret: "your-client-secret"
      token_url: "https://your-oauth2-provider/token"
      scopes: ["read", "write"]

  1. Custom Authentication

For environments with unique security requirements, custom authentication methods can be implemented. This might involve integrating with proprietary authentication systems or using custom tokens.

Example Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"
    custom_auth:
      header: "X-Custom-Auth"
      value: "your-custom-token"

By leveraging the various authentication methods available, you can tailor your security strategy to fit your specific needs. 

Fine-Tuning Your Splunk HEC: Configuration Settings

To get the most out of your Splunk HEC setup, you need to understand and configure various settings meticulously.  

Configuration Options for the Splunk HEC

Configuring the Splunk HEC involves setting up several parameters that ensure secure, efficient, and accurate data collection and transmission. 

Here’s a breakdown of the essential configuration options:

Basic Configuration:

receivers:
  splunk_hec:
    endpoint: "https://your-splunk-instance:8088"
    token: "your-splunk-hec-token"

Detailed Settings for Endpoint, TLS, CORS, and Auth Fields

Endpoint Configuration

The endpoint setting specifies the URL where your Splunk HEC instance is accessible. This must be correctly set to ensure data is transmitted to the right destination.

Example Endpoint Configuration:

endpoint: "https://your-splunk-instance:8088"

TLS Settings: Secure Your Data

TLS (Transport Layer Security) settings are crucial for securing data in transit. Properly configuring these settings ensures that your data is encrypted, maintaining its confidentiality and integrity.

Example TLS Configuration:

tls:
  insecure_skip_verify: false
  cert_file: "/path/to/your/cert.pem"
  key_file: "/path/to/your/key.pem"

  • insecure_skip_verify: Set to false to ensure the server’s certificate is verified.
  • cert_file & key_file: Specify the paths to your certificate and key files for secure connections.

CORS Settings: Controlling Access

Cross-Origin Resource Sharing (CORS) settings control how your resources are shared across different origins. Configuring CORS is essential for security, especially when dealing with web applications.

Example CORS Configuration:

cors:
  allowed_origins: \["https://your-app.com"]

  • allowed_origins: Specifies which origins are permitted to access the resources.

Authentication Fields

Authentication settings ensure that only authorized users and applications can send data to your Splunk HEC Receiver. Various methods include basic authentication, bearer tokens, OIDC, OAuth 2, and custom authentication.

Example Bearer Token Configuration:

token: "your-splunk-hec-token"

Mapping Metadata: hec_metadata_to_otel_attrs

Mapping metadata from Splunk HEC events to OpenTelemetry attributes enhances the data’s context and usability. 

This mapping allows you to enrich the collected telemetry data with additional information that can be critical for analysis and troubleshooting.

Example Metadata Mapping Configuration:

hec_metadata_to_otel_attrs:
  source: "source"
  sourcetype: "sourcetype"
  index: "index"

  • source: Maps the source field from Splunk HEC to an OpenTelemetry attribute.
  • sourcetype: Maps the sourcetype field to an OpenTelemetry attribute.
  • index: Maps the index field to an OpenTelemetry attribute.

By fine-tuning these configuration settings, you can ensure that your Splunk HEC Receiver operates securely and efficiently. Proper endpoint settings, robust TLS configurations, precise CORS controls, and flexible authentication methods collectively create a robust data collection setup. 

Additionally, integrating metadata mapping enhances the richness of your telemetry data, making it more actionable.

Conclusion

Configuring and optimizing your Splunk HEC Receiver setup is crucial for efficient and secure data collection. By carefully adjusting the endpoint settings, TLS configurations, CORS controls, and authentication methods, you can build a robust and reliable observability pipeline. 

Additionally, enriching your telemetry data with metadata mappings and integrating OpenObserve (O2) for advanced visualization and analysis further enhances your observability capabilities.

Following the guidelines provided in this guide ensures that your Splunk HEC Receiver operates securely, efficiently, and effectively, providing comprehensive insights into your systems. For more detailed information and to get started with OpenObserve, visit our website, check out our GitHub repository, or sign up here

Author:

authorImage

The OpenObserve Team comprises dedicated professionals committed to revolutionizing system observability through their innovative platform, OpenObserve. Dedicated to streamlining data observation and system monitoring, offering high performance and cost-effective solutions for diverse use cases.

OpenObserve Inc. © 2024