Přeskočit obsah

Objevte konfiguraci

LogMan.io Discover overview

Nastavení obrazovky Discover

Obrazovka Discover slouží k zobrazení a prozkoumání dat (nejen) v ElasticSearch.

Konfiguraci obrazovky Discover lze načíst z Library nebo ze statického souboru ve složce public 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. Jedná se o klíčové hodnoty, bez kterých není filtrování možné.

Objevte konfiguraci

Konfigurace knihovny

Konfigurace knihovny je uložena v uzlu Knihovna. Musí být pouze typu JSON.

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

Konfigurace z Library je editovatelná

V uzlu Discover Library může být více konfiguračních souborů, v každém z nich lze nastavit pouze jednu konfigurační obrazovku Discover. Další obrazovka objevování musí být nakonfigurována v novém konfiguračním uzlu Knihovna.

Všechny konfigurační soubory z uzlu Objevování knihovny se načtou jedním voláním API.

Struktura konfigurace knihovny

Konfigurační struktura v knihovně

- hlavní uzel Knihovny
    - config
        - Objevte
            - **config**.json
    - typ
        - Discover.json
            - schema
Kde

  • config je název partikulární konfigurace Discover, musí být typu json.

V knihovně vypadá cesta ke konfiguračnímu souboru takto:

/<main Library node>/config/Discover/<discoverConfig>.json

Cesta ke schématu bude vypadat následovně:

/<main Library node>/type/Discover.json.

Příklad výše popsané struktury knihovny pro případ více konfiguračních souborů Discover:

- logman
    - config
        - Discover
            - declarative.json
            - default.json
            - speed.json
    - type
        - Discover.json

DŮLEŽITÁ POZNÁMKA

Schéma (type) a konfigurační soubor (config) musí být nastaveny v knihovně, jinak se discover nenačte správně.

Všechny konfigurační soubory z uzlu Discover Library se načtou v jednom volání API.

