Splunk HEC Connector

Configure the Splunk HEC connector to receive HTTP Event Collector formatted data from applications, cloud services, and webhooks for AI-powered analysis.

  12 minute read  

Overview

The Splunk HEC (HTTP Event Collector) connector receives data using the Splunk HTTP Event Collector protocol. Splunk HEC is a token-based HTTP event collector that allows applications, cloud services, and serverless functions to send data via HTTP/HTTPS POST requests using JSON formatting. Content streams into Edge Delta Pipelines for analysis by AI teammates through the Edge Delta MCP connector.

The connector provides native Splunk HEC endpoint support with JSON event format parsing and both /services/collector/event (JSON) and /services/collector/raw (plain text) endpoints. It accepts events from cloud-native applications, serverless functions, SaaS platforms, webhook-based systems, and custom HTTP logging libraries.

When you add this streaming connector, it appears as a Splunk HEC source in your selected pipeline. AI teammates access this data by querying the Edge Delta backend with the Edge Delta MCP connector.

Add the Splunk HEC Connector

To add the Splunk HEC connector, you configure a listening address and port where Edge Delta will accept incoming Splunk HEC formatted events.

Prerequisites

Before configuring the connector, ensure you have:

  • Applications or services configured to send Splunk HEC JSON format
  • Network connectivity from HTTP clients to Edge Delta agent
  • Firewall rules allowing inbound HTTP/HTTPS traffic on chosen port
  • Available TCP port (8088 for Splunk HEC compatibility or custom port)

Configuration Steps

  1. Navigate to AI Team > Connectors in the Edge Delta application
  2. Find the Splunk HEC connector in Streaming Connectors
  3. Click the connector card
  4. Configure Listen address (default 0.0.0.0 for all interfaces)
  5. Set Port number (8088 for Splunk compatibility or custom like 3421)
  6. Configure Read Timeout (how long to wait for incoming data)
  7. Optionally configure Advanced Settings for TLS, headers, rate limiting
  8. Select a target environment
  9. Click Save

The connector deploys and begins listening for Splunk HEC formatted events.

Splunk HEC connector configuration showing listen address, port, and TLS settings

Configuration Options

Connector Name

Name to identify this Splunk HEC connector instance.

Listen

IP address to bind to for listening.

Format: IPv4 address

Default: 0.0.0.0 (all interfaces)

Examples:

  • 0.0.0.0 - Listen on all network interfaces
  • 192.168.1.100 - Listen only on specific interface
  • 127.0.0.1 - Local host only (testing)

Port

TCP port to listen on for incoming Splunk HEC HTTP traffic.

Format: Integer between 1 and 65535

Default: 3421

Examples:

  • 8088 - Splunk HEC standard port
  • 3421 - Edge Delta default port
  • 8080 - Alternative HTTP port

Note: Ensure firewall rules allow inbound traffic on chosen port

Read Timeout

How long to wait for incoming data before timing out connection.

Format: Duration (milliseconds, seconds, minutes)

Default: 1m

Examples:

  • 30s - 30 seconds for responsive applications
  • 1m - 1 minute typical timeout
  • 2m - 2 minutes for slower connections

Purpose: Prevents slow or stalled clients from holding connections open indefinitely

Advanced Settings

TLS

TLS settings enable encrypted HTTPS connections for secure Splunk HEC traffic.

Configuration Options:

  • Ignore Certificate Check: Disables SSL/TLS certificate verification (use with caution)
  • CA File: Absolute file path to CA certificate for SSL/TLS
  • CA Path: Absolute path where CA certificate files are located
  • CRT File: Absolute path to SSL/TLS certificate file
  • Key File: Absolute path to private key file for SSL/TLS
  • Key Password: Optional password for private key file
  • Client Auth Type: Client authentication type (default: noclientcert)
  • Minimum Version: Minimum TLS version (default: TLSv1_2)
  • Maximum Version: Maximum TLS version

Client Auth Types:

  • noclientcert - No client certificate requested
  • requestclientcert - Client certificate requested but not required
  • requireanyclientcert - Client certificate required but not validated
  • verifyclientcertifgiven - Client certificate validated if provided
  • requireandverifyclientcert - Client certificate required and validated

TLS Versions: TLSv1_0, TLSv1_1, TLSv1_2, TLSv1_3

When to Use: Enable for production environments with sensitive data

Metadata Level (Resource Attributes)

