LogMan.io Collector
Konfigurace
Ve výchozím nastavení kolektor očekává konfigurační soubor lmio-collector.yaml
ve složce /data/
.
Cestu k souboru lze přepsat v souboru site.conf
:
[config]
path=./etc/lmio-collector.yaml
key=./etc/aes.key
Klíč AES musí být zadán, pokud mají být hesla v konfiguraci šifrována.
pomocí LogMan.io Commander (viz jeho dokumentace), tj. !encpwd "<ENCRYPTED_LMIO_PASSWORD>"
.
V opačném případě šifrování nebude fungovat.
Samotná konfigurace je soubor YAML založený na deklarativním jazyce BSPump.
Zde každá sekce začíná buď vstup:
, transformace:
, nebo výstup:
.
Výstup vytvoří pipeline BSPump se zadanými sink/output a konverzními procesory.
Transformace provádí předzpracování události předtím, než je předána výstupu.
Input přidá zdroj/vstup do dané pipeline pomocí output: <OUTPUT_ID>
příkaz.
input|transform|output:<TYPE>:<ID>
Každý vstup a výstup je založen na typu, který je uveden za :
.
Poslední sekce je ID, které slouží k referenci (například výše zmíněný input-output).
Použití
Docker Compose
verze: '3'
services:
lmio-collector:
docker.teskalabs.com/<PARTNER_CODE>/lmio-collector
container_name: lmio-collector
volumes:
- ./lmio-collector:/data
network_mode: host
porty:
- "8888:8888"
Příkazový řádek
python3 ./lmio-collector.py -c etc/site.conf
Příklad konfigurace
Konfigurace může vypadat takto. Viz vysvětlení v komentářích:
---
input:ODBC:ODBCInput:
host: 192.168.99.100
port: 3306
uživatel: root
heslo: root
db: sampledb
ovladač: Ovladač: MySQL ODBC 8.0 Unicode Driver
dotaz: SELECT jméno_jméno, příjmení, strana FROM znaky;
# true/false
last_value_enabled: true
# Zadejte tabulku pro SELECT max({}) from {};
last_value_table: characters
# Pro úplné zadání dotazu na poslední hodnotu použijte příkaz
# last_value_query:
# Sloupec v dotazu, který má být použit pro získání poslední hodnoty
last_value_column: id
# První hodnota, od které se má začít
last_value_start: 0
# Trvalé úložiště pro aktuální poslední hodnotu
last_value_storage: Poslední_hodnota_úložiště: "./etc/mysql_character_last_value_storage"
# Jak často se má dotaz provádět (v sekundách)
chilldown_period: 5
output: UnixSocketOutput
input:WEC:WECInput:
WEC: listen: # Kde vystavit server na: "0.0.0.0 8081"
cert: # Zadejte cestu k certifikátu: "/data/cert.pem" # Zadejte cestu k certifikátu
key: "/data/key.pem" # Zadejte cestu k soukromému klíči
# Zadejte miniaturní otisky certifikátů vydavatele (CA) oddělené mezerou
issuer_thumbprints: "d6982fff2104f21ab0c7ccb279217abe29c9808c"
dotazy: # Zadejte dotaz WEC ve formátu <QUERY_PATH> <QUERY_TEXT>\n
System *[System[(Level=1 nebo Level=2 nebo Level=3 nebo Level=4 nebo Level=0 nebo Level=5)]]
Bezpečnost *[Security[(Level=1 nebo Level=2 nebo Level=3 nebo Level=4 nebo Level=0 nebo Level=5)]]
read_existing_events: true
connection_retries: 60 # Kolik opakování je přijatelné
connection_retries_wait: 10.0 # Čekání na opakování spojení
heartbeat: 60 # Jak často by měl být při odběru volán heartbeat (v sekundách)
# Uložení poslední hodnoty
# Při změně "queries" také zvažte smazání souboru
last_value_storage: "/data/wec_last_value_storage"
# Výstup
output: WebSocketOutputForWindows
input:WinRM:WinRMInput:
endpoint: http://127.0.0.1:5985/wsman
# Autentizace
transport: ntlm
server_cert_validation: ignore
# cert_pem:, cert_key_pem:
username: <DOMAIN>\<USER> # Uživatel musí být ve skupině "Event Log Readers"
heslo: pwd
# Čtení 1000 systémových protokolů jednou za 2 sekundy
Příkaz: wevtutil qe system /c:1000 /rd:true
chilldown_period: 2
# Kontrola duplicit:
duplicity_check: true
# Pracuje s příkazem "wevtutil qe system /c:500 /rd:true"
duplicity_reverse_order: true
# Trvalé uložení aktuální poslední hodnoty
last_value_storage: "/data/winrm_last_value_storage"
# Zadejte vlastní výstup
output: WebSocketOutputForWindows
# Funguje pouze na počítači se systémem Windows, tj. nefunguje v linuxovém kontejneru Docker.
input:WinEvent:WinEventInput:
server: localhost
event_type: System
last_value_storage: "/data/winevent_last_value_storage"
# Optimalizace
# Události, které mají být načteny najednou
buffer_size: 1024
# Zadejte vlastní výstup
output: FileTestOutput
input:Stream:TCPInput:
adresa: 127.0.0.1:8888
output: UnixSocketOutput
input:SubProcess:SubProcessInput:
Příkaz: tail -f /data/tail.log
output: příkaz pro zadání příkazu: UnixSocketOutput
input:File:FileInput:
cesta: /data/lines/*
chilldown_period: 10
output: Výstup: UnixSocketOutput
input:XML:XMLInput:
cesta: XML: XML: cesta: /data/xml/*
chilldown_period: 10
# Každý vstup může explicitně specifikovat svůj výstup
output: XMLUnixSocketOutput
# Deklarativní předzpracování
transform:Declarative:DeclarativeProcessor1:
# Zadejte deklarační soubor
declaration: /data/output_declaration.yaml
# Specifikujte výstup
output: UnixSocketOutput
# Transformujte XML do slovníku
transform:XMLToDict:MyXMLParser:
výstup: XMLUnixSocketOutput
output:UnixSocket:UnixSocketOutput:
adresa: /myunixsocket
# Nastavte na true, aby bylo povoleno protokolování událostí
debug: false
output:WebSocket:WebSocketOutputForWindows:
url: http://127.0.0.1:9999/ws
output:UnixSocket:XMLUnixSocketOutput:
adresa: /myunixsocket
# Pro WebSocket použijte "url" místo "address"
output:File:FileTestOutput:
Cesta: /data/my_output_file.txt
Následuje příklad deklarativního předzpracování, které v případě výše uvedeného příkladu
probíhá v transform:Declarative:DeclarativeProcessor1
těsně předtím, než je událost předána do transform:DeclarativeProcessor1
.
výstupu definovanému adresou.
--- !DICT
s: !EVENT
set:
zákazníkem: MyBrilliantCustomer