Přeskočit obsah

Vstupy LogMan.io Collector

Note

Tato kapitola se týká nastavení zdrojů logů sbíraných přes síť, syslog, soubory, databáze atd. Pro nastavení sběru událostí z různých zdrojů logů, viz podtéma Zdroje logů.

Síť

Sekce: input:TCP, input:Stream, input:UDP, input:Datagram

Tyto vstupy naslouchají na zadané adrese pomocí TCP, UDP nebo Unix Socket.

Tip

Logy by měly být shromažďovány přes protokol TCP. Pouze pokud to není možné, použijte protokol UDP.

Možnosti konfigurace pro naslouchání:

address:  # Zadejte IPv4, IPv6 nebo UNIX cestu k souboru pro naslouchání
output:  # Na který výstup odeslat příchozí události

Zde jsou možné formy address:

  • 8080 nebo *:8080: Naslouchejte na portu 8080 na všech dostupných síťových rozhraních na IPv4 a IPv6
  • 0.0.0.0:8080: Naslouchejte na portu 8080 na všech dostupných síťových rozhraních na IPv4
  • :::8080: Naslouchejte na portu 8080 na všech dostupných síťových rozhraních na IPv6
  • 1.2.3.4:8080: Naslouchejte na portu 8080 na konkrétním síťovém rozhraní (1.2.3.4) na IPv4
  • ::1:8080: Naslouchejte na portu 8080 na konkrétním síťovém rozhraní (::1) na IPv6
  • /tmp/unix.sock: Naslouchejte na UNIX socketu /tmp/unix.sock

Následující možnosti konfigurace jsou dostupné pouze pro input:Datagram:

max_packet_size:  # (volitelné) Zadejte maximální velikost paketů v bajtech (výchozí: 65536)
receiver_buffer_size:  # (volitelné) Omezte velikost vyrovnávací paměti přijímače v bajtech (výchozí: 0)

Warning

LogMan.io Collector běží uvnitř Docker kontejneru. Povolení propagace síťových portů musí být nastaveno takto:

docker-compose.yml
services:
  lmio-collector-tenant:
    network_mode: host

Note

TCP (Transmission Control Protocol) a UDP (User Datagram Protocol) jsou oba protokoly používané k odesílání dat přes síť.

TCP je Stream, protože poskytuje spolehlivé, uspořádané a kontrolované doručení datového proudu.

Naproti tomu UDP je datagram, který odesílá pakety nezávisle, což umožňuje rychlejší přenos, ale s menší spolehlivostí a bez záruky pořadí, podobně jako jednotlivé, nesouvisející zprávy.

Tip

Pro troubleshooting použijte tcpdump pro zachycení syrového síťového provozu a poté použijte Wireshark pro hlubší analýzu.

Příklad zachycení provozu na portu TCP/10008:

$ sudo tcpdump -i any tcp port 10008 -s 0 -w /tmp/capture.pcap -v

Až bude zachyceno dostatečné množství provozu, stiskněte Ctrl-C a shromážděte soubor /tmp/capture.pcap, který obsahuje zachycený provoz. Tento soubor může být otevřen ve Wiresharku.

Syslog

Sekce: input:TCPBSDSyslogRFC6587, input:TCPBSDSyslogNoFraming

Speciální případy vstupu TCP pro parsování SysLog přes TCP. Pro více informací viz RFC 6587 a RFC 3164, sekce 4.1.1

Možnosti konfigurace pro naslouchání na zadané cestě:

address:  # Zadejte IPv4, IPv6 nebo UNIX cestu k souboru pro naslouchání (např. 127.0.0.1:8888 nebo /data/mysocket)
output:  # Na který výstup odeslat příchozí události

Následující možnosti konfigurace jsou dostupné pouze pro input:TCPBSDSyslogRFC6587:

max_sane_msg_len:  # (volitelné) Maximální velikost v bajtech SysLog zprávy, která má být přijata (výchozí: 10000)

Následující možnosti konfigurace jsou dostupné pouze pro input:TCPBSDSyslogNoFraming:

buffer_size:  # (volitelné) Maximální velikost v bajtech SysLog zprávy, která má být přijata (výchozí: 64 * 1024)
variant:  # (volitelné) Varianta SysLog formátu příchozí zprávy, může být `auto`, `nopri` bez PRI čísla na začátku a `standard` s PRI (výchozí: auto)