This option is used to define which detected resources and attributes to add to each data item as it is ingested by Edge Delta. You can select:

  • Required Only: This option includes the minimum required resources and attributes for Edge Delta to operate.
  • Default: This option includes the required resources and attributes plus those selected by Edge Delta
  • High: This option includes the required resources and attributes along with a larger selection of common optional fields.
  • Custom: With this option selected, you can choose which attributes and resources to include. The required fields are selected by default and can’t be unchecked.

Based on your selection in the GUI, the source_metadata YAML is populated as two dictionaries (resource_attributes and attributes) with Boolean values.

See Choose Data Item Metadata for more information on selecting metadata.

Splunk HEC-specific metadata included:

  • Host name - Edge Delta agent hostname
  • Host IP - Edge Delta agent IP address
  • Server port - Port connector is listening on
  • Service name - Service identifier
  • Source name - Connector instance name
  • Source type - Splunk HEC connector type

Splunk metadata extracted from JSON payload:

  • Splunk index
  • Splunk sourcetype
  • Splunk source
  • Splunk host
  • Event time

Metadata Level (Attributes)

Additional attribute-level metadata fields to include.

Default: ed.env.id

Attributes from Header

HTTP headers to extract from incoming requests and add as attributes.

Format: List of header names

Examples:

  • Authorization - Extract authorization header
  • X-Splunk-Request-Id - Extract Splunk request ID
  • X-Client-Id - Extract client identifier
  • X-Correlation-Id - Extract correlation ID for tracing

Use Case: Capture correlation IDs, authentication tokens, or custom metadata from HTTP headers

Rate Limit

The rate_limit parameter enables you to control data ingestion based on system resource usage. This advanced setting helps prevent source nodes from overwhelming the agent by automatically throttling or stopping data collection when CPU or memory thresholds are exceeded.

Use rate limiting to prevent runaway log collection from overwhelming the agent in high-volume sources, protect agent stability in resource-constrained environments with limited CPU/memory, automatically throttle during bursty traffic patterns, and ensure fair resource allocation across source nodes in multi-tenant deployments.

When rate limiting triggers, pull-based sources (File, S3, HTTP Pull) stop fetching new data, push-based sources (HTTP, TCP, UDP, OTLP) reject incoming data, and stream-based sources (Kafka, Pub/Sub) pause consumption. Rate limiting operates at the source node level, where each source with rate limiting enabled independently monitors and enforces its own thresholds.

Configuration Steps:

  1. Click Add New in the Rate Limit section
  2. Click Add New for Evaluation Policy
  3. Select Policy Type:
  • CPU Usage: Monitors CPU consumption and rate limits when usage exceeds defined thresholds. Use for CPU-intensive sources like file parsing or complex transformations.
  • Memory Usage: Monitors memory consumption and rate limits when usage exceeds defined thresholds. Use for memory-intensive sources like large message buffers or caching.
  • AND (composite): Combines multiple sub-policies with AND logic. All sub-policies must be true simultaneously to trigger rate limiting. Use when you want conservative rate limiting (both CPU and memory must be high).
  • OR (composite): Combines multiple sub-policies with OR logic. Any sub-policy can trigger rate limiting. Use when you want aggressive rate limiting (either CPU or memory being high triggers).
  1. Select Evaluation Mode. Choose how the policy behaves when thresholds are exceeded:
  • Enforce (default): Actively applies rate limiting when thresholds are met. Pull-based sources (File, S3, HTTP Pull) stop fetching new data, push-based sources (HTTP, TCP, UDP, OTLP) reject incoming data, and stream-based sources (Kafka, Pub/Sub) pause consumption. Use in production to protect agent resources.
  • Monitor: Logs when rate limiting would occur without actually limiting data flow. Use for testing thresholds before enforcing them in production.
  • Passthrough: Disables rate limiting entirely while keeping the configuration in place. Use to temporarily disable rate limiting without removing configuration.
  1. Set Absolute Limits and Relative Limits (for CPU Usage and Memory Usage policies)

