Centralizovano Logovanje sa Syslog

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 →
Scroll to Top