3.7 KiB
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'