Docs » Instrument back-end applications to send spans to Splunk APM » Instrument Ruby applications for Splunk Observability Cloud » Instrument a Ruby application for Splunk Observability Cloud

Instrument a Ruby application for Splunk Observability Cloud πŸ”—

The Ruby agent from the Splunk Distribution of OpenTelemetry Ruby can automatically instrument your Ruby application by dynamically patching supported libraries.

To get started, use the guided setup or follow the instructions manually.

Generate customized instructions using the guided setup πŸ”—

To generate all the basic installation commands for your environment and application, use the Ruby guided setup. To access the Ruby guided setup:

  1. Log in to Observability Cloud.

  2. Open the Ruby guided setup. Optionally, you can navigate to the guided setup on your own:

    1. In the left navigation menu, select Data Management.

    2. Select Add Integration to open the Integrate Your Data page.

    3. In the integration filter menu, select By Product.

    4. Select the APM product.

    5. Select the Ruby tile to open the Ruby guided setup.

Install and enable the Ruby agent πŸ”—

Follow these steps to automatically instrument your application using the Ruby agent:

  1. Check that you meet the requirements. See Ruby agent compatibility and requirements.

  2. Add the following gems to your project’s Gemfile:

    gem "splunk-otel", "~> 1.0"
    gem "opentelemetry-instrumentation-all", "~> 0.27"
    

    Run bundle install to install the gems.

  3. Enable the instrumentation by passing auto_instrument:true to the configure method of Splunk::Otel:

    require "splunk/otel"
    Splunk::Otel.configure(auto_instrument: true)
    
  4. Set the OTEL_SERVICE_NAME environment variable:

    export OTEL_SERVICE_NAME=<yourServiceName>
    
  5. (Optional) Set the endpoint URL if the Splunk OpenTelemetry Collector is running on a different host:

    export OTEL_EXPORTER_OTLP_ENDPOINT=<yourCollectorEndpoint>:<yourCollectorPort>
    
  6. (Optional) Set the deployment environment and service version:

    export OTEL_RESOURCE_ATTRIBUTES='deployment.environment=<envtype>,service.version=<version>'
    

If no data appears in Observability > APM, see Troubleshoot Ruby instrumentation for Splunk Observability Cloud.

If you want to manually install and enable instrumentation libraries, see Manually instrument Ruby applications for Splunk Observability Cloud.

Instrument Ruby on Rails applications πŸ”—

To instrument a Ruby on Rails application, see Instrument a Rails application.

Enable server timing for RUM πŸ”—

You can connect Real User Monitoring (RUM) requests from mobile and web applications with server trace data produced by your Ruby application or service. For more information, see Server trace information.

Deploy the Ruby agent in Kubernetes πŸ”—

To deploy the Ruby agent in Kubernetes, configure the Kubernetes Downward API to expose environment variables to Kubernetes resources.

The following example shows how to update a deployment to expose environment variables by adding the agent configuration under the .spec.template.spec.containers.env section:

apiVersion: apps/v1
kind: Deployment
spec:
  selector:
    matchLabels:
      app: your-application
  template:
    spec:
      containers:
        - name: myapp
          env:
            - name: SPLUNK_OTEL_AGENT
              valueFrom:
                fieldRef:
                  fieldPath: status.hostIP
            - name: OTEL_EXPORTER_OTLP_ENDPOINT
              value: "http://$(SPLUNK_OTEL_AGENT):4318"
            - name: OTEL_SERVICE_NAME
              value: "<serviceName>"
            - name: OTEL_RESOURCE_ATTRIBUTES
              value: "deployment.environment=<environmentName>"

Configure the Ruby agent πŸ”—

In most cases, the only configuration setting you need to enter is the service name. You can also define other basic settings, like the deployment environment, the service version, and the endpoint, among others.

For advanced configuration of the Ruby agent, like changing trace propagation formats, correlating traces and logs, or configuring server trace data, see Configure the Ruby agent for Splunk Observability Cloud.

Send data directly to Observability Cloud πŸ”—

By default, all telemetry is sent to the local instance of the Splunk Distribution of OpenTelemetry Collector.

If you need to send data directly to Observability Cloud, set the following environment variables:

export SPLUNK_ACCESS_TOKEN=<access_token>
export SPLUNK_REALM=<realm>

To obtain an access token, see Retrieve and manage user API access tokens using Splunk Observability Cloud.

In the ingest endpoint URL, realm is the Observability Cloud realm, for example, us0. To find the realm name of your account, follow these steps:

  1. Open the left navigation menu in Observability Cloud.

  2. Select Settings.

  3. Select your username.

The realm name appears in the Organizations section.

Note

For more information on the ingest API endpoints, see Send APM traces.

Instrument Lambda functions πŸ”—

You can instrument AWS Lambda functions using the Splunk OpenTelemetry Lambda Layer. See Instrument your AWS Lambda function for Splunk Observability Cloud for more information.