Přeskočit obsah

Discover Configuration

LogMan.io Discover Overview

Nastavení obrazovky Discover

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

Konfigurace obrazovky Discover může být načtena z Knihovny nebo ze statického souboru ve složce public stejným způsobem, jako je tomu v případě Dashboards.

Typ filtrovaných dat závisí na specifikaci, která musí být definována spolu s datetimeField. Tyto hodnoty jsou zásadní, bez nichž není možné filtrování.

Konfigurace Discover

Konfigurace Knihovny

Konfigurace Knihovny je uložena v uzlu Knihovny. Musí být typu JSON.

Aby bylo možné získat konfiguraci z Knihovny, musí být služba asab_config spuštěna s konfigurací ukazující na hlavní uzel Knihovny. Pro více informací se prosím odkažte zde: http://gitlab.teskalabs.int/lmio/asab-config

Konfigurace z Knihovny je editovatelná.

V uzlu Knihovny Discover může být více konfiguračních souborů, přičemž v každém z nich může být nastavena pouze jedna obrazovka konfigurace Discover. Další obrazovka Discover musí být nakonfigurována v novém uzlu konfigurace Knihovny.

Všechny konfigurační soubory z uzlu Knihovny Discover jsou načteny v jednom API volání.

Struktura konfigurace Knihovny

Struktura konfigurace v Knihovně

- main Library node
    - config
        - Discover
            - **config**.json
    - type
        - Discover.json
            - schema
Kde

  • config je název konkrétní konfigurace Discover, musí být typu json.

V Knihovně vypadá cesta k souboru s konfigurací takto:

/<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ů 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 nebude Discover načteno správně.

Všechny konfigurační soubory z uzlu Knihovny Discover jsou načteny v jednom API volání.

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 enginu
  • specification je url s vzorem indexu ElasticSearch. Pokud byste chtěli hledat všechna data, musí url končit hvězdičkou *. Toto je povinný parametr.
  • datetimeField je index datumu a času položky. Je to povinný parametr, protože je potřebný pro vyhledávání/procházení s ElasticSearch.

Schéma (volitelné nastavení)

Nedoměňujte s schématem Knihovny

Nastavte název pro získání schématu z knihovny (pokud je přítomno), které je pak aplikováno na hodnoty definované v rámci schématu. Se schématem můžeme aplikovat akce na hodnoty odpovídající definovanému type, např. použitím komponenty DateTime z ASAB-WebUI pro časové hodnoty.

{
    ...

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

    ...
}

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

- library
    - Schemas
        - Discover.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: "Datetime"
    unit: seconds
    docs: https://www.elastic.co/guide/en/ecs/current/ecs-base.html#field-timestamp

Autorizace (volitelné nastavení)

Konfigurace Discover může být omezena na přístup pouze s konkrétními nájemci. To znamená, že uživatelé bez konkrétních nájemců nemohou přistupovat k konfiguraci Discover s jejím zdrojem dat. To je výhodné např. když chce administrátor omezit přístup k konfiguraci Discover s citlivými daty na konkrétní skupiny uživatelů.

Pokud je konfigurace nastavena přímo v Knihovně (a ne prostřednictvím nástroje pro konfiguraci), doporučuje se přidat sekci Autorizace a nechat klíč tenants jako prázdný řetězec (pokud není omezení vyžadováno). To pomůže udržet stejnou strukturu konfigurace napříč konfiguracemi Discover:

{
    ...

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

    ...
}

Příklad nastavení Autorizace 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žívání konfigurace pouze konkrétními nájemci. Může být specifikováno více nájemců, oddělených čárkou. Typ klíče tenants je string.

Nastavení výzev (volitelné nastavení)

Sekce nastavení výzev poskytuje další možnost nastavit výzvu Discover nebo změnit její výchozí hodnoty.

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

{
    ...

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

    ...
}
Nastavení vlastních období datumu a času

Někdy je žádoucí nastavit vlastní období datumu a času pro zobrazení dat, protože data leží např. mimo výchozí období nastavené pro Discover. Výchozí období je now-1H, což by mělo hledat data v rozmezí now a 1 hodina zpět. Například, to by mohlo 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 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-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 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čuje roky.