Note: If you specify both absolute and relative limits, the system evaluates both conditions and rate limiting triggers when either condition is met (OR logic). For example, if you set absolute limit to 1.0 CPU cores and relative limit to 50%, rate limiting triggers when the source uses either 1 full core OR 50% of available CPU, whichever happens first.

  • For CPU Absolute Limits: Enter value in full core units:

    • 0.1 = one-tenth of a CPU core
    • 0.5 = half a CPU core
    • 1.0 = one full CPU core
    • 2.0 = two full CPU cores
  • For CPU Relative Limits: Enter percentage of total available CPU (0-100):

    • 50 = 50% of available CPU
    • 75 = 75% of available CPU
    • 85 = 85% of available CPU
  • For Memory Absolute Limits: Enter value in bytes

    • 104857600 = 100Mi (100 × 1024 × 1024)
    • 536870912 = 512Mi (512 × 1024 × 1024)
    • 1073741824 = 1Gi (1 × 1024 × 1024 × 1024)
  • For Memory Relative Limits: Enter percentage of total available memory (0-100)

    • 60 = 60% of available memory
    • 75 = 75% of available memory
    • 80 = 80% of available memory
  1. Set Refresh Interval (for CPU Usage and Memory Usage policies). Specify how frequently the system checks resource usage:
  • Recommended Values:
    • 10s to 30s for most use cases
    • 5s to 10s for high-volume sources requiring quick response
    • 1m or higher for stable, low-volume sources

The system fetches current CPU/memory usage at the specified refresh interval and uses that value for evaluation until the next refresh. Shorter intervals provide more responsive rate limiting but incur slightly higher overhead, while longer intervals are more efficient but slower to react to sudden resource spikes.

The GUI generates YAML as follows:

# Simple CPU-based rate limiting
nodes:
  - name: <node name>
    type: <node type>
    rate_limit:
      evaluation_policy:
        policy_type: cpu_usage
        evaluation_mode: enforce
        absolute_limit: 0.5  # Limit to half a CPU core
        refresh_interval: 10s
# Simple memory-based rate limiting
nodes:
  - name: <node name>
    type: <node type>
    rate_limit:
      evaluation_policy:
        policy_type: memory_usage
        evaluation_mode: enforce
        absolute_limit: 536870912  # 512Mi in bytes
        refresh_interval: 30s

Composite Policies (AND / OR)

When using AND or OR policy types, you define sub-policies instead of limits. Sub-policies must be siblings (at the same level)—do not nest sub-policies within other sub-policies. Each sub-policy is independently evaluated, and the parent policy’s evaluation mode applies to the composite result.

  • AND Logic: All sub-policies must evaluate to true at the same time to trigger rate limiting. Use when you want conservative rate limiting (limit only when CPU AND memory are both high).
  • OR Logic: Any sub-policy evaluating to true triggers rate limiting. Use when you want aggressive protection (limit when either CPU OR memory is high).

Configuration Steps:

  1. Select AND (composite) or OR (composite) as the Policy Type
  2. Choose the Evaluation Mode (typically Enforce)
  3. Click Add New under Sub-Policies to add the first condition
  4. Configure the first sub-policy by selecting policy type (CPU Usage or Memory Usage), selecting evaluation mode, setting absolute and/or relative limits, and setting refresh interval
  5. In the parent policy (not within the child), click Add New again to add a sibling sub-policy
  6. Configure additional sub-policies following the same pattern

The GUI generates YAML as follows:

# AND composite policy - both CPU AND memory must exceed limits
nodes:
  - name: <node name>
    type: <node type>
    rate_limit:
      evaluation_policy:
        policy_type: and
        evaluation_mode: enforce
        sub_policies:
          # First sub-policy (sibling)
          - policy_type: cpu_usage
            evaluation_mode: enforce
            absolute_limit: 0.75  # Limit to 75% of one core
            refresh_interval: 15s
          # Second sub-policy (sibling)
          - policy_type: memory_usage
            evaluation_mode: enforce
            absolute_limit: 1073741824  # 1Gi in bytes
            refresh_interval: 15s
# OR composite policy - either CPU OR memory can trigger
nodes:
  - name: <node name>
    type: <node type>
    rate_limit:
      evaluation_policy:
        policy_type: or
        evaluation_mode: enforce
        sub_policies:
          - policy_type: cpu_usage
            evaluation_mode: enforce
            relative_limit: 85  # 85% of available CPU
            refresh_interval: 20s
          - policy_type: memory_usage
            evaluation_mode: enforce
            relative_limit: 80  # 80% of available memory
            refresh_interval: 20s
# Monitor mode for testing thresholds
nodes:
  - name: <node name>
    type: <node type>
    rate_limit:
      evaluation_policy:
        policy_type: memory_usage
        evaluation_mode: monitor  # Only logs, doesn't limit
        relative_limit: 70  # Test at 70% before enforcing
        refresh_interval: 30s

