Wsparcie dla Elasticsearch jest eksperymentalne!
Áú»¢¶Ä²© obs?uguje przechowywanie danych historycznych za pomoc? Elasticsearch zamiast bazy danych. U?ytkownicy mog? wybra? miejsce przechowywania danych historycznych mi?dzy kompatybiln? baz? danych a Elasticsearch. Procedura konfiguracji opisana w tej sekcji dotyczy wersji Elasticsearch 7.X. W przypadku u?ycia wcze?niejszej lub p¨®?niejszej wersji Elasticsearch niekt¨®re funkcje mog? nie dzia?a? poprawnie.
Je?li wszystkie dane historyczne s? przechowywane w Elasticsearch, trendy nie s? obliczane ani przechowywane w bazie danych. Bez obliczonych i przechowywanych trend¨®w, mo?e by? konieczne wyd?u?enie okresu przechowywania historii.
Aby zapewni? poprawn? komunikacj? mi?dzy wszystkimi zaanga?owanymi elementami, upewnij si?, ?e plik konfiguracyjny serwera oraz parametry pliku konfiguracyjnego frontendu s? prawid?owo skonfigurowane.
Wersja robocza pliku konfiguracyjnego serwera Áú»¢¶Ä²© z parametrami do zaktualizowania:
### Option: HistoryStorageURL
# History storage HTTP[S] URL.
#
# Mandatory: no
# Default:
# HistoryStorageURL=
### Option: HistoryStorageTypes
# Comma separated list of value types to be sent to the history storage.
#
# Mandatory: no
# Default:
# HistoryStorageTypes=uint,dbl,str,log,text
Przyk?adowe warto?ci parametr¨®w do uzupe?nienia pliku konfiguracyjnego serwera Áú»¢¶Ä²©:
Ta konfiguracja zmusza serwer Áú»¢¶Ä²© do przechowywania warto?ci historycznych typ¨®w numerycznych w odpowiedniej bazie danych i danych tekstowych w Elasticsearch.
Elasticsearch obs?uguje nast?puj?ce typy pozycji:
Wyja?nienie obs?ugiwanych typ¨®w pozycji:
Typ warto?ci pozycji | Tabela bazy danych | Typ Elasticsearch |
Liczba (ca?kowita bez znaku) | history_uint | uint |
Liczba (zmiennoprzecinkowa) | history | dbl |
Znak | history_str | str |
Log | history_log | log |
Tekst | history_text | text |
Wersja robocza pliku konfiguracyjnego frontendu Áú»¢¶Ä²© (conf/zabbix.conf.php
) z parametrami do zaktualizowania:
// Adres URL Elasticsearch (mo?e by? ?a¨½cuchem znak¨®w, je?li ten sam adres URL jest u?ywany dla wszystkich typ¨®w).
$HISTORY['url'] = [
'uint' => 'http://localhost:9200',
'text' => 'http://localhost:9200'
];
// Typy warto?ci przechowywane w Elasticsearch.
$HISTORY['types'] = ['uint', 'text'];
Przyk?adowe warto?ci parametr¨®w do uzupe?nienia pliku konfiguracyjnego frontendu Áú»¢¶Ä²©:
Ta konfiguracja zmusza do przechowywania warto?ci historycznych Tekst
, Znak
i Log
w Elasticsearch.
Konieczne jest r¨®wnie? zrobienie $HISTORY globalnym w pliku conf/zabbix.conf.php
, aby zapewni? prawid?owe dzia?anie ca?o?ci (zobacz conf/zabbix.conf.php.example
jak to zrobi?):
Ostatnie dwa kroki, aby wszystko zadzia?a?o, to instalacja samego Elasticsearch oraz proces tworzenia mapowania.
Aby zainstalowa? Elasticsearch, prosz? odnie?? si? do .
Mapowanie to struktura danych w Elasticsearch (podobna do tabeli w bazie danych). Mapowanie dla wszystkich typ¨®w danych historycznych jest dost?pne tutaj: database/elasticsearch/elasticsearch.map
.
Utworzenie mapowania jest obowi?zkowe. Niekt¨®re funkcjonalno?ci mog? nie dzia?a? poprawnie, je?li mapowanie nie zostanie utworzone zgodnie z instrukcj?.
Aby utworzy? mapowanie dla typu text
, wy?lij nast?puj?ce ??danie do Elasticsearch:
curl -X PUT \
http://your-elasticsearch.here:9200/text \
-H 'content-type:application/json' \
-d '{
"settings": {
"index": {
"number_of_replicas": 1,
"number_of_shards": 5
}
},
"mappings": {
"properties": {
"itemid": {
"type": "long"
},
"clock": {
"format": "epoch_second",
"type": "date"
},
"value": {
"fields": {
"analyzed": {
"index": true,
"type": "text",
"analyzer": "standard"
}
},
"index": false,
"type": "text"
}
}
}
}'
Podobne ??danie nale?y wykona? w celu utworzenia mapowania dla warto?ci historycznych typu Character
oraz Log
z odpowiedni? korekt? typu.
Aby pracowa? z Elasticsearch, prosz? odnie?? si? do strony wymaga¨½ po dodatkowe informacje.
Proces porz?dkowania nie usuwa ?adnych danych z Elasticsearcha.
Ta sekcja opisuje dodatkowe kroki wymagane do pracy z pipeline i w?z?ami ingest.
Aby rozpocz??, nale?y utworzy? szablony dla indeks¨®w.
Poni?szy przyk?ad przedstawia ??danie utworzenia szablonu dla typu uint:
curl -X PUT \
http://your-elasticsearch.here:9200/_template/uint_template \
-H 'content-type:application/json' \
-d '{
"index_patterns": [
"uint*"
],
"settings": {
"index": {
"number_of_replicas": 1,
"number_of_shards": 5
}
},
"mappings": {
"properties": {
"itemid": {
"type": "long"
},
"clock": {
"format": "epoch_second",
"type": "date"
},
"value": {
"type": "long"
}
}
}
}'
Aby utworzy? inne szablony, u?ytkownik powinien zmieni? adres URL (ostatnia cz??? to nazwa szablonu), zmieni? pole "index_patterns"
tak, aby pasowa?o do nazwy indeksu, oraz ustawi? poprawne mapowanie, kt¨®re mo?na wzi?? z database/elasticsearch/elasticsearch.map
.
Na przyk?ad, nast?puj?ce polecenie mo?e by? u?yte do utworzenia szablonu dla indeksu tekstowego:
curl -X PUT \
http://your-elasticsearch.here:9200/_template/text_template \
-H 'content-type:application/json' \
-d '{
"index_patterns": [
"text*"
],
"settings": {
"index": {
"number_of_replicas": 1,
"number_of_shards": 5
}
},
"mappings": {
"properties": {
"itemid": {
"type": "long"
},
"clock": {
"format": "epoch_second",
"type": "date"
},
"value": {
"fields": {
"analyzed": {
"index": true,
"type": "text",
"analyzer": "standard"
}
},
"index": false,
"type": "text"
}
}
}
}'
Jest to konieczne, aby umo?liwi? Elasticsearch ustawienie poprawnego mapowania dla automatycznie tworzonych indeks¨®w. Nast?pnie nale?y utworzy? definicj? pipeline. Pipeline jest pewnego rodzaju przetwarzaniem danych przed umieszczeniem ich w indeksach. Poni?sze polecenie mo?e by? u?yte do utworzenia pipeline dla indeksu uint:
curl -X PUT \
http://your-elasticsearch.here:9200/_ingest/pipeline/uint-pipeline \
-H 'content-type:application/json' \
-d '{
"description": "dzienny indeks uint",
"processors": [
{
"date_index_name": {
"field": "clock",
"date_formats": [
"UNIX"
],
"index_name_prefix": "uint-",
"date_rounding": "d"
}
}
]
}'
U?ytkownik mo?e zmieni? parametr zaokr?glenia ("date_rounding"), aby ustawi? okre?lony okres rotacji indeksu. Aby utworzy? inne pipeline, u?ytkownik powinien zmieni? adres URL (ostatnia cz??? to nazwa pipeline) oraz zmieni? pole "index_name_prefix" tak, aby pasowa?o do nazwy indeksu.
Zobacz tak?e .
Dodatkowo, przechowywanie danych historycznych w wielu indeksach opartych na dacie powinno by? r¨®wnie? w??czone w nowym parametrze w konfiguracji serwera Áú»¢¶Ä²©:
### Option: HistoryStorageDateIndex
# Enable preprocessing of history values in history storage to store values in different indices based on date.
# 0 - disable
# 1 - enable
#
# Mandatory: no
# Default:
# HistoryStorageDateIndex=0
Nast?puj?ce kroki mog? pom¨®c Ci w rozwi?zywaniu problem¨®w z konfiguracj? Elasticsearch:
http://localhost:9200/uint
).Je?li nadal napotykasz problemy z instalacj?, prosz? utw¨®rz raport o b??dzie zawieraj?cy wszystkie informacje z tego listy (mapowanie, dzienniki b??d¨®w, konfiguracja, wersja, itp.).