Přeskočit obsah

IP Resolve Enricher & Expression

IP Resolve obohacuje událost o kanonický název hostitele a/nebo IP na základě buď IP adresy A síťového prostoru, nebo jakéhokoli názvu hostitele A sítě připojené k IP adrese v lookupu.

Lookup ID pro IP Resolve musí obsahovat následující podřetězec: ip_resolve

Záznam lookupu má následující strukturu:

key: [IP, network]
value: {
    "hostnames": [
        canonical_hostname,
        hostname2,
        hostname3
        ...
    ]
}

Příklad

Deklarace #1 - Enricher

---
define:
  name: IPResolve
  type: enricher/ipresolve
  lookup: lmio_ip_resolve  # nepovinné

source:
  - ip_addr_and_network_try1
  - ip_addr_and_network_try2
  - hostname_and_network_try3
  - [!IP.PARSE ip4, !ITEM EVENT network4]
  ...

ip: ip_addr_try1
hostname: host_name

Deklarace #2 - Expression

!IP.RESOLVE
source:
  - ip_addr_and_network_try1
  - ip_addr_and_network_try2
  - hostname_and_network_try3
  - [!IP.PARSE ip4, !ITEM EVENT network4]
  ...
ip: ip_addr_try1
hostname: host_name
with: !EVENT
lookup: lmio_ip_resolve  # nepovinné

Vstup

Feb 5 10:50:01 0:0:0:0:0:ffff:1f1f:e001 %ASA-1-105043 test

Výstup

{
    'rt': 1580899801.0,
    'msg': 'test',
    'ip_addr_try1': 281471203926017,
    'host_name': 'my_hostname'
}

Sekce define

Tato sekce definuje název a typ enrichta, což je v případě IP Resolve vždy enricher/ipresolve.

Prvek name

Kratší název této deklarace, který je snadno čitelný pro lidi.

Prvek type

Typ této deklarace, musí být enricher/ipresolve.

Sekce source

Specifikuje seznam atributů pro lookup. Každý atribut by měl být ve formátu:

[IP, network]
[hostname, network]

Pokud není síť specifikována, bude použita global.

První úspěšný lookup vrátí výstupní hodnoty (ip, hostname).

Sekce ip

Specifikuje atribut, kam se uloží lookuped IP adresa.

Sekce hostname

Specifikuje atribut, kam se uloží lookuped kanonický název hostitele. Kanonický název hostitele je první v hostnames hodnoty lookupu.

Načítání lookupu ze souboru

Data lookupu pro IP Resolve mohou být načtena ze souboru pomocí LogMan.io Collector input:FileBlock.

Data budou dostupná v LogMan.io Parseru, kde by měla být poslána na cíl lookup. Lookup se tedy nedostane do tématu input, ale do tématu lookups, odkud bude zpracován LogMan.io Watcherem pro aktualizaci dat v ElasticSearch.

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

{
    'action': 'full',
    'data': {
        'items': [{
                '_id': [!IP.PARSE 'MyIP', 'MyNetwork'],
                'hostnames': ['canonical_hostname', 'short_hostname', 'another_short_hostname']
            }
        ]
    },
    'lookup_id': 'customer_ip_resolve'
}

kde action rovno full značí, že existující obsah lookupu by měl být nahrazen items v data.

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

---
define:
  name: Demo of IPResolve parser
  type: parser/cascade
  target: lookup

parse:
    !DICT
    set:
      action: full
      lookup_id:
        !JOIN
        items:
          - !ITEM CONTEXT filename
          - ip_resolve
        delimiter: '_'
      data:
        !DICT
        set:
          items:
            !FOR
            each:
                !REGEX.SPLIT
                what: !EVENT
                regex: '\n'
            do:
                !FIRST
                - !CONTEXT.SET
                  set:
                    _temp:
                      !REGEX.SPLIT
                      what: !ARG
                      regex: ';'
                - !DICT
                  set:
                    _id:
                      - !IP.PARSE
                        value: !ITEM CONTEXT _temp.0
                      - MyNetworkOrSpace
                    hostnames:
                      !LIST
                      append:
                        - !ITEM CONTEXT _temp.1
                        - !ITEM CONTEXT _temp.2