Objevte konfiguraci
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
- 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-
n
s - now-
n
m - now-
n
H - now-
n
d - now-`n``w
- now-
n
M - now-
n
Y - nyní
- 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č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': ''}
}
}
}
}