Přeskočit obsah

Konfigurace Průzkumníku

Přehled LogMan.io Průzkumníku

Nastavení obrazovky Průzkumníka

Obrazovka Průzkumníka je určena pro zobrazování a prozkoumávání dat (nejen) v ElasticSearch.

Konfigurace obrazovky Průzkumníka může být nahrána z Knihovny nebo ze statického souboru v public složce stejným způsobem jako v případě Dashboards.

Typ filtrovaných dat závisí na specifikaci, která musí být definována společně s datetimeField. Tyto hodnoty jsou klíčové. Bez nich není filtrování možné.

Konfigurace Průzkumníka

Konfigurace v Knihovně

Konfigurace v Knihovně je uložena v Knihovně. Musí mít formát JSON.

Pro získání konfigurace z Knihovny musí být spuštěna služba asab_config s konfigurací ukazující na hlavní uzel Knihovny. Pro více informací viz zde: http://gitlab.teskalabs.int/lmio/asab-config

Konfigurace z Knihovny je editovatelná.

V uzlu Knihovny Průzkumníka může být více konfiguračních souborů, přičemž každý z nich může obsahovat pouze jednu konfiguraci obrazovky průzkumníka. Další obrazovku průzkumníka je třeba konfigurovat v novém uzlu Knihovny.

Všechny konfigurační soubory z uzlu Průzkumníka (Discover) v Knihovně jsou načteny jedním API voláním.

Struktura konfigurace v Knihovně

Struktura konfigurace v Knihovně

- hlavní uzel Knihovny
    - config
        - Průzkumník (Discover)
            - **config**.json
    - typ
        - Průzkumník (Discover).json
            - schema
Kde

  • config je název konkrétní konfigurace Průzkumníka, musí být v json formátu.

V Knihovně vypadá cesta ke konfiguračnímu souboru následovně:

/<hlavní uzel Knihovny>/config/Discover/<discoverConfig>.json

Cesta ke schématu bude následující:

/<hlavní uzel Knihovny>/type/Discover.json

Příklad výše popsané struktury Knihovny pro případ více konfiguračních souborů Průzkumníka:

- logman
    - config
        - Průzkumník (Discover)
            - declarative.json
            - default.json
            - speed.json
    - typ
        - Průzkumník (Discover).json

DŮLEŽITÁ POZNÁMKA

Schéma (typ) a konfigurační soubor (config) musí být nastaveny v Knihovně, jinak se průzkumník nenačte správně.

Všechny konfigurační soubory z uzlu Průzkumníka (Discover) v Knihovně jsou načteny jedním API voláním.

Příklad konfigurace:
{
    "Discover:datasource": {
        "specification": "declarative*",
        "datetimeField": "@timestamp",
        "type": "elasticsearch"
    }
}

Kde

  • klíč objektu slouží k pojmenování objektu. Musí být pojmenován jako Discover:datasource.
  • type je typ vyhledávacího engine
  • specification je URL s vzorem indexu ElasticSearch. Pokud chcete hledat všechna data, URL musí končit hvězdičkou *. Tento parametr je povinný.
  • datetimeField je index položky datetime. Tento parametr je povinný, protože je potřebný pro vyhledávání/listování v ElasticSearch.

Schéma (volitelné nastavení)

Nezaměňujte s knihovním schématem

Nastavte název pro získání schématu z knihovny (pokud je přítomen), který pak bude aplikován na hodnoty definované ve schématu. S pomocí schématu můžeme na hodnoty odpovídající definovanému typu aplikovat akce, např. pomocí komponenty Datum a čas (DateTime) ASAB-WebUI pro časové hodnoty.

{
    ...

    "Discover:schema": {
        "name": "ECS"
    }

    ...
}

Příklad struktury schémat v knihovně:

- knihovna
    - Schémata
        - Průzkumník.yaml
        - ECS.yaml
        ...

Příklad schématu v knihovně:

---

define:
  name: Elastic Common Schema
  type: common/schema
  description: https://www.elastic.co/guide/en/ecs/current/index.html

fields:
  '@timestamp':
    type: datetime
    label: "Datum a čas"
    unit: seconds
    docs: https://www.elastic.co/guide/en/ecs/current/ecs-base.html#field-timestamp

Autorizace (volitelné nastavení)

Konfigurace Průzkumníka může být omezena k přístupu pouze s určenými tenant(y). To znamená, že uživatelé bez konkrétních tenantů nemohou získat přístup ke konfiguraci průzkumníka s jeho zdrojem dat. To je výhodné např. když chce administrátor omezit přístup ke konfiguraci průzkumníka s citlivými daty určité skupině uživatelů.

