Files
EonaCat.LogStack/EonaCat.LogStack.Status/README.md
EonaCat 977374ce02 Added EonaCat.LogStack.Status
Updated EonaCat.LogStack.LogClient to support EonaCat.LogStack.Status
2026-03-12 21:15:33 +01:00

3.1 KiB

EonaCat.LogStack.Status 🟢

A self-hosted, application monitoring platform.

Features

Category Details
TCP Monitor Port connectivity checks
UDP Monitor UDP reachability checks
HTTP/HTTPS Monitor Full HTTP status monitoring
App (Local) Monitor local processes by name
App (Remote) Remote TCP-based app health
Certificate Manager Track SSL certs, expiry, issuer
Certificate Checker Auto-refresh cert details hourly
Log Aggregator Ingest logs from any app via HTTP
Log Viewer Search, filter, paginate log stream
Dashboard Live status overview with uptime bars
Admin Panel Full CRUD for all resources
Visibility Control Per-monitor public/private toggle
REST API Log ingestion + status endpoints

Quick Start

Prerequisites

Run

cd EonaCat.LogStack.Status
dotnet run

Open: http://localhost:8000

Default Admin Password

adminEonaCatChange this immediately in Settings!

Log Ingestion

Send logs from any app:

# Single log
curl -X POST http://localhost:8000/api/logs/ingest \
  -H "Content-Type: application/json" \
  -d '{"source":"my-app","level":"error","message":"Something broke"}'

# Batch
curl -X POST http://localhost:8000/api/logs/batch \
  -H "Content-Type: application/json" \
  -d '[{"source":"app","level":"info","message":"Started"},{"source":"app","level":"warn","message":"High memory"}]'

EonaCat.LogStack HTTP Flow

var logger = new LogBuilder().WriteToHttp("http://localhost:8000/api/logs/eonacat").Build();

Serilog (.NET)

// Install: Serilog.Sinks.Http
Log.Logger = new LoggerConfiguration()
    .WriteTo.Http("http://localhost:8000/api/logs/serilog")
    .CreateLogger();

Python

import requests
requests.post("http://localhost:8000/api/logs/ingest", json={
    "source": "my-python-app", "level": "info", "message": "Hello"
})

API Endpoints

Method Path Description
GET /api/status/summary Dashboard stats
GET /api/monitors All public monitors
GET /api/monitors/{id}/check Trigger check
POST /api/logs/ingest Ingest single log
POST /api/logs/batch Ingest log array
POST /api/logs/eonacat EonaCat.LogStack HTTP Flow
POST /api/logs/serilog Serilog HTTP sink
GET /api/logs Query logs (admin)

Visibility Model

  • Public monitors are visible to everyone
  • Private monitors are visible to admins only
  • Log viewer is admin-only
  • Uptime % can be toggled public/private in Settings
  • Certificates are always visible (toggle per cert coming soon)

Production Deployment

dotnet publish -c Release -o ./publish
# Run with:
./publish/EonaCat.LogStack.Status

Or with Docker:

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY ./publish .
EXPOSE 8080
ENTRYPOINT ["dotnet", "EonaCat.LogStack.Status.dll"]