Přeskočit obsah

Předzpracovávání lookups

Když je lookup přijat z LogMan.io Collector přes LogMan.io Ingestor, může se jednat buď o celé obsah lookupu (full frame), nebo jen jeden záznam (delta frame).

Předzpracování

Na základě formátu vstupního lookup souboru by měl být použit předzpracovatel, aby se zjednodušily následující deklarace a optimalizovala rychlost načítání lookupu. Obvykle bude použit buď JSON, XML nebo CSV předzpracovatel:

---
define:
  name: Předzpracovatel pro CSV
  type: parser/preprocessor

function: lmiopar.preprocessor.CSV

Tímto způsobem je obsah analyzovaného souboru uložen v CONTEXT, odkud k němu lze přistupovat.

Full frame

Aby bylo možné uložit celý lookup do ElasticSearch prostřednictvím LogMan.io Watcher a informovat jiné instance LogMan.io Parser a LogMan.io Correlator o změně v celém lookup, měla by být použita deklarace Cascade Parser s konfigurací target: lookup.

Takový lookup nevstoupí do tématu input, ale do tématu lookups, odkud bude zpracován LogMan.io Watcher, aby aktualizoval data v ElasticSearch.

LogMan.io Watcher očekává následující formát události:

{
    'action': 'full',
    'data': {
        'items': [{
                '_id': 'myId',
                ...
            }
        ]
    },
    'lookup_id': 'myLookup'
}

kde hodnota action rovna full znamená, že existující obsah lookupu by měl být nahrazen položkami v data.

K vytvoření této struktury použijte následující deklarativní příklad Cascade Parseru.

Ukázková deklarace

---
define:
  name: Ukázka parseru načítání lookupu
  type: parser/cascade
  target: lookup

parse:
    !DICT
    set:
      action: full
      lookup_id: myLookup
      data:
        !DICT
        set:
          items:
            !FOR
            each: !ITEM CONTEXT CSV
            do:
              !DICT
              set:
                _id: !ITEM ARG myId
                ...

Když obsah lookup vstoupí do LogMan.io Parser, parsované lookup je posíláno do LogMan.io Watcher, aby bylo uloženo v ElasticSearch.

Delta frame

Aby bylo možné aktualizovat JEDNU položku v existujícím lookupu v ElasticSearch prostřednictvím LogMan.io Watcher a informovat jiné instance LogMan.io Parser a LogMan.io Correlator o změně v lookup, měla by být použita deklarace Cascade Parser s konfigurací target: lookup.

Taková položka lookupu nevstoupí do tématu input, ale do tématu lookups, odkud bude zpracována LogMan.io Watcher, aby aktualizovala data v ElasticSearch.

LogMan.io Watcher očekává následující formát události:

{
    'action': 'update_item',
    'data': {
        '_id': 'existingOrNewItemId',
        ...
    },
    'lookup_id': 'myLookup'
}

kde hodnota action rovna update_item znamená, že obsah existující položky lookupu by měl být nahrazen položkami v data, nebo by měla být vytvořena nová položka lookupu.

K vytvoření této struktury použijte následující deklarativní příklad Cascade Parseru.

Ukázková deklarace

---
define:
  name: Ukázka parseru načítání položek lookupu
  type: parser/cascade
  target: lookup

parse:
    !DICT
    set:
      action: update_item
      lookup_id: myLookup
      data:
        !DICT
        set:
          _id: !ITEM CONTEXT CSV.0.myID
          ...

Když obsah lookup vstoupí do LogMan.io Parser, parsované lookup je posíláno do LogMan.io Watcher, aby bylo uloženo v ElasticSearch.