Set up zero-code instrumentation

Set up zero-code instrumentation for applications, with additional settings for Secure Application.

Use this workflow to instrument Java, Node.js, and Python applications that run on Kubernetes. This workflow sets up the Splunk Distribution of OpenTelemetry Collector Helm chart and the OpenTelemetry Operator to inject instrumentation into an application that runs on Kubernetes and is mostly the same for both new applications and applications that are already Operator-instrumented for Splunk APM, with the only difference being the application annotation step.

Note: Kubernetes zero-code instrumentation with a community Collector or a non-Helm Collector deployment isn't covered by this workflow.

Before you begin

Confirm that your application meets the instrumentation requirements:

Java
Node.js
Use the standard Node.js instrumentation image version 4.7.0 or later.
Python
No Python-specific preparation is required. The Helm chart automatically configures Python auto-instrumentation during the setup steps below.

Setup

  1. Add the Helm repository:

    BASH
    helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart
  2. Ensure the Helm repository is up to date:

    BASH
    helm repo update
  3. Do non-language-specific Kubernetes Helm/Operator setup: Follow the instructions in Zero-code instrumentation for back-end applications in Kubernetes with these important modifications:

    1. Add splunkObservability.secureAppEnabled: true to your values.yaml. For example:

      YAML
      # Your Splunk Observability Cloud realm and access token
      splunkObservability:
        realm: <splunk_realm>
        accessToken: <splunk_access_token>
        secureAppEnabled: true
      ...
    2. If you've activated zero-configuration instrumentation already for this application, or if the collector release already exists for any other reason, replace the helm install command with helm upgrade --install in the reference page's example.

  4. Do language-specific setup:

    Java

    To collect attack events from a Java application, add the -Dargento.allow.security.events=true flag to the JVM arguments for your application:

    • If your application already sets JAVA_TOOL_OPTIONS, append the flag to the existing value.

      YAML
      env:
        - name: JAVA_TOOL_OPTIONS
          value: "<existing-java-tool-options> -Dargento.allow.security.events=true"
    • If your application doesn't already set JAVA_TOOL_OPTIONS, set the value to -Dargento.allow.security.events=true.

    Node.js
    No setup required.
    Python
    No setup required.