Přeskočit obsah

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