Přeskočit obsah

Dráhy událostí

TeskaLabs LogMan.io Depositor čte všechny event řady z knihovny a vytváří pipeline z Kafka do Elasticsearch na základě sekcí kafka a elasticsearch.

Poznámka

Všechny nasazené instance TeskaLabs LogMan.io Depositor sdílejí stejné ID skupiny v rámci Kafka. Všechny instance rozdělují konzumaci z Kafka partičí mezi sebe a tím poskytují škálovatelnost nativně.

Prohlášení

Toto je příklad sekcí událostního pásu relevantních pro LogMan.io Depositor:

/EventLanes/tenant/eventlane.yaml
---
define:
  type: lmio/event-lane

kafka:
  events:
    topic: events.<tenant>.<stream>  # Kafka topic for parsed events
  others:
    topic: others.<tenant>.<stream>  # Kafka topic for unparsed events

elasticsearch:
  events:
    index: lmio-<tenant>-events-<stream>  # Index alias for events
  others:
    index: lmio-<tenant>-others  # Index alias for others

Když je spuštěn LogMan.io Depositor a je načtena událostní dráha, jsou vytvořeny dva pipeline. Pipeline událostí spotřebovává zprávy z Kafka tématu definovaného v možnosti kafka/events/topic a ukládá je do Elasticsearch indexu, přičemž používá alias indexu definovaný v možnosti elasticsearch/events/index.

Pipeline Others podobně spotřebovává zprávy z tématu definovaného v kafka/others/topic a ukládá je do indexu pomocí aliasu definovaného v elasticsearch/others/index.

Index vs. alias indexu

V Elasticsearch je index sbírkou dokumentů, které sdílejí stejnou strukturu a jsou uloženy společně. Je to základní jednotka pro ukládání a vyhledávání dat.

Indexový alias je virtuální název, který může ukazovat na jeden nebo více indexů. Umožňuje zobrazovat a manipulovat s daty stejného logického toku.

V událostním kanálu je specifikován alias indexu. LogMan.io Depositor vytváří indexy na základě tohoto aliasu.

Například, když je alias indexu definován jako lmio-tenant-events-stream, _LogMan.io Depositor vytváří indexy

```
lmio-tenant-events-stream-000001
lmio-tenant-events-stream-000002
lmio-tenant-events-stream-000003
...
```

Komplexní událostní pruhy

LogMan.io Depositor nativně nečte z Kafka tématu events.<tenant>.complex a přeskočuje složité událostní linie.

Poznámka

Depozitář bere v úvahu VŠECHNY soubory jízdních pruhů událostí, bez ohledu na to, zda jsou pro daného nájemce v rozhraní UI zakázány nebo ne. Depozitář není služba specifická pro konkrétního nájemce.

Sdílení dat mezi nájemci

Vkladatel vytváří globální mapu Kafka tématu → Elasticsearch index z událostních linií všech nájemců. Při načítání nedochází k žádnému směrování podle nájemce: rozhoduje pouze samotné téma. Pokud dva nájemci deklarují různé indexy (nebo jiné cíle) pro stejné Kafka téma, poslední načtená deklarace tiše zvítězí.

Kdy to použít

Používejte sdílená témata a indexy, když několik nájemníků by mělo vidět stejný proud událostí v Elasticsearch (stejná data, stejná schémata).

Jak nakonfigurovat

  1. Zkopírujte stejnou událostní linku do složky knihovny každého nájemce, například:
  2. /EventLanes/tenant-a/microsoft-windows.yaml
  3. /EventLanes/tenant-b/microsoft-windows.yaml
  4. V každé kopii nastavte stejné:
  5. kafka.events.topic
  6. elasticsearch.events.index
  7. schéma (define.schema nebo výchozí schéma nájemce, ale zachovejte jejich sladění)
  8. Explicitně uveďte others v událostní lince (kafka.others.topic a elasticsearch.others.index) a nasměrujte je na sdílený topic a index pro ostatní.
/EventLanes/tenant-a/microsoft-windows.yaml (same content under tenant-b)
---
define:
  type: lmio/event-lane
  schema: /Schemas/ECS.yaml

kafka:
  events:
    topic: events.shared.microsoft-windows
  others:
    topic: others.shared

elasticsearch:
  events:
    index: lmio-shared-events-microsoft-windows
  others:
    index: lmio-shared-others

Proč musí být others nastaveno v událostním kanálu

Pokud jsou kafka.others / elasticsearch.others vynechány, Depositor používá vyhrazenou lane událostí ostatních tohoto tenanta (type: …/others nebo define.others: true).

