Skip to main content

Dashboard

The LogClaw Dashboard is a Next.js web application providing a complete operational UI for the LogClaw platform.

Features

Log Ingestion

Drag-and-drop JSON/NDJSON file upload. Automatically converts to OTLP format and sends via the OTel Collector proxy.

Pipeline Monitoring

Real-time throughput visualization: Ingest → Stream → Process → Index → Detect → ML → Orchestrate → Ticketing.

Incident Management

View, acknowledge, resolve, and escalate incidents. Configure ticketing platforms and routing rules.

Anomaly Visualization

Time-series charts showing anomaly scores, affected services, error rate trends, and blast radius.

Architecture

The Dashboard acts as a proxy gateway to all backend services. Each backend gets its own API route:
Proxy RouteBackend ServiceEnvironment Variable
/api/otel/*OTel CollectorOTEL_COLLECTOR_ENDPOINT
/api/bridge/*BridgeBRIDGE_ENDPOINT
/api/opensearch/*OpenSearchOPENSEARCH_ENDPOINT
/api/ticketing/*Ticketing AgentTICKETING_ENDPOINT
/api/airflow/*AirflowAIRFLOW_ENDPOINT
/api/feast/*FeastFEAST_ENDPOINT
/api/agent/*Infrastructure AgentAGENT_ENDPOINT

Environment Variables

VariableRequiredDefaultDescription
OTEL_COLLECTOR_ENDPOINTYeshttp://localhost:4318OTel Collector HTTP endpoint
BRIDGE_ENDPOINTYeshttp://localhost:8080Bridge service endpoint
OPENSEARCH_ENDPOINTYeshttp://localhost:9200OpenSearch cluster URL
OPENSEARCH_USERNoOpenSearch Basic Auth username
OPENSEARCH_PASSWORDNoOpenSearch Basic Auth password
TICKETING_ENDPOINTNohttp://localhost:18081Ticketing Agent endpoint
AIRFLOW_ENDPOINTNohttp://localhost:28080Airflow webserver endpoint
FEAST_ENDPOINTNohttp://localhost:6567Feast feature server endpoint
AGENT_ENDPOINTNohttp://localhost:8080Infrastructure Agent endpoint

Log File Upload

The Dashboard supports drag-and-drop log file upload:
  1. Drag a JSON or NDJSON file onto the upload area
  2. The Dashboard parses each log entry
  3. Converts entries to OTLP format using the built-in logsToOtlp() converter
  4. Sends the OTLP payload to /api/otel/v1/logs (proxied to OTel Collector)
Supported formats:
FormatDescriptionExample
JSONArray of log objects[{"message": "...", "level": "ERROR"}]
NDJSONOne JSON object per line{"message": "..."}\n{"message": "..."}
Recognized fields:
FieldMapping
message or msg or bodyOTLP body.stringValue
level or severityOTLP severityText
timestamp or time or @timestampOTLP timeUnixNano
service or service.nameOTLP resource attribute
trace_id or traceIdOTLP traceId
span_id or spanIdOTLP spanId

Pipeline Flow

The pipeline monitoring view shows real-time throughput across two rows: Data Pipeline:
  • Ingest (OTel Collector) → Stream (Kafka) → Process (Bridge/Flink) → Index (OpenSearch)
AI & Operations:
  • Detect (Anomaly Engine) → ML (Feast/KServe) → Orchestrate (Airflow) → Ticketing (AI Agent)
Each stage shows:
  • Current count (formatted with K/M suffixes)
  • Data size where applicable
  • Health status indicator (green/amber/red with animated ping)

Ticketing Configuration

The Dashboard provides a UI for configuring ticketing platforms:

Supported Platforms

PlatformRequired Fields
PagerDutyroutingKey
JirabaseUrl, apiToken, userEmail
ServiceNowinstanceUrl, username, password
OpsGenieapiKey
SlackwebhookUrl

Configuration Endpoints

All configuration changes are persisted via the Ticketing Agent’s runtime config API:
# Update PagerDuty settings
PATCH /api/ticketing/api/v1/config/platforms
{
  "pagerduty": {
    "enabled": true,
    "routingKey": "your-pagerduty-routing-key"
  }
}

# Update severity routing
PATCH /api/ticketing/api/v1/config/routing
{
  "critical": ["pagerduty", "slack"],
  "high": ["jira", "slack"],
  "medium": ["jira"],
  "low": ["slack"]
}

Deployment

Helm Values

logclaw-dashboard:
  image:
    repository: "ghcr.io/logclaw/dashboard"
    tag: "latest"
  service:
    type: ClusterIP    # ClusterIP or LoadBalancer
    port: 3000

Docker

cd apps/dashboard
docker build -t logclaw/dashboard:latest .
docker run -p 3000:3000 \
  -e OTEL_COLLECTOR_ENDPOINT=http://otel:4318 \
  -e BRIDGE_ENDPOINT=http://bridge:8080 \
  -e OPENSEARCH_ENDPOINT=http://opensearch:9200 \
  logclaw/dashboard:latest