Files
ophion/deploy/instrumentation/files
bigtux 6f9657a3a8 feat: Universal auto-instrumentation for all languages
## New Features

### Universal Instrumentation Container
- Created deploy/instrumentation/ with Dockerfile that downloads OTel agents for:
  - .NET (glibc and musl/Alpine versions)
  - Node.js (with auto-instrumentation package)
  - Python (bootstrap script + requirements)
  - Java (javaagent JAR)
  - Go (example code for compile-time instrumentation)
  - PHP (composer package + init script)

### Universal instrument.sh Script
- Auto-detects application language from running processes
- Generates docker-compose snippets for each language
- Supports: dotnet, nodejs, python, java, go, php
- Usage: ./instrument.sh <container> [language] [otlp_endpoint]

### Improved docker-compose.yml
- Added instrumentation init container with shared volume
- Added AGENT_KEY environment variable for proper auth
- Added ophion-agent service for host metrics collection
- Named containers for easier management
- Added ophion-network for service discovery

### Documentation
- Created docs/QUICK_START.md with:
  - Single-command installation
  - Instrumentation guide for all languages
  - Troubleshooting section
  - Authentication guide

### Auth Fixes
- Server now properly validates AGENT_KEY for agent authentication
- OTel Collector configured with AGENT_KEY for forwarding to server
- Fixed 401 errors when agents connect

## Files Changed
- docker-compose.yml: Complete stack with all services
- deploy/instrumentation/*: Universal OTel agent container
- deploy/docker/otel-collector-config.yaml: Fixed auth headers
- instrument.sh: Universal instrumentation script
- docs/QUICK_START.md: Complete quick start guide
- README.md: Updated with new features
- .env.example: Added AGENT_KEY

## Testing
- Go code compiles successfully
- Docker images build correctly
- All changes are backwards compatible
2026-02-06 19:28:43 -03:00
..

OPHION OpenTelemetry Agents

This volume contains auto-instrumentation agents for all major languages.

Directory Structure

  • /otel/dotnet/ - .NET auto-instrumentation (glibc)
  • /otel/dotnet-musl/ - .NET auto-instrumentation (Alpine/musl)
  • /otel/nodejs/ - Node.js SDK and loader
  • /otel/python/ - Python requirements and bootstrap
  • /otel/java/ - Java agent JAR
  • /otel/go/ - Go instrumentation examples
  • /otel/php/ - PHP composer package

Environment Variables (all languages)

Usage Examples

.NET

ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658571}
ENV CORECLR_PROFILER_PATH=/otel/dotnet/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so
ENV DOTNET_ADDITIONAL_DEPS=/otel/dotnet/AdditionalDeps
ENV DOTNET_SHARED_STORE=/otel/dotnet/store
ENV DOTNET_STARTUP_HOOKS=/otel/dotnet/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll
ENV OTEL_DOTNET_AUTO_HOME=/otel/dotnet

Node.js

node -r /otel/nodejs/instrument.js your-app.js

Python

source /otel/python/bootstrap.sh
opentelemetry-instrument python your-app.py

Java

java -javaagent:/otel/java/opentelemetry-javaagent.jar -jar your-app.jar

PHP

cd your-app && composer require open-telemetry/sdk open-telemetry/exporter-otlp