SourcesSource TypesGeneric Sources

Generic Log Sources

Generic log sources allow you to send any source logs to RunReveal. Whether you have custom application logs, system metrics, or third-party data, RunReveal can ingest and analyze it. Choose from multiple ingestion methods including cloud storage solutions and direct webhook integration.

Setup Guides: For detailed setup instructions for each cloud storage source, see the links below, or use the instructions for setting up a generic webhook source to send logs to a webhook located on this page.

Ingest Methods

RunReveal offers the following ways to ingest Generic log sources:

If using an AWS S3 bucket use the following SNS topic ARN to send your bucket notifications.

arn:aws:sns:<REGION>:253602268883:runreveal_generic

Webhooks

Webhooks are a simple way to send data to RunReveal. Just make an HTTP POST request with your JSON data.

Setup

  1. Go to Sources in RunReveal
  2. Click the Webhook Generic Logs source tile
  3. Give it a name and click Connect Source to generic a unique webhook url and bearer token (if needed)
  4. Copy your webhook URL which you’ll use to send logs to as well as the bearer token you’ve set or generated (optional)

Testing with curl

Test your webhook with a simple curl command:

With Bearer Token (Recommended):

curl -X POST https://api.runreveal.com/sources/hook/YOUR_WEBHOOK_ID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "level": "INFO",
    "message": "User authentication successful",
    "user": "[email protected]",
    "ip": "192.168.1.100"
  }'

Without Bearer Token: Edit your webhook source and delete the token field, then:

curl -X POST https://api.runreveal.com/sources/hook/YOUR_WEBHOOK_ID \
  -H "Content-Type: application/json" \
  -d '{
    "level": "WARN",
    "message": "Authentication disabled",
    "service": "webhook-test"
  }'

Viewing Your Data

Webhook data appears in the logs table with sourceType = 'webhook'.

Go to the Explore tab and run:

SELECT * FROM logs 
WHERE sourceType = 'webhook' 
ORDER BY receivedAt DESC 
LIMIT 10

Example Log Data

You can send any JSON data you want. Here are some examples:

# User activity
curl -X POST https://api.runreveal.com/sources/hook/YOUR_WEBHOOK_ID \
  -H "Content-Type: application/json" \
  -d '{
    "user": "[email protected]",
    "action": "login",
    "ip": "192.168.1.100"
  }'
 
# Application error
curl -X POST https://api.runreveal.com/sources/hook/YOUR_WEBHOOK_ID \
  -H "Content-Type: application/json" \
  -d '{
    "level": "ERROR",
    "message": "Database connection failed",
    "service": "my-app",
    "error_code": "DB_CONN_ERROR"
  }'
 
# System status
curl -X POST https://api.runreveal.com/sources/hook/YOUR_WEBHOOK_ID \
  -H "Content-Type: application/json" \
  -d '{
    "status": "healthy",
    "cpu_usage": 45.2,
    "memory_usage": 67.8,
    "hostname": "web-server-01"
  }'

Querying Your Data

Since webhook data is stored as JSON, use JSONExtractString() to get specific fields from the rawLog column:

-- Find all error messages
SELECT receivedAt, 
       sourceType,
       JSONExtractString(rawLog, 'level') as level,
       JSONExtractString(rawLog, 'message') as message,
       JSONExtractString(rawLog, 'service') as service,
       JSONExtractString(rawLog, 'error_code') as error_code,
       rawLog
FROM logs 
WHERE sourceType = 'webhook' 
  AND JSONExtractString(rawLog, 'level') = 'ERROR'
ORDER BY receivedAt DESC 
LIMIT 5;
 
-- Find specific user actions
SELECT receivedAt, 
       sourceType,
       JSONExtractString(rawLog, 'user') as user,
       JSONExtractString(rawLog, 'action') as action,
       JSONExtractString(rawLog, 'ip') as ip,
       rawLog
FROM logs 
WHERE sourceType = 'webhook' 
  AND JSONExtractString(rawLog, 'user') = '[email protected]'
ORDER BY receivedAt DESC 
LIMIT 5;
 
-- Count events by level
SELECT 
  JSONExtractString(rawLog, 'level') as level,
  count() as count
FROM logs 
WHERE sourceType = 'webhook' 
GROUP BY level
ORDER BY count DESC;