Skip to main content

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.devSettings → 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