Skip to content

Using the SDK

Connect to ARMS ​

Ensure ARMS is running. Send telemetry to https://<arms-host>/api/ingest with an x-api-key header — not collector port 4318. For on-prem access, see On-prem ARMS.

Install ARMS ​

Open your command line or terminal and run:

shell
pip install --extra-index-url https://arms-packages.elsaifoundry.ai/root/elsai-arms/ elsai-arms==3.0.4

Initialize ARMS in your Application ​

TIP

Not sure which method to choose? Check out Instrumentation Methods to understand the differences.

Zero-code instrumentation ​

Via CLI arguments ​
bash
# Start GPU monitoring instantly
elsai-arms-instrument --collect-system-metrics python your_app.py

# With custom settings
elsai-arms-instrument \
  --otlp-endpoint http://127.0.0.1:4318 \
  --service-name my-gpu-app \
  --environment production \
  --collect-system-metrics \
  python your_app.py
Via Environment Variables ​

Set environment variables:

bash
export OTEL_EXPORTER_OTLP_ENDPOINT="http://127.0.0.1:4318"
export ELSAI_ARMS_COLLECT_SYSTEM_METRICS=true
export OTEL_SERVICE_NAME=my-gpu-app

# Run your application
elsai-arms-instrument python your_app.py

Manual instrumentation ​

You can set up ARMS in your application using either function arguments directly in your code or by using environment variables.

Parameters ​

Add the following two lines to your application code:

python
import elsai_arms

elsai_arms.init(
  otlp_endpoint="http:127.0.0.1:4318",
  collect_system_metrics=True  # This enables GPU monitoring
)

Replace:

  1. YOUR_OTEL_ENDPOINT with your OpenTelemetry backend. For ARMS, use https://<arms-host>/api/ingest plus an x-api-key header — not collector port 4318. For a generic OTel Collector, use http://127.0.0.1:4318.

Note: collect_system_metrics=True replaces the deprecated collect_gpu_stats=True

Environment Variables ​

Configure your OTLP endpoint using environment variables:

shell
export OTEL_EXPORTER_OTLP_ENDPOINT=""http://127.0.0.1:4318"
export ELSAI_ARMS_COLLECT_SYSTEM_METRICS=true

Add the following two lines to your application code:

python
import elsai_arms

elsai_arms.init(collect_system_metrics=True)

Replace:

  1. YOUR_OTEL_ENDPOINT with your OpenTelemetry backend. For ARMS, use https://<arms-host>/api/ingest plus an x-api-key header — not collector port 4318. For a generic OTel Collector, use http://127.0.0.1:4318.

To send metrics to other Observability tools, refer to the supported destinations.

For more advanced configurations and application use cases, visit the ARMS Python repository.

Using the Collector

Connect to ARMS ​

Ensure ARMS is running. Send telemetry to https://<arms-host>/api/ingest with an x-api-key header — not collector port 4318. For on-prem access, see On-prem ARMS.

Pull otel-gpu-collector Docker Image ​

You can quickly start using the OTel GPU Collector by pulling the Docker image:

sh
docker pull <gpu-collector-image>

Run otel-gpu-collector Docker container ​

You can quickly start using the OTel GPU Collector by pulling the Docker image: Here's a quick example showing how to run the container with the required environment variables:

sh
docker run --gpus all --pid=host \
    -e OTEL_SERVICE_NAME='chatbot' \
    -e OTEL_RESOURCE_ATTRIBUTES='deployment.environment=staging' \
    -e OTEL_EXPORTER_OTLP_ENDPOINT="http://127.0.0.1:4318" \
    <gpu-collector-image>

--pid=host is required for per-process GPU attribution (cmdline, PID, zombie state).

For more advanced configurations of the collector, visit the OTel GPU Collector repository.

Note: If ARMS and the collector run on the same Docker network, use the ARMS service hostname; otherwise use the host IP. You can also add the OTel GPU Collector under services in your own Compose file:

Docker Compose: Add the following config under services
yaml
otel-gpu-collector:
  image: <gpu-collector-image>
  pid: host
  environment:
    OTEL_SERVICE_NAME: 'chatbot'
    OTEL_RESOURCE_ATTRIBUTES: 'deployment.environment=staging'
    OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector:4318"
  device_requests:
  - driver: nvidia
    count: all
    capabilities: [gpu]
  depends_on:
  - otel-collector
  restart: always
Host IP: Use the Host IP to connect to OTel Collector
sh
OTEL_EXPORTER_OTLP_ENDPOINT="http://192.168.10.15:4318"

Copyright © 2026 elsai foundry.