Pokud je konfigurace nastavována přímo v Knihovně (a ne přes Konfigurační nástroj), doporučuje se přidat sekci Autorizace a ponechat klíč tenants jako prázdný řetězec (pokud není požadováno žádné omezení). To pomůže udržet stejnou strukturu konfigurace v rámci všech konfigurací Průzkumníka:

{
    ...

    "Authorization": {
        "tenants": ""
    }

    ...
}

Příklad nastavení Autorizace v konfiguraci, kde je požadováno omezení přístupu:

{
    ...

    "Authorization": {
        "tenants": "tenant jeden, tenant dva"
    }

    ...
}

Kde klíč tenants slouží k určení, kteří tenant(y) mohou zobrazovat a používat tuto konfiguraci. Více tenantů může být specifikováno, odděleno čárkou. Typ klíče tenants je string.

Nastavení promptů (volitelné nastavení)

Sekce nastavení promptů poskytuje další možnost nastavení promptů Průzkumníka nebo změny jeho výchozích hodnot.

Příklad sekce Discover:prompts v konfiguraci:

{
    ...

    "Discover:prompts": {
        "dateRangePicker:datetimeStart": "now-15m",
        "dateRangePicker:datetimeEnd": "now+15s"
        ...
    },

    ...
}
Nastavení vlastních period rozsahu datumu a času

Někdy je žádoucí nastavit vlastní periodu rozsahu datumu a času pro zobrazení dat, protože data se nacházejí např. mimo výchozí periodu nastavenou pro Průzkumníka. Výchozí perioda je now-1H, což má vyhledávat data v rámci now a 1 hodinu zpět. Například toto může být nastaveno v Discover:prompts následujícím způsobem:

{
    ...

    "Discover:prompts": {
        "dateRangePicker:datetimeStart": "now-1H",
        "dateRangePicker:datetimeEnd": "now"
    },

    ...
}

Kde dateRangePicker:datetimeStart a dateRangePicker:datetimeEnd jsou periody, které nastavují rozsah na počáteční periodu (počáteční) a na koncovou periodu (konečnou).

Možnosti nastavení pro obě periody jsou:

  • now-ns
  • now-nm
  • now-nH
  • now-nd
  • now-nw
  • now-nM
  • now-nY
  • now
  • now+ns
  • now+nm
  • now+nH
  • now+nd
  • now+nw
  • now+nM
  • now+nY

Kde - n je číslo, např. 2, - s znamená sekundy, - m znamená minuty, - H znamená hodiny, - d znamená dny, - w znamená týdny, - M znamená měsíce, - Y znamená roky

Ostatní hodnoty budou ignorovány.

Je možné např. nastavit pouze jednu periodu, jak je v tomto příkladu, druhá perioda zůstane výchozí:

{
    ...

    "Discover:prompts": {
        "dateRangePicker:datetimeStart": "now-2H"
    },

    ...
}

Další příklad nastavení rozsahu datumu a času, kde jsou data zobrazena 15 hodin zpět a hledána 10 minut do budoucnosti:

{
    ...

    "Discover:prompts": {
        "dateRangePicker:datetimeStart": "now-15H",
        "dateRangePicker:datetimeEnd": "now+10m"
    },

    ...
}

Schéma Knihovny

Pro manuální nastavení obrazovky průzkumníka v Knihovně musíte nastavit schéma průzkumníka ve validním JSON formátu.

Schéma musí být poskytnuto a uloženo v /<hlavní uzel Knihovny>/type/<discoverType>.json

Schéma může vypadat následovně:

