๐ Environment variables use-cases
The best way to initialize and configure Helios is via environment variables. Depending on the infrastructure on which you run your application, setting them up will be a little different.
Running from terminal (UNIX)
When you manually run your app from a UNIX terminal, you can set the following types of variables:
Shell variables
Shell variables are defined as part of the execution command, and will be available only in the process for which they were defined.
For example, running a Python application while enabling Helios using shell variables will look like this:
AUTOWRAPT_BOOTSTRAP=helios HS_TOKEN=abc HS_SERVICE_NAME=my_service python my_app.py
This command sets 3 different variables (AUTOWRAPT_BOOTSTRAP
, HS_TOKEN
and HS_SERVICE_NAME
) and runs the app.
Environment variables
Environment variables are defined prior to executing your application, and will be available for the process they were defined in, along with any other process spawn from it - i.e. your application.
For example, enabling Helios for a Node application using environment variables will look like this:
export NODE_OPTIONS="--require helios-opentelemetry-sdk"
export HS_TOKEN=abc
export HS_SERVICE_NAME=my_service
python my_app.py
These commands first set 3 different environment variables (NODE_OPTIONS
, HS_TOKEN
and HS_SERVICE_NAME
) and the last command runs the app - in which these variables will be available.
Running with a Dockerfile
If your application is built and run from a Docker container, you can configure the necessary environment variables in your Dockerfile.
For example, enabling Helios for a Node application will look something like this:
FROM node:16.16.0-alpine
ENV NODE_OPTIONS="--require helios-opentelemetry-sdk"
ENV HS_TOKEN="<YOUR HELIOS TOKEN GOES HERE>"
ENV HS_SERVICE_NAME="my-node-service"
ENV HS_ENVIRONMENT="staging"
...
Dockerized Java application
If your Docker container runs a Java application, you'll need to copy to the container the Java agent JAR, define the required environment variables, and update your execution command:
FROM openjdk:8u332-jre
# Assuming the working directory includes your application's JAR "my-java-service.jar".
COPY opentelemetry-javaagent.jar ./
ENV OTEL_SERVICE_NAME="my-java-service"
ENV OTEL_EXPORTER_OTLP_HEADERS="Authorization=<YOUR HELIOS TOKEN GOES HERE>"
ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://collector.gethelios.dev/v1/traces"
ENV OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
ENV OTEL_RESOURCE_ATTRIBUTES="deployment.environment=staging"
CMD ["java", "-javaagent:opentelemetry-javaagent.jar", "-jar", "my-java-service.jar"]
Running with Docker Compose
If you use Docker Compose to build and run your application along with other applications, you can configure the environment variables in the docker-compose.yml
file.
For example, enabling Helios for a service that's based on a Node application will look something like this:
services:
my-node-service:
image: my-node-image
environment:
NODE_OPTIONS: "--require helios-opentelemetry-sdk"
HS_TOKEN: "<YOUR HELIOS TOKEN GOES HERE>"
HS_SERVICE_NAME: "my-node-service"
HS_ENVIRONMENT: "staging"
...
When you spin-up your Docker containers (docker compose up
), these environment variables will be set and available for the Node application.
Running in Kubernetes
Of your application is being run inside a Kubernetes Pod, you can set environment variables for the containers that run in the Pod.
For example, enabling Helios for a Python application will look something like this:
apiVersion: v1
kind: Pod
metadata:
name: my-python-service
spec:
containers:
- name: python-service-container
image: python-service:latest
env:
- name: AUTOWRAPT_BOOTSTRAP
value: helios
- name: HS_TOKEN
value: abc
- name: HS_SERVICE_NAME
value: my_service_in_kubernetes
When you spin-up your Kubernetes Pod, these environment variables will be set and available for the application.
Detailed installation Instructions
To learn more about initializing Helios and the required environment variables, see the detailed installation instructions.
Updated 4 months ago