Discover
---
title: Objevování konfigurace
---
# Objevování konfigurace

## Nastavení obrazovky Objevování
Obrazovka Objevování se používá k zobrazení a prozkoumání dat (nejen) v ElasticSearch.
Konfigurace obrazovky Objevování 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 Objevování
#### 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 Objevování 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 Objevování. Další obrazovka Objevování musí být nakonfigurována v novém uzlu konfigurace Knihovny.
Všechny konfigurační soubory z uzlu Knihovny `Objevování` jsou načteny v jednom API volání.
##### Struktura konfigurace Knihovny
Struktura konfigurace v Knihovně
Kde
- **config** je název konkrétní konfigurace Objevování, musí být typu `json`.
V Knihovně vypadá cesta k souboru s konfigurací takto:
`/<hlavní uzel Knihovny>/config/Objevování/<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ů Objevování:
***DŮLEŽITÁ POZNÁMKA***
Schéma (`type`) a konfigurační soubor (`config`) musí být nastaveny v Knihovně, jinak nebude Objevování načteno správně.
Všechny konfigurační soubory z uzlu Knihovny `Objevování` jsou načteny v jednom API volání.
##### Příklad konfigurace:
```json
{
"Objevování:datasource": {
"specifikace": "declarative*",
"datetimeField": "@timestamp",
"type": "elasticsearch"
}
}
Kde
- klíč objektu slouží k pojmenování objektu. Musí být pojmenován jako
Objevování:datasource
. - type je typ vyhledávacího enginu
- specifikace 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.
{
...
"Objevování:schéma": {
"name": "ECS"
}
...
}
Příklad struktury schémat v knihovně:
- knihovna
- Schémata
- Objevování.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 Objevování 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 Objevování s jejím zdrojem dat. To je výhodné např. když chce administrátor omezit přístup k konfiguraci Objevování 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 Objevování:
{
...
"Autorizace": {
"tenants": ""
}
...
}
Příklad nastavení Autorizace
v rámci konfigurace, kde je vyžadován omezený přístup:
{
...
"Autorizace": {
"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 Objevování nebo změnit její výchozí hodnoty.
Příklad sekce Objevování:prompts
v rámci konfigurace:
{
...
"Objevování: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 Objevování. 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 Objevování:prompts
následujícím způsobem:
{
...
"Objevování: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-
n
s - now-
n
m - now-
n
H - now-
n
d - now-
n
w - now-
n
M - now-
n
Y - now
- now+
n
s - now+
n
m - now+
n
H - now+
n
d - now+
n
w - now+
n
M - now+
n
Y
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í:
{
...
"Objevování: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:
{
...
"Objevování:prompts": {
"dateRangePicker:datetimeStart": "now-15H",
"dateRangePicker:datetimeEnd": "now+10m"
},
...
}
Schéma Knihovny¶
Pro manuální nastavení obrazovky Objevování v Knihovně musí být schéma Objevování 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": "Schéma Objevování",
"type": "object",
"title": "Schéma Objevování",
"description": "Schéma Objevování",
"default": {},
"examples": [
{
"Objevování:datasource": {
"specifikace": "declarative*",
"datetimeField": "@timestamp",
"type": "elasticsearch"
}
}
],
"required": [],
"properties": {
"Objevování:datasource": {
"type": "string",
"title": "Zdroje Objevování",
"description": "Specifikace dat pro obrazovku Objevování",
"default": {},
"examples": [
{
"specifikace": "declarative*",
"datetimeField": "@timestamp",
"type": "elasticsearch"
}
],
"required": [
"specifikace",
"datetimeField",
"type"
],
"properties": {
"specifikace": {
"type": "string",
"title": "Specifikace",
"description": "Specifikujte zdroj dat",
"default": "",
"examples": [
"declarative*"
]
},
"datetimeField": {
"type": "string",
"title": "Datum a čas",
"description": "Specifikujte 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*"
]
}
}
},
"Objevování:prompts": {
"type": "string",
"title": "Výzvy Objevování",
"description": "Aktualizujte konfiguraci výzev Objevování",
"default": {},
"examples": [],
"required": [],
"properties": {
"dateRangePicker:datetimeStart": {
"type": "string",
"title": "Počáteční časové období",
"description": "Nastavte počáteční časové období výzvy",
"default": "now-1H",
"examples": [
"now-1H"
]
},
"dateRangePicker:datetimeEnd": {
"type": "string",
"title": "Koncové časové období",
"description": "Nastavte koncové časové období výzvy",
"default": "now",
"examples": [
"now"
]
}
}
},
"Objevování:schéma": {
"type": "string",
"title": "Název schématu Objevování",
"description": "Aplikujte schéma na hodnoty Objevování",
"default": {},
"properties": {
"name": {
"type": "string",
"title": "Název schématu",
"description": "Nastavte název schématu pro konfiguraci (bez přípony souboru)",
"default": ""
}
}
},
"Autorizace": {
"type": "string",
"title": "Autorizace Objevování",
"description": "Omezte přístup k konfiguraci Objevování podle nastavení nájemců",
"default": {},
"examples": [],
"required": [],
"properties": {
"tenants": {
"type": "string",
"title": "Nájemci",
"description": "Specifikujte nájemce oddělené čárkou pro omezení používání 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: "Objevování",
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 Objevování 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 konfigurační soubor
- 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"
}
}
}
]
Example of passing config props¶
Passing config props to the 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'
});
When using DiscoverContainer
as a component in your container, then the props can be passed as following:
<DiscoverContainer type="https://my-project-url/discover/Discover-config.json" />
The static application config file remains empty:
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': ''}
}
}
}
}