ClickHouse Log Aggregation
ClickHouse Log Aggregation & Investigation
Architecture Overview
Log Pipeline:Pipeline (Migrated to Vector - Feb 2026):
- Terra (server):
systemd logsJournald +dockerDockercontainer logscontainers →fluent-bitVector opnSenseLuna (backup server): Journald → Vector
ClickHouse Access
- URL: https://logs.flora.family
- User: flobot
- Database: default
- Table: system_logs
Table Schema
CREATE TABLE default.system_logs (
timestamp DateTime64(3),
host String,
unit String,
message String,
priority Int8,
log_id String,
embedding Array(Float32), -- 768-dim vectors
source String DEFAULT 'systemd'
)
ENGINE = ReplacingMergeTree
ORDER BY log_id
Log Sources
TerraVector SystemMigration &(Feb Docker2026)
Volume:Retired Fluent-Bit:~100-200Entirelogs/minlab(aftermovedfiltering)to Vector for better performance and easier Ansible management.Filtering:EST Alignment:WARNAlllevel,timestampsnoacross[GIN]thelogspipeline(Ollamaareframework)now surgically aligned to Eastern Time.Embedded:Container Naming:YesDocker logs now show friendly names (e.g.,ollama,bazarr) instead of raw hex IDs.
opnSenseNoise FirewallManagement & Filtering
preventPort 1514 (filterlog):Ollama/GIN:Packet-levelSampledrules,1:100sampledto10%wear.source='firewall'NotSanoid:embeddedRunning(CSVinformat)
--quiet mode on Terra and Luna.
Recursive source='firewall_system'log-brain from logging its own status updates to ClickHouse.
embeddings_worker.py Embedding Pipeline
Performance (Feb 16)2026):
Speed:Coverage:10ms/embeddingReached(250100%invectorization2.5s)
Coverage:
Vector Search Example
# Get embedding from Ollama
curl -X POST https://ollama.flora.family/api/embeddings \
-H 'Content-Type: application/json' \
-d '{"model":"nomic-embed-text","prompt":"network issues"}'
# Search ClickHouse by semantic similarity
curl -u flobot:password 'https://logs.flora.family/?query=SELECT timestamp, message, cosineDistance(embedding, [array,of,floats]) as score FROM system_logs WHERE length(embedding)>0 ORDER BY score ASC LIMIT 10'
Key Technologies
Key Learnings
!os.date()Future Work
- Add luna backup server logs