How to Use the Splunk HEC Connector

The Splunk HEC connector integrates seamlessly with AI Team, enabling data ingestion from HTTP-capable sources. AI teammates automatically leverage Splunk HEC-ingested data to analyze application logs, investigate errors, monitor serverless functions, and track webhook events.

Use Case: Cloud Application Logging

Collect logs from containerized services and Kubernetes deployments without deploying traditional log forwarding agents. Applications send structured JSON logs directly to Edge Delta via HTTP for AI-powered analysis. AI teammates analyze application errors, identify patterns, and provide insights on microservices behavior.

Configuration:

  • Listen: 0.0.0.0
  • Port: 8088
  • Read Timeout: 1m
  • TLS: Enabled

Application sends events:

curl -X POST https://edge-delta-host:8088/services/collector/event \
  -H "Content-Type: application/json" \
  -d '{"time": 1696176000, "host": "payment-pod", "source": "payment-api",
       "sourcetype": "app_logs", "index": "application",
       "event": {"level": "ERROR", "message": "Payment timeout"}}'

Use Case: Serverless Function Monitoring

Monitor AWS Lambda or Azure Functions by providing an HTTP endpoint where functions POST logs during execution. Serverless functions send execution metrics, errors, and events in Splunk HEC format. AI teammates identify performance issues, error patterns, and anomalies across serverless infrastructure without persistent monitoring agents.

Configuration:

  • Listen: 0.0.0.0
  • Port: 8088
  • Read Timeout: 30s
  • Attributes from Header: X-Request-Id

Use Case: Third-Party Webhook Ingestion

Receive webhooks from SaaS platforms like GitHub, GitLab, Jira, or monitoring tools. The connector provides standardized endpoint for webhook payloads, transforms them into structured events, and makes them available for AI analysis. AI teammates track deployment events, repository activities, and alert notifications with pattern recognition and anomaly detection.

Configuration:

  • Listen: 0.0.0.0
  • Port: 8088
  • Read Timeout: 2m
  • Attributes from Header: X-GitHub-Event,X-GitHub-Delivery
  • TLS: Enabled

Troubleshooting

Connection refused errors: Verify Edge Delta listening on port with netstat -tuln | grep 8088. Check connector deployed to target environment. Test connectivity with curl http://edge-delta-host:8088/services/collector/health. Review firewall rules allow inbound traffic on configured port. Ensure listen address set to 0.0.0.0 for remote connections.

High latency or timeouts: Check network bandwidth between clients and Edge Delta. Monitor Edge Delta resource usage (CPU, memory). Reduce batch sizes if sending very large batches. Review read timeout appropriate for network conditions. Implement rate limiting if Edge Delta consistently overwhelmed.

TLS handshake failures: Verify TLS enabled in connector configuration. Check server certificate valid, not expired, includes correct hostname. Ensure clients trust certificate authority or configure to trust self-signed certificate. Verify clients using HTTPS URLs not HTTP. Check TLS protocol versions compatible (TLS 1.2 or 1.3 preferred). For mutual TLS, ensure clients presenting valid certificates.

Events rejected with 400 Bad Request: Verify JSON payload valid and properly formatted. Ensure required event field present in JSON. Check Content-Type header set to application/json. Review event structure matches Splunk HEC specification with fields like event, time, host, source, sourcetype, index. For batch events, ensure newline-delimited JSON objects not JSON array.

Events missing metadata: Include all relevant Splunk HEC metadata fields in JSON payload (index, sourcetype, source, host). Verify field names match exactly (case-sensitive). Check header extraction configured correctly for “Attributes from Header”. Review metadata level settings for resource attributes. Ensure custom fields properly nested within event object.

Dropping events or rate limit errors: Review rate limit configuration appropriate for traffic volume. Monitor Edge Delta resource utilization for sufficient capacity. Implement batching to send multiple events per HTTP request. Use HTTP keep-alive for persistent connections. Deploy additional Edge Delta agents and distribute load if hitting capacity limits.

404 errors on endpoints: Use correct Splunk HEC endpoint paths: /services/collector/event for JSON events, /services/collector/raw for raw text, /services/collector/health for health checks. Ensure full URL formatted correctly: http://edge-delta-host:8088/services/collector/event. Note paths are case-sensitive and must match exactly.

Next Steps

For additional help, visit AI Team Support.