Quick Start
Get infrasagent sending telemetry to InfraSage in under five minutes.
1. Download the Binary
# macOS (Apple Silicon)
curl -Lo infrasagent \
https://github.com/infrasage/infrasagent/releases/latest/download/infrasagent-darwin-arm64
chmod +x infrasagent
# macOS (Intel)
curl -Lo infrasagent \
https://github.com/infrasage/infrasagent/releases/latest/download/infrasagent-darwin-amd64
chmod +x infrasagent
# Linux (amd64)
curl -Lo infrasagent \
https://github.com/infrasage/infrasagent/releases/latest/download/infrasagent-linux-amd64
chmod +x infrasagent
# Linux (arm64)
curl -Lo infrasagent \
https://github.com/infrasage/infrasagent/releases/latest/download/infrasagent-linux-arm64
chmod +x infrasagent
Or pull the Docker image:
docker pull ghcr.io/infrasage/infrasagent:latest
2. Create a Config File
Save this as agent.yaml. Replace <YOUR_API_KEY> with the key from console.infrasage.dev → Settings → API Keys.
agent:
name: "${HOSTNAME}-agent"
mode: agent
api:
listen: "0.0.0.0:8080"
sources:
otlp_in:
type: otlp
grpc:
listen: "0.0.0.0:4317"
http:
listen: "0.0.0.0:4318"
host_metrics:
type: hostmetrics
collection_interval: 15s
scrapers: [cpu, memory, disk, network, load]
processors:
batch_main:
type: batch
timeout: 5s
max_size: 10000
sources: [otlp_in, host_metrics]
sinks:
infrasage:
type: otlp
endpoint: "https://api.infrasage.dev"
protocol: http
auth_header: "Bearer <YOUR_API_KEY>"
sources: [batch_main]
3. Start the Agent
./infrasagent -config agent.yaml
Expected output:
{"level":"info","msg":"infrasagent starting","version":"1.0.0","config":"agent.yaml"}
{"level":"info","msg":"otlp grpc listening","addr":"0.0.0.0:4317"}
{"level":"info","msg":"otlp http listening","addr":"0.0.0.0:4318"}
{"level":"info","msg":"pipeline started","sources":2,"processors":1,"sinks":1}
{"level":"info","msg":"infrasagent ready","mode":"agent","api":"0.0.0.0:8080"}
4. Send Test Telemetry
The agent is now accepting OTLP on ports 4317 (gRPC) and 4318 (HTTP). Any OTLP-instrumented application will start sending automatically. To verify manually:
# Send a test log
curl -X POST http://localhost:4318/v1/logs \
-H "Content-Type: application/json" \
-d '{
"resourceLogs": [{
"resource": {
"attributes": [{"key":"service.name","value":{"stringValue":"my-service"}}]
},
"scopeLogs": [{
"logRecords": [{
"timeUnixNano": "'$(date +%s%N)'",
"severityNumber": 9,
"body": {"stringValue": "hello from infrasagent"}
}]
}]
}]
}'
5. Verify
Check the agent's self-observability endpoint:
curl http://localhost:8080/metrics | grep records_exported
infrasage_agent_records_exported_total{signal="logs",sink="infrasage"} 1
infrasage_agent_records_exported_total{signal="metrics",sink="infrasage"} 48
Check the health endpoint:
curl http://localhost:8080/health
# ok
Your telemetry is now flowing into InfraSage. Open console.infrasage.dev to explore it.
Next Steps
- Configuration Reference — full YAML schema
- Sources — what data to collect
- Processors — enrich, filter, sample
- Sinks — where to send it
- Deployment — Kubernetes, Docker, systemd