Přesměrování při chybě a selhání pipeline používá globální mapu events_topic → others_topic. Při sdíleném tématu událostí a různých drahách others pro jednotlivé nájemce vyhraje cíl others posledního nájemce. Umístění sdíleného others do dráhy událostí tomu zabrání.

Chování a upozornění

  • Dokumenty od všech sdílených nájemců jsou ukládány ve stejných indexech Elasticsearch. Pokud potřebujete pohled na konkrétního nájemce v Kibana, filtrovat podle pole tenant v události (pokud jej parsery nastaví).
  • Zachovejte stejné schéma, filtry a nastavení ILM napříč kopiemi, aby přestavby artefaktů neměnily konfliktní šablony.
  • Producenti (Parsec a další) pro každého sdíleného nájemce musí publikovat na tyto sdílené Kafka topic.
  • Depositor nedupikuje Kafka konzumenty pro stejné topic; jedno předplatné obslouží všechny sdílené nájemce.

Šablona indexu

LogMan.io Depositor vytváří a aktualizuje šablonu indexu pro každý proud událostí.

Mapování v šabloně indexu je založeno na schématu event lane. Výchozí schéma pro event lane je /Schemas/ECS.yaml. Lze jej změnit v deklaraci event lane:

/EventLanes/tenant/eventlane.yaml
---
define:
  type: lmio/event-lane
  schema: /Schemas/CEF.yaml

Je také možné specifikovat number_of_shards a number_of_replicas v sekci nastavení v elasticsearch:

/EventLanes/tenant/eventlane.yaml
---
define:
  type: lmio/event-lane

elasticsearch:
  events:
    settings:
      number_of_shards: 6
      number_of_replicas: 1
      refresh_interval: 30s

Výchozí hodnota number_of_shards je 6, number_of_replicas je 1 a refresh_interval je 30s.

Poznámka

Pečlivě zvažte změnu výchozího nastavení a schématu. Změna výchozích hodnot obvykle způsobuje problémy, například neshodující se detekční pravidla pro danou událostní cestu, která používá jiné schéma.

Varování

Změny šablony indexu se projeví až po dalším přechodu indexu, pokud v Elasticsearch již existuje nějaký index.

Filtrování

Chcete-li filtrovat konkrétní atributy z příchozích událostí, které nemají být ukládány do Elasticsearch, použijte možnost filter se seznamem atributů, které mají být odstraněny z příchozích zpracovaných událostí. Tato možnost se nachází v sekci elasticsearch pro index events.

elasticsearch:
  events:
    index: lmio-<tenant>-events-<stream>  # Index alias for events
    filter:
      - event.original

Politika životního cyklu

LogMan.io Depositor konfiguruje Index Lifecycle Policy každého proudu událostí.

Výchozí

Výchozí politika životního cyklu obsahuje čtyři fáze: hot, warm, cold a delete.

  • Výchozí horká fáze pro daný index končí, když velikost primární části přesáhne 16 GB nebo je starší než 7 dní.

  • Výchozí teplá fáze pro daný index začíná buď po skončení horké fáze, nebo po 7 dnech, a zapíná smršťování.

  • Výchozí studená fáze pro daný index začíná po 14 dnech.

  • Fáze mazání odstraní index po 180 dnech.

Vlastní

Výchozí ILM lze změnit, i když to není doporučeno pro většinu případů. Můžete tak učinit zadáním sekce lifecycle v rámci sekce elasticsearch u dané event lane:

/EventLanes/tenant/eventlane.yaml
---
define:
    type: lmio/event-lane

elasticsearch:
  events:
    lifecycle:

      hot:
        min_age: "0ms"
        actions:
          rollover:
            max_primary_shard_size: "25gb"  # We want bigger primary shards than default
            max_age: "30d"
          set_priority:
            priority: 100

      warm:
        min_age: "7d"
        actions:
          shrink:
            number_of_shards: 1
          set_priority:
            priority: 50

      cold:
        min_age: "14d"
        actions:
          set_priority:
            priority: 0

      delete:
        min_age: 180d
        actions:
          delete:
            delete_searchable_snapshot: true

!!! varování „Nastavte kompletní ILM politiku.“

I když se snažíte změnit jen jednu z fází, musíte specifikovat celou politiku životního cyklu. Vlastní ILM zcela přepisuje výchozí konfiguraci.

!!! tip „Fáze bez mazání“

Pokud nechcete nastavit fázi delete, prostě vynechte sekci delete v událostní lince. Použijte to pouze, pokud opravdu víte, co děláte!