Files
logwisp/doc/status.md

3.7 KiB

Status Monitoring

LogWisp provides comprehensive monitoring through status endpoints and operational logs.

Status Endpoints

Pipeline Status

# Standalone mode
curl http://localhost:8080/status

# Router mode
curl http://localhost:8080/pipelinename/status

Example response:

{
  "service": "LogWisp",
  "version": "1.0.0",
  "server": {
    "type": "http",
    "port": 8080,
    "active_clients": 5,
    "buffer_size": 1000,
    "uptime_seconds": 3600
  },
  "sources": [{
    "type": "directory",
    "total_entries": 152341,
    "dropped_entries": 12,
    "active_watchers": 3
  }],
  "filters": {
    "filter_count": 2,
    "total_processed": 152341,
    "total_passed": 48234
  },
  "sinks": [{
    "type": "http",
    "total_processed": 48234,
    "active_connections": 5
  }]
}

Key Metrics

Source Metrics

Metric Description Healthy Range
active_watchers Files being watched 1-1000
total_entries Entries processed Increasing
dropped_entries Buffer overflows < 1% of total

Sink Metrics

Metric Description Warning Signs
active_connections Current clients Near limit
total_processed Entries sent Should match filter output

Filter Metrics

Metric Description Notes
total_processed Entries checked All entries
total_passed Passed filters Check if too low/high

Operational Logging

Log Levels

[logging]
level = "info"  # debug, info, warn, error

Important Messages

Startup:

LogWisp starting version=1.0.0
Pipeline created successfully pipeline=app
HTTP server started port=8080

Connections:

HTTP client connected remote_addr=192.168.1.100 active_clients=6
TCP connection opened active_connections=3

Errors:

Failed to open file path=/var/log/app.log error=permission denied
Request rate limited ip=192.168.1.100

Health Checks

Basic Check

#!/bin/bash
if curl -s -f http://localhost:8080/status > /dev/null; then
    echo "Healthy"
else
    echo "Unhealthy"
    exit 1
fi

Advanced Check

#!/bin/bash
STATUS=$(curl -s http://localhost:8080/status)
DROPPED=$(echo "$STATUS" | jq '.sources[0].dropped_entries')
TOTAL=$(echo "$STATUS" | jq '.sources[0].total_entries')

if [ $((DROPPED * 100 / TOTAL)) -gt 5 ]; then
    echo "High drop rate"
    exit 1
fi

Docker

HEALTHCHECK --interval=30s --timeout=3s \
    CMD curl -f http://localhost:8080/status || exit 1

Integration

Prometheus Export

#!/bin/bash
STATUS=$(curl -s http://localhost:8080/status)

cat << EOF
# HELP logwisp_active_clients Active streaming clients
# TYPE logwisp_active_clients gauge
logwisp_active_clients $(echo "$STATUS" | jq '.server.active_clients')

# HELP logwisp_total_entries Total log entries
# TYPE logwisp_total_entries counter
logwisp_total_entries $(echo "$STATUS" | jq '.sources[0].total_entries')
EOF

Alerts

Alert Condition Severity
Service Down Status fails Critical
High Drops >10% dropped Warning
No Activity 0 entries/min Warning
Rate Limited >20% blocked Warning

Performance Monitoring

CPU Usage

top -p $(pgrep logwisp)

Memory Usage

ps aux | grep logwisp

Connections

ss -tan | grep :8080 | wc -l

Troubleshooting

Enable debug logging:

logwisp --log-level debug --log-output stderr

Check specific components:

curl -s http://localhost:8080/status | jq '.sources'
curl -s http://localhost:8080/status | jq '.filters'
curl -s http://localhost:8080/status | jq '.sinks'