Ostatní hodnoty budou ignorovány.

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

{
    ...

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

    ...
}

Další příklad nastavení rozsahu datumu a času, kde jsou data zobrazena 15 hodin do minulosti 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 Discover v Knihovně musí být schéma Discover nastavena 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 takto:

{
    "$id": "Discover schema",
    "type": "object",
    "title": "Discover schema",
    "description": "The Discover schema",
    "default": {},
    "examples": [
        {
            "Discover:datasource": {
                "specification": "declarative*",
                "datetimeField": "@timestamp",
                "type": "elasticsearch"
            }
        }
    ],
    "required": [],
    "properties": {
        "Discover:datasource": {
            "type": "string",
            "title": "Discover source",
            "description": "The data specification for Discover screen",
            "default": {},
            "examples": [
                {
                    "specification": "declarative*",
                    "datetimeField": "@timestamp",
                    "type": "elasticsearch"
                }
            ],
            "required": [
                "specification",
                "datetimeField",
                "type"
            ],
            "properties": {
                "specification": {
                    "type": "string",
                    "title": "Specification",
                    "description": "Specify the source of the data",
                    "default": "",
                    "examples": [
                        "declarative*"
                    ]
                },
                "datetimeField": {
                    "type": "string",
                    "title": "Datetime",
                    "description": "Specify the datetime value for data source",
                    "default": "",
                    "examples": [
                        "@timestamp"
                    ]
                },
                "type": {
                    "type": "string",
                    "title": "Type",
                    "description": "Select the type of the source",
                    "default": [
                        "elasticsearch",
                        "sentinel"
                    ],
                    "$defs": {
                        "select": {
                            "type": "select"
                        }
                    },
                    "examples": [
                        "elasticsearch*"
                    ]
                }
            }
        },
        "Discover:prompts": {
            "type": "string",
            "title": "Discover prompts",
            "description": "Update Discover prompt configuration",
            "default": {},
            "examples": [],
            "required": [],
            "properties": {
                "dateRangePicker:datetimeStart": {
                    "type": "string",
                    "title": "Starting date time period",
                    "description": "Setup the prompt's starting date time period",
                    "default": "now-1H",
                    "examples": [
                        "now-1H"
                    ]
                },
                "dateRangePicker:datetimeEnd": {
                    "type": "string",
                    "title": "Ending date time period",
                    "description": "Setup the prompt's ending date time period",
                    "default": "now",
                    "examples": [
                        "now"
                    ]
                }
            }
        },
        "Discover:schema": {
            "type": "string",
            "title": "Discover schema name",
            "description": "Apply schema over discover values",
            "default": {},
            "properties": {
                "name": {
                    "type": "string",
                    "title": "Schema name",
                    "description": "Set up the schema name for configuration (without file extension)",
                    "default": ""
                }
            }
        },
        "Authorization": {
            "type": "string",
            "title": "Discover authorization",
            "description": "Limit access to discover configuration by tenant settings",
            "default": {},
            "examples": [],
            "required": [],
            "properties": {
                "tenants": {
                    "type": "string",
                    "title": "Tenants",
                    "description": "Specify the tenant(s) separated by comma to restrict the usage of this configuration (optional)",
                    "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 ve vašem 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 Discover nemusí být získána pouze z Knihovny. Další možností je nakonfigurovat ji přímo v souboru JSON 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 silně se doporučuje uložit jej 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
    - discover
        - JSON config file
    - dashboards
    - locales
    - media
    - index.html
    - manifest.json

URL statické konfigurace uložené ve složce public může vypadat takto:

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

Předávání vlastností konfigurace do aplikace:

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'
});

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

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

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': ''}
            }
        }
    }
}

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' });

Při používání `DiscoverContainer` jako komponenty ve vašem kontejneru mohou být vlastnosti předány následujícím způsobem:
Statický konfigurační soubor aplikace zůstává prázdný:

```javascript
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': ''}
            }
        }
    }
}