Subprocess

Sekce: input:SubProcess

Vstup SubProcess spouští příkaz jako podproces sběrače LogMan.io, přičemž pravidelně kontroluje jeho výstup na stdout (řádky) a stderr.

Možnosti konfigurace zahrnují:

command:  # Zadejte příkaz, který má být spuštěn jako podproces (např. tail -f /data/tail.log)
output:  # Na který výstup odeslat příchozí události
line_len_limit:  # (volitelné) Limit délky jednoho přečteného řádku (výchozí: 1048576)
ok_return_codes:  # (volitelné) Které návratové kódy znamenají běžný stav příkazu (výchozí: 0)

Sledování souboru

Sekce: input:SmartFile

Smart File Input se používá pro sběr událostí z více souborů, jejichž obsah může být dynamicky změněn, nebo soubory mohou být odstraněny jiným procesem, podobně jako příkaz tail -f v shellu.

Smart File Input vytváří monitorovaný souborový objekt pro každou cestu k souboru, která je zadána v konfiguraci v možnosti path.

Monitorovaný soubor pravidelně kontroluje nové řádky v souboru, a pokud se objeví, řádek je přečten v bajtech a předán dál do pipeline, včetně meta informací, jako je název souboru a extrahované části cesty k souboru, viz sekce parametry extrakce.

Různé protokoly se používají pro čtení z různých formátů logových souborů:

Povinné možnosti konfigurace:

input:SmartFile:MyFile:
    path: |  # Cesty k souborům oddělené novými řádky
        /prvni/cesta/k/logum/*.log
        /druha/cesta/k/logum/*.log
        /dalsi/cesta/*s
    protocol: # Protokol, který má být použit pro čtení

Volitelné možnosti konfigurace:

recursive:  # Rekurzivní skenování zadaných cest (výchozí: True)
scan_period:  # Období skenování souborů v sekundách (výchozí: 3 sekundy)
preserve_newline:  # Zachovat nový řádek v výstupu (výchozí: False)
last_position_storage:  # Perzistentní úložiště pro aktuální pozice ve čtených souborech (výchozí: ./var/last_position_storage)

Tip

Při složitějším setupu, jako je extrakce logů ze sdílené složky Windows, můžete využít rsync pro synchronizaci logů ze sdílené složky do lokální složky na sběračském stroji. Potom Smart File Input čte logy z lokální složky.

Warning

Vnitřně je aktuální pozice v souboru uložena ve last position storage v proměnné pozice. Pokud je soubor last position storage smazán nebo není specifikován, všechny soubory jsou čteny znovu po restartu LogMan.io Collector, to znamená, že absence perzistence znamená resetování čtení při restartování.

Můžete konfigurovat cestu pro last position storage:

last_position_storage: "./var/last_position_storage"

Warning

Pokud je velikost souboru menší než předchozí zapamatovaná velikost souboru, soubor je znovu čten a zaslán do pipeline rozdělený na řádky.

Cesty k souborům

Globy cest k souborům jsou odděleny novými řádky. Mohou obsahovat zástupné znaky (např. *, ** atd.).

path: |
    /prvni/cesta/*.log
    /druha/cesta/*.log
    /dalsi/cesta/*

Ve výchozím nastavení jsou soubory čteny rekurzivně. Rekurzivní čtení můžete zakázat pomocí:

recursive: False

Protokol řádků

protocol: line
line/C_separator:  # (volitelné) Znak používaný jako oddělovač řádků. Výchozí: '\n'.

Protokol řádků se používá pro čtení zpráv z řádkově orientovaných logových souborů.

XML protokol

protocol: xml
tag_separator: '</msg>'  # (povinné) Tag pro oddělovač.

XML protokol se používá pro čtení zpráv z XML-orientovaných logových souborů. Parametr tag_separator musí být zahrnut v konfiguraci.

Example

Příklad XML logového souboru:

/xml-logs/log.xml
...
<msg time='2024-04-16T05:47:39.814+02:00' org_id='orgid'>
    <txt>Log message 1</txt>
</msg>
<msg time='2024-04-16T05:47:42.814+02:00' org_id='orgid'>
    <txt>Log message 2</txt>
</msg>
<msg time='2024-04-16T05:47:43.018+02:00' org_id='orgid'>
    <txt>Log message 3</txt>
</msg>
...

Konfigurační příklad:

input:SmartFile:Alert:
    path: /xml-logs/*.xml
    protocol: xml
    tag_separator: "</msg>"

W3C Extended Log File Protocol

protocol: w3c_extended

W3C Extended Log File Protocol se používá pro sběr událostí z logových souborů ve formátu W3C Extended Log File Format a jejich serializaci do formátu JSON.

Příklad sběru událostí z Microsoft Exchange Server

Příklad konfigurace LogMan.io Collector:

input:SmartFile:MSExchange:
    path: /MicrosoftExchangeServer/*.log
    protocol: w3c_extended
    extract_source: file_path
    extract_regex: ^(?P<file_path>.*)$

Příklad obsahu logového souboru:

/MicrosoftExchangeServer/DNSLOG.log
#Software: Microsoft Exchange Server
#Version: 15.02.1544.004
#Log-type: DNS log
#Date: 2024-04-14T00:02:48.540Z
#Fields: Timestamp,EventId,RequestId,Data
2024-04-14T00:02:38.254Z,,9666704,"SendToServer 122.120.99.11(1), AAAA exchange.bradavice.cz, (query id:46955)"
2024-04-14T00:02:38.254Z,,7204389,"SendToServer 122.120.99.11(1), AAAA exchange.bradavice.cz, (query id:11737)"
2024-04-14T00:02:38.254Z,,43150675,"Send completed. Error=Success; Details=id=46955; query=AAAA exchange.bradavice.cz; retryCount=0"
...

W3C DHCP Server Format

protocol: w3c_dhcp

W3C DHCP protokol se používá pro sběr událostí z logových souborů DHCP serveru. Je velmi podobný W3C Extended Log File Format s rozdílem v hlavičce logového souboru.

Tabulka identifikace událostí W3C DHCP
Event ID Význam
00 Log byl spuštěn.
01 Log byl zastaven.
02 Log byl dočasně pozastaven kvůli nízkému volnému místu na disku.
10 Klientovi byla přidělena nová IP adresa.
11 Klient obnovil pronájem.
12 Klient uvolnil pronájem.
13 Na síti byla nalezena používaná IP adresa.
14 Požadavek na pronájem nemohl být splněn, protože pool adres v rozsahu byl vyčerpán.
15 Pronájem byl odmítnut.
16 Pronájem byl smazán.
17 Pronájem vypršel a DNS záznamy pro vypršené pronájmy nebyly smazány.
18 Pronájem vypršel a DNS záznamy byly smazány.
20 BOOTP adresa byla přidělena klientovi.
21 Dynamická BOOTP adresa byla přidělena klientovi.
22 Požadavek na BOOTP nemohl být splněn, protože pool adres pro BOOTP v rozsahu byl vyčerpán.
23 BOOTP IP adresa byla smazána po ověření, že není používána.
24 Začátek operace čištění IP adres.
25 Statistika operace čištění IP adres.
30 Požadavek na aktualizaci DNS na určený DNS server.
31 Aktualizace DNS selhala.
32 Aktualizace DNS byla úspěšná.
33 Paket byl zahozen kvůli politice NAP.
34 Požadavek na aktualizaci DNS selhal, protože byla překročena mezní hodnota fronty požadavků na aktualizaci DNS.
35 Požadavek na aktualizaci DNS selhal.
36 Paket byl zahozen, protože server je v roli záložního serveru pro failover nebo hash ID klienta nesedí.
50+ Kódy nad 50 jsou používány pro informace o detekci rogue serveru.

Příklad sběru událostí z DHCP serveru

Příklad konfigurace LogMan.io Collector:

input:SmartFile:DHCP-Server-Input:
    path: /DHCPServer/*.log
    protocol: w3c_dhcp
    extract_source: file_path
    extract_regex: ^(?P<file_path>.*)$

Příklad obsahu logového souboru DHCP serveru:

```title="/DHCPServer/log1.log" DHCP Service Activity Log Event ID Význam 00 Log byl spu