Příklad konfigurace:
{
    "Discover:datasource": {
        "specifikace": "deklarativní*",
        "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 stroje.
  • specification je url adresa se vzorem indexu ElasticSearch. Pokud chceme vyhledat všechna data, musí url končit hvězdičkou *. Jedná se o povinný parametr.
  • datetimeField je index data položky. Je to povinný parametr, protože je potřebný pro vyhledávání/procházení pomocí ElasticSearch.

Schéma (volitelné nastavení)

Nezaměňujte se schématem Library schema.

Nastavení jména pro získání schématu z knihovny (pokud je přítomno), které se pak použije na hodnoty definované v rámci schématu. Pomocí schématu můžeme aplikovat akce na hodnoty odpovídající definovanému typu, např. pomocí komponenty ASAB-WebUI DateTime pro hodnoty času.

{
    ...

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

    ...
}

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

- knihovna
    - Schémata
        - Discover.yaml
        - ECS.yaml
        ...

Příklad schématu v knihovně:

---

define:
  název: Elastic Common Schema
  typ: common/schema
  popis: https://www.elastic.co/guide/en/ecs/current/index.html

fields:
  '@timestamp':
    typ: datetime
    label: "Datetime"
    jednotka: sekundy
    docs: https://www.elastic.co/guide/en/ecs/current/ecs-base.html#field-timestamp

Autorizace (volitelné nastavení)

Konfigurace Discover může být omezena pro přístup pouze s konkrétním nájemcem (nájemci). To znamená, že uživatelé bez konkrétního(-ých) tenanta(-ů) nemají přístup ke konfiguraci Discover s jejím zdrojem dat. To je výhodné např. v případě, kdy chce správce omezit přístup ke konfiguraci discover s citlivými daty na určitou skupinu (skupiny) uživatelů.

Pokud se konfigurace nastavuje přímo v knihovně (a ne prostřednictvím nástroje Configuration), doporučuje se přidat sekci Authorization a klíč tenants ponechat jako prázdný řetězec (pokud není požadováno žádné omezení). To pomůže zachovat stejnou strukturu konfigurace napříč konfigurací Discover:

{
    ...

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

    ...
}

Příklad nastavení Authorization v rámci konfigurace, kde je vyžadován omezený přístup:

{
    ...

    "Authorization": {
        "tenants": "tenant one, tenant two"
    }

    ...
}

Kde klíč tenants slouží k zobrazení a použití konfigurace pouze podle konkrétního nájemce (nájemců). Lze zadat více nájemců oddělených čárkou. Typ klíče tenants je string.

Nastavení #### Prompt (volitelné nastavení)

Sekce Prompt settings (Nastavení výzvy) poskytuje další možnost nastavení výzvy Discover nebo změny jejího výchozího nastavení.

Příklad sekce Discover:prompts v rámci konfigurace:

{
    ...

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

    ...
}
Nastavení vlastních časových úseků

Někdy je žádoucí nastavit vlastní datumové období pro zobrazování dat, protože data jsou položena např. mimo výchozí období nastavené pro Discover. Výchozí období je now-1H, které by mělo vyhledávat data v rámci now a 1 hodinu zpět. Například by to mohlo být nastaveno v Discover:prompts takto:

{
    ...

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

    ...
}

Kde dateRangePicker:datetimeStart a dateRangePicker:datetimeEnd jsou období, která nastavují rozsah na počáteční období (počáteční) a na koncové období (konečné).

Možnosti nastavení pro obě období jsou:

  • now-ns
  • now-nm
  • now-nH
  • now-nd
  • now-`n``w
  • now-nM
  • now-nY
  • nyní
  • now+ns
  • now+nm
  • now+nH
  • now+nd
  • now+`n``w
  • now+nM
  • now+nY

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

Ostatní hodnoty budou ignorovány.

Je možné nastavit např. pouze jedno období jako v tomto příkladu, druhé období zůstane výchozí:

{
    ...

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

    ...
}

Další příklad nastavení časového rozsahu, kde se data zobrazují 15 hodin do minulosti a hledají se 10 minut do budoucnosti:

{
    ...

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

    ...
}

Schéma knihovny

Pro ruční nastavení vyhledávací obrazovky v knihovně je třeba nastavit vyhledávací schéma v platném formátu JSON.

Schéma musí být zadáno a uloženo v /<main Library node>/type/<discoverType>.json.

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

{
    "$id": "Discover schema",
    "type": "object",
    "title": "Discover schema",
    "description": "Schéma Discover",
    "default": {},
    "examples": [
        {
            "Discover:datasource": {
                "specifikace": "deklarativní*",
                "datetimeField": "@timestamp",
                "type": "elasticsearch"
            }
        }
    ],
    "required": [],
    "properties": {
        "Discover:datasource": {
            "type": "string",
            "title": "Discover source",
            "description": "Specifikace dat pro obrazovku Discover",
            "default": {},
            "examples": [
                {
                    "specifikace": "deklarativní*",
                    "datetimeField": "@timestamp",
                    "type": "elasticsearch"
                }
            ],
            "required": [
                "specifikace",
                "datetimeField",
                "type"
            ],
            "properties": {
                "specifikace": {
                    "type": "string",
                    "title": "Specifikace",
                    "description": "Specifikujte zdroj dat",
                    "default": "",
                    "examples": [
                        "deklarativní*"
                    ]
                },
                "datetimeField": {
                    "type": "string",
                    "title": "Datetime",
                    "description": "Uveďte hodnotu datatime 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": "Discover prompts",
            "description": "Aktualizace konfigurace výzvy Discover",
            "výchozí": {},
            "examples": [],
            "required": [],
            "properties": ["vlastnosti"]: {
                "dateRangePicker:datetimeStart": {
                    "type": "string",
                    "title": "Počáteční časový úsek data",
                    "description": "Nastavení časového období počátečního data výzvy",
                    "default": "now-1H",
                    "examples": [
                        "now-1H"
                    ]
                },
                "dateRangePicker:datetimeEnd": {
                    "type": "string",
                    "title": "Ending date time period",
                    "description": "Nastavení časového období koncového data výzvy",
                    "default": "now",
                    "examples": [
                        "now"
                    ]
                }
            }
        },
        "Discover:schema": {
            "type": "string",
            "title": "Discover schema name",
            "description": "Použít schéma nad hodnotami objevu",
            "default": {},
            "properties": {
                "name": {
                    "type": "string",
                    "title": "Název schématu",
                    "description": "Nastavte název schématu pro konfiguraci (bez přípony souboru)",
                    "default": ""
                }
            }
        },
        "Authorization": {
            "type": "string",
            "title": "Discover authorization",
            "description": "Omezit přístup ke konfiguraci zjišťování podle nastavení nájemce",
            "default": {},
            "examples": [],
            "required": [],
            "properties": ["vlastnosti"]: {
                "tenants": {
                    "type": "string",
                    "title": "Nájemci",
                    "description": "Zadejte nájemce (nájemce) oddělené čárkou pro omezení použití této konfigurace (nepovinné)",
                    "default": "",
                    "examples": [
                        "tenant1, tenant2"
                    ]
                }
            }
        }
    },
    "additionalProperties": false
}

Příklad předávání konfiguračních rekvizit

Příklad předání konfiguračních rekvizit do DiscoverContainer:

...

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

...

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

Používáte-li DiscoverContainer jako komponentu ve svém kontejneru, pak lze rekvizity předat následujícím způsobem:

<DiscoverContainer type="Discover" />

Konfigurační soubor statické aplikace zůstane prázdný:

module.exports = {
    app: {
    },
    webpackDevServer: {
        port: 3000,
        proxy: {
            '/api/elasticsearch': {
                cíl: "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

Objevovací obrazovka nemusí být získána pouze z knihovny. Další možností je konfigurace přímo v souboru JSON a jeho uložení do složky projektů public.

Příklad statické konfigurace

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

Soubor JSON 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 se odlišil od ostatních veřejně přístupných komponent.

  • Struktura konfigurace ve složce public
- public
    - objevit
        - Konfigurační soubor JSON
    - dashboards
    - locales
    - média
    - index.html
    - manifest.json

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

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

Příklad souboru Discover-config.json:

[
    {
        "Config name 1": {
            "Deklarativní": {
                "specifikace": "deklarativní*",
                "datetimeField": "last_inform",
                "type": "elasticsearch"
            }
        }
    },
    {
        "Název konfigurace 2": {
            "Default": {
                "specifikace": "default*",
                "datetimeField": "@timestamp",
                "type": "elasticsearch"
            }
        }
    }
]

Příklad předávání konfiguračních rekvizit

Předávání konfiguračních rekvizit do aplikace App:

this.App.Router.addRoute({
    path: "/discover",
    exact: true,
    name: "Discover",
    component: DiscoverContainer,
    props: {
        type: "https://my-project-url/discover/Discover-config.json"
    }
});

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

Používáte-li DiscoverContainer jako komponentu ve svém kontejneru, pak lze rekvizity předat následujícím způsobem:

<DiscoverContainer type="https://my-project-url/discover/Discover-config.json" />

Konfigurační soubor statické aplikace zůstane prázdný:

module.exports = {
    app: {
    },
    webpackDevServer: {
        port: 3000,
        proxy: {
            '/api/elasticsearch': {
                cíl: "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': ''}
            }
        }
    }
}