gWebTail: tail -f v prehliadači pre tímy bez SSH prístupu
- Monitoring , Tools
- 16. júna 2025
Obsah
Známa situácia: na testovací server sa nasadí nový build a vývojár sa pýta „môžeš mi poslať log?“. Niekto so SSH prístupom sa prihlási, spustí tail -f, skopíruje kus do chatu — a o desať minút znova.
Dať SSH prístup na server všetkým nie je riešenie. Stavať celý logovací stack — ELK, Loki s Grafanou, Graylog — pre testovacie prostredie alebo malú on-prem inštaláciu je často zbytočne veľa. Ľudia v skutočnosti potrebujú niečo jednoduché: otvoriť prehliadač, vybrať log a sledovať, ako pribúda.
Presne to robí gWebTail.
Čo to je
gWebTail je malá Go aplikácia, ktorá poskytuje webovú stránku a cez WebSocket posiela do prehliadača nové riadky z log súborov — v podstate tail -f s rozhraním.

- Výber súboru — všetky súbory z nastaveného adresára sa zobrazia v rozbaľovacom zozname.
- Živé sledovanie — nové riadky sa objavia hneď po zápise; server predvolene kontroluje súbory každých 500 ms.
- Zvýrazňovanie — napíšte
warn:,ERRORalebo ID požiadavky a všetky výskyty sa zvýraznia. - Limit riadkov a auto-scroll — v prehliadači sa drží posledných N riadkov a zobrazenie sleduje koniec súboru, alebo auto-scroll vypnete a čítate v kľude.
- Start / Stop — pozastavenie prúdu, keď si potrebujete niečo pozrieť.
- Žiadne externé závislosti — HTML aj CSS sú súčasťou binárky. Žiadne CDN, nie je potrebný prístup na internet, takže funguje aj v uzavretých on-prem sieťach.
Poradí si aj so skrátením súboru: ak sa log skráti (napríklad logrotate s voľbou copytruncate), gWebTail zaznamená pokles veľkosti a pokračuje od nového obsahu.
Spustenie
Najjednoduchšie je použiť multi-arch Docker obraz (amd64 aj arm64):
docker run -d --name gwebtail \
-p 127.0.0.1:8080:8080 \
-v /var/log/myapp:/logs:ro \
docker.io/bsv9/gwebtail
Potom otvorte http://localhost:8080.
Pár detailov, ktoré ušetria čas:
- Adresár s logmi pripojte iba na čítanie (
:ro) — gWebTail potrebuje len čítať. - Kontajner beží pod neprivilegovaným používateľom (UID 10001). Logy musia byť preň čitateľné; veľa súborov v
/var/logmá práva640 root:adm, preto upravte práva pre adresár logov vašej aplikácie alebo nechajte aplikáciu zapisovať logy tam, kde sú čitateľné. - Zobrazujú sa iba súbory priamo v adresári, nie podadresáre. Pripojte presne ten adresár, ktorý chcete sprístupniť.
S Docker Compose:
services:
gwebtail:
image: docker.io/bsv9/gwebtail
container_name: gwebtail
ports:
- "127.0.0.1:8080:8080"
volumes:
- /var/log/myapp:/logs:ro
restart: unless-stopped
Alebo binárku zostavte a spustite priamo (Go 1.22+):
git clone https://github.com/bsv9/gwebtail.git
cd gwebtail
go build -o gwebtail
LOG_DIR=/var/log/myapp ./gwebtail -port 8080
Konfigurácia
| Premenná prostredia | Prepínač | Popis | Predvolene |
|---|---|---|---|
LOG_DIR |
-logdir |
Adresár s log súbormi | /logs |
| — | -port |
HTTP port | 8080 |
| — | -refreshrate |
Ako často sa kontrolujú zmeny súborov, ms | 500 |
| — | -buffersize |
Koľko bajtov sa načíta naraz; zároveň koľko z konca súboru sa zobrazí po jeho otvorení | 32768 |
Po spustení sledovania gWebTail najprv pošle koniec súboru (do -buffersize bajtov, orezaný na hranici riadku) a potom priebežne posiela nový obsah.
Bezpečnosť: držte ho v internej sieti
gWebTail nemá autentifikáciu a logy často obsahujú veci, ktoré by nemali opustiť tím: interné názvy serverov, ID používateľov, niekedy aj tokeny. Berte ho ako interný nástroj:
- Nevystavujte ho do internetu. Naviažte ho na localhost alebo interné rozhranie (
-p 127.0.0.1:8080:8080vyššie), prípadne obmedzte prístup firewallom. - Ak ho potrebuje viac ľudí, dajte pred neho reverse proxy s autentifikáciou — Nginx alebo Traefik s basic auth, alebo SSO cez oauth2-proxy. Nezabudnite preposielať hlavičky pre WebSocket na endpointe
/ws. - Spúšťajte ho v kontajneri len s pripojeným adresárom logov, iba na čítanie. Proces tak nevidí nič iné na hoste, nech sa stane čokoľvek.
Tip
V Nginx stačia pre WebSocket tri riadky v bloku location: proxy_http_version 1.1;, proxy_set_header Upgrade $http_upgrade; a proxy_set_header Connection "upgrade";.
Kedy ho použiť — a kedy nie
gWebTail sa hodí na:
- testovacie a staging servery, kde vývojári chcú sledovať svoje nasadenie;
- malé on-prem inštalácie u zákazníkov, kde nemôžete nasadiť logovací stack a sieť je izolovaná;
- sprístupnenie logov jednej aplikácie podpore alebo QA iba na čítanie;
- Raspberry Pi alebo domáci server, keď chcete vidieť, čo robia vaše služby.
Nie je náhradou centralizovaného logovania. Ak potrebujete vyhľadávanie v histórii za týždne, veľa serverov, retenčné pravidlá, dashboardy alebo alerting, použite Loki, Graylog alebo ELK — gWebTail ukazuje iba to, čo je práve teraz v súboroch.
Zhrnutie
- Jedna malá binárka alebo Docker obraz, bez závislostí, funguje offline.
tail -fv prehliadači so zvýrazňovaním, limitom riadkov a auto-scrollom.- Logy pripájajte iba na čítanie, držte ho v internej sieti a ak k nemu potrebuje prístup viac ľudí, dajte pred neho autentifikáciu.
Projekt je open source pod licenciou MIT: github.com/bsv9/gwebtail.
Uvažujete o poriadnom centralizovanom logovaní pre vašu infraštruktúru? Porozprávajme sa.