# 🐍 OPHION - Quick Start Guide Get full observability (traces, metrics, logs) for your applications in minutes. ## 📋 Prerequisites - Docker & Docker Compose v2+ - 4GB RAM minimum - Ports available: 3000, 4317, 4318, 8080 --- ## 🚀 1. Install Ophion (Single Command) ```bash # Clone and start git clone https://github.com/bigtux/ophion.git cd ophion docker compose up -d ``` That's it! Wait ~2 minutes for all services to start. ### Verify Installation ```bash # Check all services are running docker compose ps # Should see: # ophion-server running (healthy) # ophion-dashboard running # ophion-otel-collector running (healthy) # ophion-postgres running (healthy) # ophion-redis running (healthy) ``` ### Access Points | Service | URL | Description | |---------|-----|-------------| | Dashboard | http://localhost:3000 | Web UI for traces, metrics, logs | | API | http://localhost:8080 | REST API | | OTLP gRPC | localhost:4317 | OpenTelemetry gRPC endpoint | | OTLP HTTP | localhost:4318 | OpenTelemetry HTTP endpoint | --- ## 🔧 2. Instrument Your Application ### Quick Method: Use the Universal Script ```bash # Auto-detect language ./instrument.sh my-container # Or specify language ./instrument.sh my-container nodejs ./instrument.sh my-container python ./instrument.sh my-container java ./instrument.sh my-container dotnet ``` ### Manual Configuration by Language #### Node.js ```dockerfile # Dockerfile FROM node:20-alpine # Add OTel packages RUN npm install @opentelemetry/auto-instrumentations-node @opentelemetry/sdk-node COPY . . # Run with auto-instrumentation CMD ["node", "--require", "@opentelemetry/auto-instrumentations-node/register", "app.js"] ``` ```yaml # docker-compose.yml services: myapp: environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://ophion-otel-collector:4318 - OTEL_SERVICE_NAME=my-nodejs-app networks: - ophion-network networks: ophion-network: external: true ``` #### Python ```dockerfile # Dockerfile FROM python:3.11-slim RUN pip install opentelemetry-distro opentelemetry-exporter-otlp RUN opentelemetry-bootstrap -a install COPY . . CMD ["opentelemetry-instrument", "python", "app.py"] ``` ```yaml # docker-compose.yml services: myapp: environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://ophion-otel-collector:4318 - OTEL_SERVICE_NAME=my-python-app - OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true networks: - ophion-network ``` #### Java ```dockerfile # Dockerfile FROM eclipse-temurin:21-jre # Download OTel Java agent ADD https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar /otel/agent.jar COPY target/app.jar /app.jar CMD ["java", "-javaagent:/otel/agent.jar", "-jar", "/app.jar"] ``` ```yaml # docker-compose.yml services: myapp: environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://ophion-otel-collector:4318 - OTEL_SERVICE_NAME=my-java-app - JAVA_TOOL_OPTIONS=-javaagent:/otel/agent.jar networks: - ophion-network ``` #### .NET ```dockerfile # Dockerfile FROM mcr.microsoft.com/dotnet/aspnet:8.0 # Download OTel .NET instrumentation ADD https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/opentelemetry-dotnet-instrumentation-linux-glibc-x64.zip /tmp/otel.zip RUN apt-get update && apt-get install -y unzip && \ unzip /tmp/otel.zip -d /otel && rm /tmp/otel.zip COPY --from=build /app/publish . ENV CORECLR_ENABLE_PROFILING=1 ENV CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658571} ENV CORECLR_PROFILER_PATH=/otel/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so ENV DOTNET_ADDITIONAL_DEPS=/otel/AdditionalDeps ENV DOTNET_SHARED_STORE=/otel/store ENV DOTNET_STARTUP_HOOKS=/otel/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll ENV OTEL_DOTNET_AUTO_HOME=/otel CMD ["dotnet", "MyApp.dll"] ``` ```yaml # docker-compose.yml services: myapp: environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://ophion-otel-collector:4318 - OTEL_SERVICE_NAME=my-dotnet-app networks: - ophion-network ``` #### Go Go requires code changes (compile-time instrumentation): ```go import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" ) func main() { // Initialize tracer exporter, _ := otlptracehttp.New(context.Background()) tp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter)) otel.SetTracerProvider(tp) // Wrap HTTP handlers http.Handle("/", otelhttp.NewHandler(myHandler, "myHandler")) } ``` --- ## 📊 3. View Your Data ### Dashboard Open http://localhost:3000 in your browser. **Default Login:** - Email: `admin@ophion.io` - Password: `OphionAdmin123!` ### API Examples ```bash # Get traces curl http://localhost:8080/api/v1/traces \ -H "Authorization: Bearer " # Get metrics curl "http://localhost:8080/api/v1/metrics?service=my-app&name=http.request.duration" \ -H "Authorization: Bearer " # Get logs curl "http://localhost:8080/api/v1/logs?service=my-app&level=error" \ -H "Authorization: Bearer " ``` --- ## 🔑 Authentication ### For the Dashboard (Users) Register and login at http://localhost:3000 ### For Applications (OTLP) Applications send telemetry to the **otel-collector** (ports 4317/4318) which doesn't require auth by default. ### For the API (Agents) Use the `AGENT_KEY` environment variable: ```bash # Default key (change in production!) AGENT_KEY=ophion-secret-agent-key-2024 # Custom key export AGENT_KEY=my-super-secret-key docker compose up -d ``` --- ## 📁 Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `AGENT_KEY` | `ophion-secret-agent-key-2024` | Key for agent authentication | | `JWT_SECRET` | `ophion-jwt-secret-...` | Secret for JWT tokens | | `DATABASE_URL` | `postgres://...` | PostgreSQL connection | | `REDIS_URL` | `redis://redis:6379` | Redis connection | Create a `.env` file in the project root: ```env AGENT_KEY=my-production-key-here JWT_SECRET=my-production-jwt-secret ``` --- ## 🐳 Docker Network Your instrumented applications need to be on the same network as Ophion: ```yaml # Your app's docker-compose.yml networks: ophion-network: external: true ``` Or connect manually: ```bash docker network connect ophion-network my-container ``` --- ## 🔍 Troubleshooting ### No traces appearing? 1. Check collector logs: ```bash docker logs ophion-otel-collector ``` 2. Verify network connectivity: ```bash docker exec my-container curl http://ophion-otel-collector:4318/v1/traces ``` 3. Check environment variables are set: ```bash docker exec my-container env | grep OTEL ``` ### Container can't reach collector? Make sure your container is on the `ophion-network`: ```bash docker network connect ophion-network my-container ``` ### Server returns 401? Check `AGENT_KEY` matches in server and agent: ```bash docker exec ophion-server env | grep AGENT_KEY docker exec ophion-agent env | grep OPHION_API_KEY ``` --- ## 📚 Next Steps - Read [MANUAL_COMPLETO.md](./MANUAL_COMPLETO.md) for advanced configuration - Set up alerts at `/alerts` in the dashboard - Configure AI insights with your OpenAI key - Deploy to production with proper secrets --- ## 🆘 Support - Issues: https://github.com/bigtux/ophion/issues - Docs: https://ophion.io/docs