OnLogs
OnLogs copied to clipboard
Lightweight docker logs web viewer
OnLogs - Lightweight docker logs web viewer
Benefits
- π Simple and secure way to access logs of any Docker containers without server/SSH connection
- ποΈ Built with Golang & Svelte.js to extract maximum performance and keep the image and RAM footprint as small as possible. Logs storage implemented on top of lightweight LevelDB
- π§Έ Installation is easy as docker runs command/compose snippet. HTTP port exposed and could be routed from Nginx/Traefik/Directly
- π± Get every service realtime logs stream with 1 click
- π± Check logs from your smartphone (insane, but we know it happens that you need it)
- π§Ύ Open-source, commercial-friendly MIT license
- πΎ Small size of Docker image (~ 13 MB)
- π₯ Share access to logs with team members, revoke any time
Features
- π» One host can be used to view logs from all other hosts in case you are running Cluster
- π Share log messages to colleagues via link
- π½ Clear original docker logs to keep your storage size.
- π Error/Info/Debug Statistics
- π Search through logs (configurable case sensitivity)
- π View parameters (parsing JSON, showing local/UTC time for every logline)
- π΄ Realtime logs updating
Roadmap
- π Grouping hosts
- π· Search and filter by tags (log status, time)
- πPlugins and internal ability to notify about some event (e.g. notify when Error happens)
- π Improved statistics
Hello world & usage
Docker Compose example with traefik
onlogs:
image: devforth/onlogs
restart: always
environment:
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=<any password>
- PORT=8798
# - ONLOGS_PATH_PREFIX=/onlogs if want to use with path prefix
labels:
- "traefik.enable=true"
- "traefik.http.routers.onlogs.rule=Host(`<your host>`)" # if using on subdomain, e.g. https://onlogs.yourdomain.com
# - traefik.http.routers.onlogs.rule=PathPrefix(`/onlogs`) # if want to use with a path prefix, e.g. https://yourdomain.com/onlogs
- "traefik.http.services.onlogs.loadbalancer.server.port=8798"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/containers:/var/lib/docker/containers # if you want to delete duplicating logs from docker
- /etc/hostname:/etc/hostname
- onlogs-volume:/leveldb
volumes:
onlogs-volume:
Docker Run example with traefik
docker run --restart always -e ADMIN_USERNAME=admin -e PASSWORD=<any password> -e PORT=8798 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /var/lib/docker/containers:/var/lib/docker/containers \
-v /etc/hostname:/etc/hostname \
-v onlogs-volume:/leveldb \
--label traefik.enable=true \
--label traefik.http.routers.onlogs.rule=Host\(\`<your host>\`\) \
--label traefik.http.services.onlogs.loadbalancer.server.port=8798 devforth/onlogs
Once done, just go to
Available Environment Options:
Environment Variable | Description | Defaults | Required |
---|---|---|---|
ADMIN_USERNAME | Username for initial user | admin |
if AGENT=false |
ADMIN_PASSWORD | Password for initial user | if AGENT=false |
|
PORT | Port to listen on | 2874 |
if AGENT=false |
JWT_SECRET | Secret for JWT tokens for users | Generates randomly | - |
ONLOGS_PATH_PREFIX | Base path if you using OnLogs not on subdomain | only if using on path prefix | |
AGENT | Toggles agent mode. If enabled, there will be no web interface available, and all logs will be sent and stored on HOST | false |
- |
HOST | Url to OnLogs host from protocol to domain name. | if AGENT=true |
|
ONLOGS_TOKEN | Token that will use an agent to authorize and connect to HOST | Generates with OnLogs interface | if AGENT=true |