{
    "$id": "Schéma Průzkumníka",
    "type": "object",
    "title": "Schéma Průzkumníka",
    "description": "Schéma Průzkumníka",
    "default": {},
    "examples": [
        {
            "Discover:datasource": {
                "specification": "declarative*",
                "datetimeField": "@timestamp",
                "type": "elasticsearch"
            }
        }
    ],
    "required": [],
    "properties": {
        "Discover:datasource": {
            "type": "string",
            "title": "Zdroj dat Průzkumníka",
            "description": "Specifikace dat pro obrazovku Průzkumníka",
            "default": {},
            "examples": [
                {
                    "specification": "declarative*",
                    "datetimeField": "@timestamp",
                    "type": "elasticsearch"
                }
            ],
            "required": [
                "specification",
                "datetimeField",
                "type"
            ],
            "properties": {
                "specification": {
                    "type": "string",
                    "title": "Specifikace",
                    "description": "Určete zdroj dat",
                    "default": "",
                    "examples": [
                        "declarative*"
                    ]
                },
                "datetimeField": {
                    "type": "string",
                    "title": "Datum a čas",
                    "description": "Určete hodnotu datumu a času pro zdroj dat",
                    "default": "",
                    "examples": [
                        "@timestamp"
                    ]
                },
                "type": {
                    "type": "string",
                    "title": "Typ",
                    "description": "Vyberte typ zdroje",
                    "default": [
                        "elasticsearch",
                        "sentinel"
                    ],
                    "$defs": {
                        "select": {
                            "type": "select"
                        }
                    },
                    "examples": [
                        "elasticsearch*"
                    ]
                }
            }
        },
        "Discover:prompts": {
            "type": "string",
            "title": "Prompty Průzkumníka",
            "description": "Aktualizujte konfiguraci promptu Průzkumníka",
            "default": {},
            "examples": [],
            "required": [],
            "properties": {
                "dateRangePicker:datetimeStart": {
                    "type": "string",
                    "title": "Počáteční perioda",
                    "description": "Nastavit počáteční periodu promptu",
                    "default": "now-1H",
                    "examples": [
                        "now-1H"
                    ]
                },
                "dateRangePicker:datetimeEnd": {
                    "type": "string",
                    "title": "Koncová perioda",
                    "description": "Nastavit koncovou periodu promptu",
                    "default": "now",
                    "examples": [
                        "now"
                    ]
                }
            }
        },
        "Discover:schema": {
            "type": "string",
            "title": "Název schématu Průzkumníka",
            "description": "Aplikovat schéma na hodnoty Průzkumníka",
            "default": {},
            "properties": {
                "name": {
                    "type": "string",
                    "title": "Název schématu",
                    "description": "Nastavit název schématu pro konfiguraci (bez přípony souboru)",
                    "default": ""
                }
            }
        },
        "Authorization": {
            "type": "string",
            "title": "Autorizace Průzkumníka",
            "description": "Omezit přístup k konfiguraci průzkumníka pomocí nastavení tenantů",
            "default": {},
            "examples": [],
            "required": [],
            "properties": {
                "tenants": {
                    "type": "string",
                    "title": "Tenanti",
                    "description": "Určete tentant(y) oddělené čárkou pro omezení použití této konfigurace (volitelné)",
                    "default": "",
                    "examples": [
                        "tenant1, tenant2"
                    ]
                }
            }
        }
    },
    "additionalProperties": false
}

Příklad předávání vlastností konfigurace

Příklad předávání vlastností konfigurace do DiscoverContainer:

...

this.App.Router.addRoute({
    path: "/discover",
    exact: true,
    name: 'Discover',
    component: DiscoverContainer,
    props: {
        type: "Discover"
    }
});

...

this.App.Navigation.addItem({
        name: "Discover",
        url: "/discover",
        icon: 'cil-compass'
    });

Při používání DiscoverContainer jako komponenty v kontejneru mohou být vlastnosti předány následujícím způsobem:

<DiscoverContainer type="Discover" />

Statický konfigurační soubor aplikace zůstává prázdný:

module.exports = {
    app: {
    },
    webpackDevServer: {
        port: 3000,
        proxy: {
            '/api/elasticsearch': {
                target: "http://es-url:9200",
                pathRewrite: {'^/api/elasticsearch': ''}
            },
            '/api/asab_print': {
                target: "http://asab_print-url:8083",
                pathRewrite: {'^/api/asab_print': ''}
            },
            '/api/asab_config': {
                target: "http://asab_config-url:8082",
                pathRewrite: {'^/api/asab_config': ''}
            }
        }
    }
}

Statická konfigurace

Obrazovka Průzkumníka nemusí být získána pouze z Knihovny. Další možností je konfigurovat ji přímo v JSON souboru a uložit ji do složky public projektu.

Příklad statické konfigurace

V index.js musí vývojář specifikovat:

JSON soubor s konfigurací může být uložen kdekoli ve složce public, ale důrazně se doporučuje jej uložit do složky /public/discover/, aby jej bylo možné odlišit od ostatních veřejně přístupných součástí.

  • Struktura konfigurace ve složce public
- public
    - discover
        - JSON konfigurační soubor
    - dashboards
    - locales
    - media
    - index.html
    - manifest.json

URL statického konfiguračního souboru uloženého ve složce public může vypadat následovně:

https://my-project-url/discover/Discover-config.json

Příklad Discover-config.json:

[
    {
        "Config name 1": {
            "Declarative": {
                "specification": "declarative*",
                "datetimeField": "last_inform",
                "type": "elasticsearch"
            }
        }
    },
    {
        "Config name 2": {
            "Default": {
                "specification": "default*",
                "datetimeField": "@timestamp",
                "type": "elasticsearch"
            }
        }
    }
]

Příklad předávání vlastností konfigurace