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 IPv60.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 IPv61.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:
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ů:
- Protokol řádků pro řádkově orientované logové soubory
- XML protokol pro XML-orientované logové soubory
- W3C Extended Log File Protocol pro logové soubory ve formátu W3C Extended Log File Format
- W3C DHCP Server Protocol pro logové soubory DHCP serveru
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:
...
<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:
#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