1v4mp1r3/light-log-aggregator
GitHub: 1v4mp1r3/light-log-aggregator
Loglite 是一个用 Go 编写的轻量级日志聚合器,支持 HTTP 和 UDP syslog 日志接入、全文搜索、脱敏处理、保留策略和内置 Web UI。
Stars: 0 | Forks: 0
# Loglite
Loglite 是一个用 Go 编写的轻量级日志聚合器,专为自有服务设计。它支持接收 HTTP 和 UDP syslog 事件,在存储前对常见的敏感信息进行脱敏处理,在内存中对日志文本和标签进行索引,应用保留策略,提供查询 API,并内置了 Web UI。
该项目在不使用 Python 的情况下实现了 Notion 项目 **"Лёгкий Log Aggregator"**。
## 功能
- HTTP 日志接入:支持单个 JSON 事件、JSON 数组或 NDJSON。
- UDP syslog 接入,支持类 RFC3164 格式的解析。
- 每个事件均支持标签和字段。
- 支持对消息、标签、字段、级别和来源进行全文搜索。
- 查询过滤器支持 `level`、`label`、`since` 和 `limit`。
- 持久化前进行敏感信息脱敏。
- 采用仅追加(Append-only)的 JSONL 存储方式,并支持保留期清理。
- 内置 Web 查询 UI。
- Prometheus 文本格式的指标。
- 提供 Docker 镜像和带有日志生成功能的 docker-compose 演示。
## 运行
```
go run ./cmd/loglite --listen :8080 --syslog :5514 --store data/loglite.jsonl --retention 24h
```
打开:
```
http://localhost:8080
```
## 接入日志
HTTP:
```
curl.exe -X POST http://localhost:8080/api/logs `
-H "content-type: application/json" `
-d "{\"level\":\"error\",\"message\":\"login failed password=hunter2\",\"labels\":{\"service\":\"auth\",\"env\":\"dev\"}}"
```
Syslog:
```
"<13>Jun 21 10:11:12 dev-host sshd[42]: Failed password for root" | nc -u -w1 127.0.0.1 5514
```
## 搜索
```
curl.exe "http://localhost:8080/api/search?q=failed&label=service=auth&level=error&since=1h&limit=50"
```
## 指标
```
curl.exe http://localhost:8080/api/metrics
```
## Docker 演示
```
docker compose -f examples/docker-compose.yml up --build
```
compose 演示启动了 Loglite、一个 HTTP 日志生成器和一个 UDP syslog 生成器。
## 开发
```
go test ./...
go build -o bin/loglite.exe ./cmd/loglite
```
## 安全范围
Loglite 适用于来自您自有系统和经授权的实验室服务的日志。尽管在存储前已启用脱敏功能,但最佳实践依然是:避免将原始的生产环境敏感信息发送到任何日志流水线中。
## 项目结构
```
cmd/loglite CLI entry point
internal/model Log entry model
internal/redact Secret redaction
internal/store JSONL store and in-memory index
internal/syslog UDP syslog parser
internal/server HTTP API, metrics, and web UI
docs/ Architecture and demo notes
examples/ Docker Compose demo
```
标签:EVTX分析, Go, Ruby工具, 数据检索, 日志审计, 日志聚合, 日志脱敏, 时序数据库, 自定义请求头, 请求拦截, 运维工具