Deploy the Collector for Windows with Puppet

Install the Splunk Distribution of OpenTelemetry Collector on Windows using Puppet.

Follow these instructions to use Puppet to install and configure the Collector on Windows.

Download Puppet

  1. Download and install Puppet from Splunk's JFrog Artifactory instance:

    Connect Puppet to Artifactory

    Add the following snippet to your puppet.conf file:

    BASH
    [main]
    module_repository=https://splunk.jfrog.io/artifactory/api/puppet/puppet-splunk
    r10k

    To configure r10k to fetch modules from Artifactory, add the following to your r10k.yaml file:

    BASH
    forge:
      baseurl: https://splunk.jfrog.io/artifactory/api/puppet/puppet-splunk
    Command line
    BASH
    puppet module install --module_repository=https://splunk.jfrog.io/artifactory/api/puppet/puppet-splunk signalfx-splunk_otel_collector
  2. On Windows systems, be sure to download these required Puppet modules:

CAUTION: On Windows, the Collector is installed as a Windows service and its environment variables are set at the service scope, so they’re only available to the Collector service and not to the entire machine.

Configure Puppet

You customize Puppet using the class parameter.

To use this module, include the splunk_otel_collector class in your manifests with any supported parameters.

For example, the following deployment definition is the simplest deployment definition with the default parameters:

RUBY
class { splunk_otel_collector:
  collector_version => 'your-collector-version'
  splunk_access_token => 'your-splunk-access-token',
  splunk_realm => 'your-splunk-realm',
}

Replace your-collector-version with the desired Collector version, your-splunk-access-token with your Splunk access token to authenticate requests, and your-splunk-realm for the realm to send the data to.

Puppet parameter reference

The class object accepts the parameters described in the following table:

Name

Description

Default value

collector_version

Version of the Collector package to install, for example, 0.25.0. The version must correspond to Github Releases without the preceding v. This attribute is required.

None

gomemlimit

Replaces splunk_ballast_size_mib starting in Collector version 0.97.0. It allows limiting memory usage in the GO runtime, helping enhance garbage collection and prevent out of memory situations. Learn more at how to update memory ballast in your configuration.

90% of splunk_total_mem_mib

splunk_access_token

The Splunk access token to authenticate requests. This attribute is required.

None

splunk_realm

Which realm to send the data to, for example, us0. The Splunk ingest and API URLs are inferred by this value. The SPLUNK_REALM environment variable is set with this value for the collector service. This attribute is required. To find your Splunk realm, see Note about realms.

None

splunk_ingest_url

Sets the Splunk ingest URL explicitly instead of the URL inferred by the $splunk_realm parameter. The SPLUNK_INGEST_URL environment variable is set with this value for the Collector service.

https://ingest.${splunk_realm}.observability.splunkcloud.com

splunk_api_url

Sets the Splunk API URL explicitly instead of the URL inferred by the $splunk_realm parameter. The SPLUNK_API_URL environment variable is set with this value for the Collector service.

https://api.${splunk_realm}.observability.splunkcloud.com

splunk_trace_url

Sets the Splunk trace endpoint URL explicitly instead of the URL inferred by the $splunk_ingest_url parameter. The SPLUNK_TRACE_URL environment variable is set with this value for the Collector service.

${splunk_ingest_url}/v2/trace

splunk_hec_url

Sets the Splunk HEC endpoint URL explicitly instead of the URL inferred by the $splunk_ingest_url parameter. The SPLUNK_HEC_URL environment variable is set with this value for the Collector service.

${splunk_ingest_url}/v1/log

splunk_hec_token

Sets the Splunk HEC authentication token if different than $splunk_access_token. The SPLUNK_HEC_TOKEN environment variable is set with this value for the Collector service.

$splunk_access_token

splunk_bundle_dir

The path to the Smart Agent bundle directory. The default path is provided by the Collector package. If the specified path is changed from the default value, the path should be an existing directory on the node. The SPLUNK_BUNDLE_DIR environment variable is set to this value for the Collector service.

%PROGRAMFILES%\Splunk\OpenTelemetry Collector\agent-bundle

splunk_collectd_dir

The path to the collectd configuration directory for the Smart Agent bundle. The default path is provided by the Collector package. If the specified path is changed from the default value, the path should be an existing directory on the node. The SPLUNK_COLLECTD_DIR environment variable is set to this value for the Collector service.

${splunk_bundle_dir}\run\collectd

splunk_memory_total_mib

Total memory in MIB to allocate to the Collector; automatically calculates the ballast size. The SPLUNK_MEMORY_TOTAL_MIB environment variable is set to this value for the Collector service.

512

splunk_ballast_size_mib

splunk_ballast_size_mib is deprecated starting on Collector version 0.97.0. If you’re using it, see how to update your configuration.

None

collector_config_source

The source path to the Collector configuration YAML file. This file is copied to the $collector_config_dest path on the node. See the source attribute of the file resource for the supported value types. The default source file is provided by the Collector package.

%PROGRAMFILES\Splunk\OpenTelemetry Collector\agent_config.yaml

collector_config_dest

Destination path of the Collector configuration file on the node. The SPLUNK_CONFIG environment variable is set with this value for the Collector service.

%PROGRAMDATA%\Splunk\OpenTelemetry Collector\agent_config.yaml

Next steps

After you have installed the package, see: