Svaki server, svaka aplikacija, svaki mrežni uređaj konstantno proizvodi logove — zapise o svemu što se dešava u sistemu. Ko se prijavio, koji fajl je otvoren, koja greška se desila, koji servis je pao i kada. Ove informacije su neprocenjive — ali samo ako znate gde da ih tražite i ako su dostupne kada vam trebaju.
Problem nastaje kada imate više servera, aplikacija i uređaja, a logovi su razbacani po svakom od njih posebno. Kada se incident desi, gubite vreme pretražujući logove na svakom serveru ponaosob, ručno korelišući događaje koji su se desili u različitim sistemima u isto vreme.
Centralizovano logovanje rešava ovaj problem — svi logovi sa svih sistema dolaze na jedno mesto, pretraživi su i dostupni u realnom vremenu.
Šta je Syslog?
Syslog je standard za slanje poruka o događajima u IT sistemima. Razvijen još 1980-ih za BSD Unix sisteme, danas je univerzalni standard koji podržavaju praktično svi operativni sistemi, mrežni uređaji (ruteri, svičevi, firewalli), aplikacije i servisi.
Syslog poruka sadrži:
- Facility — kategorija koja je generisala poruku (kernel, mail, auth, daemon…)
- Severity — ozbiljnost poruke (Emergency, Alert, Critical, Error, Warning, Notice, Info, Debug)
- Timestamp — vreme kada se događaj desio
- Hostname — ime sistema koji je poslao poruku
- Poruka — tekst događaja
Severity nivoi (od najkritičnijeg ka najmanje kritičnom):
| Nivo | Vrednost | Značenje |
|---|---|---|
| Emergency | 0 | Sistem nije upotrebljiv |
| Alert | 1 | Potrebna hitna akcija |
| Critical | 2 | Kritično stanje |
| Error | 3 | Greška |
| Warning | 4 | Upozorenje |
| Notice | 5 | Normalan ali značajan događaj |
| Info | 6 | Informativna poruka |
| Debug | 7 | Debug poruke |
Zašto Centralizovati Logove?
Bezbednost i Compliance
Centralizovani logovi su ključni za bezbednost. Napadač koji kompromituje sistem često briše logove na tom sistemu da sakrije tragove. Ako se logovi šalju na centralni server u realnom vremenu, čak i ako napadač obriše lokalne logove, centralni server već ima kopiju.
Za firme koje moraju da ispune regulatorne zahteve (ISO 27001, GDPR, PCI DSS), čuvanje logova nije opciono — to je obaveza. Centralizovano logovanje olakšava compliance i audit.
Brže Rešavanje Problema
Kada aplikacija ne radi, prvu stvar koju radite je pregled logova. Ako su logovi na jednom mestu i pretraživi, dijagnoza traje minuta. Ako morate da se prijavljujete na svaki server posebno, čitate fajlove u terminalu i ručno tražite korelacije — traje satima.
Korelacija Događaja
Napadi i kompleksni problemi retko zahvataju samo jedan sistem. Centralizovani logovi vam omogućavaju da vidite šta se dešavalo na svim sistemima u isto vreme — ko se prijavio na koji server, koji servisi su bili pod opterećenjem, koje greške su se pojavile.
Dugoročno Čuvanje
Lokalni logovi se često rotiraju i brišu nakon nekoliko dana ili nedelja zbog ograničenog disk prostora. Centralni log server može čuvati logove mesecima ili godinama, što je važno za forenzičku analizu i compliance.
Moderne Opcije za Centralizovano Logovanje
ELK Stack (Elasticsearch, Logstash, Kibana)
ELK Stack je najpopularnije rešenje za centralizovano logovanje u enterprise okruženjima.
Elasticsearch — distribuirana baza podataka optimizovana za pretragu. Čuva i indeksira logove.
Logstash — pipeline za obradu logova. Prima logove iz različitih izvora, parsuje ih, transformiše i šalje u Elasticsearch.
Kibana — web interfejs za pretragu, vizualizaciju i analizu logova.
Novije verzije ELK Stack-a uključuju i Beats — lagane agente koji se instaliraju na serverima i šalju logove u Logstash ili direktno u Elasticsearch:
- Filebeat — čita log fajlove
- Metricbeat — sistem metrike
- Auditbeat — audit logovi
Prednosti: Izuzetno moćan, skalabilan, bogat ekosistem Mane: Zahteva značajne resurse (minimum 8GB RAM za produkciju), kompleksnija konfiguracija
Grafana Loki
Loki je sistem za logovanje razvijen od strane Grafane, dizajniran da bude lakši i jeftiniji za operacije od ELK Stack-a.
Za razliku od Elasticsearch-a koji indeksira kompletan sadržaj logova, Loki indeksira samo metapodatke (labels) — slično kao što Prometheus radi sa metrikama. Ovo značajno smanjuje potrebu za disk prostorom i memorijom.
Ako već koristite Grafana za monitoring (Prometheus + Grafana), dodavanje Lokija je prirodan sledeći korak — sve vidite na istom mestu.
# docker-compose.yml za Loki stack
services:
loki:
image: grafana/loki:latest
ports:
- "3100:3100"
volumes:
- loki_data:/loki
promtail:
image: grafana/promtail:latest
volumes:
- /var/log:/var/log:ro
- ./promtail-config.yml:/etc/promtail/config.yml
depends_on:
- loki
Prednosti: Lagan, jeftin, odlična integracija sa Grafanom Mane: Manje moćan za kompleksne pretrage od Elasticsearch-a
Graylog
Graylog je open-source alternativa ELK Stack-u, dizajnirana specifično za upravljanje logovima.
Koristi Elasticsearch kao backend za čuvanje podataka, ali pruža sopstveni interfejs koji je intuitivniji za svakodnevno korišćenje od Kibane. Posebno je popularan u manjim i srednjim organizacijama.
Prednosti: Lakši za korišćenje od ELK-a, dobra open-source verzija Mane: I dalje zahteva Elasticsearch, što znači značajne resurse
Syslog-ng i rsyslog
Za jednostavnije potrebe, syslog-ng i rsyslog su alati koji postoje decenijama i odlično rade posao centralnog syslog servera.
# Konfiguracija rsyslog klijenta — šalje logove na centralni server
# /etc/rsyslog.conf
*.* @192.168.1.100:514 # UDP
*.* @@192.168.1.100:514 # TCP (pouzdanije)
# Konfiguracija rsyslog servera
# /etc/rsyslog.conf
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
# Čuvaj logove organizovane po hostu
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
Prednosti: Jednostavan, minimalni resursi, stabilan Mane: Bez web interfejsa, pretraga je komplikovana
Praktična Implementacija — Loki + Grafana
Za manja preduzeća i timove koji već koriste Grafana monitoring, preporučujemo Loki kao najjednostavnije rešenje.
Instalacija na Hetzner Serveru
mkdir -p /opt/loki
cd /opt/loki
loki-config.yml:
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
schema_config:
configs:
- from: 2024-01-01
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /loki/boltdb-shipper-active
cache_location: /loki/boltdb-shipper-cache
shared_store: filesystem
filesystem:
directory: /loki/chunks
limits_config:
retention_period: 30d
promtail-config.yml (agent na svakom serveru):
server:
http_listen_port: 9080
positions:
filename: /tmp/positions.yaml
clients:
- url: http://IP_LOKI_SERVERA:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
host: ime-servera
__path__: /var/log/*.log
- job_name: nginx
static_configs:
- targets:
- localhost
labels:
job: nginx
host: ime-servera
__path__: /var/log/nginx/*.log
Pokretanje
docker-compose up -d loki
# Na svakom monitorizovanom serveru:
docker run -d \
--name promtail \
-v /var/log:/var/log:ro \
-v /opt/promtail-config.yml:/etc/promtail/config.yml \
grafana/promtail:latest \
-config.file=/etc/promtail/config.yml
Pretraga Logova u Grafani
Nakon podešavanja, u Grafani dodajte Loki kao data source i koristite Explore sekciju za pretragu:
# Sve greške sa određenog hosta
{host="web-server"} |= "error"
# SSH login pokušaji
{job="varlogs"} |= "sshd" |= "Failed password"
# Nginx 500 greške u poslednjih sat vremena
{job="nginx"} |= "500"
Šta Logove Treba Pratiti?
Nije sve jednako važno. Fokusirajte se na:
Bezbednost:
- Neuspeli SSH login pokušaji
- Sudo komande
- Promene fajlova u /etc/
- Neobični network konekcije
Stabilnost sistema:
- Out of Memory (OOM) killer aktivnosti
- Disk greške
- Kernel panic poruke
- Servis restartovi
Aplikacioni logovi:
- HTTP 5xx greške
- Database connection greške
- Slow query upozorenja
- Exception stack trace-ovi
Zaključak
Centralizovano logovanje nije luksuz rezervisan za velike korporacije — to je osnova odgovornog IT upravljanja za svaku firmu koja ozbiljno shvata sigurnost i dostupnost svojih sistema.
Kombinacija Prometheus + Grafana + Loki danas je zlatni standard za monitoring i logovanje moderne infrastrukture — open-source, skalabilan i relativno jednostavan za implementaciju.
DevTet implementira i upravlja kompletnim monitoring i logging stack-om kao deo naših upravljanih IT usluga. Ako želite da vaša infrastruktura bude nadgledana profesionalno, kontaktirajte nas.
DevTet pruža upravljane IT usluge, monitoring i cloud infrastrukturu za mala i srednja preduzeća u Srbiji. Saznajte više.
DevTet Monitoring
Centralizovano logovanje — postavljamo mi
Kompletni monitoring i logging stack (Prometheus, Grafana, Graylog) za vašu infrastrukturu. Uključuje alarme i mesečno održavanje. Od 99€/mes.
Pogledaj Monitoring uslugu →