Skip to end of metadata
Go to start of metadata

Wymagania

  1. Wymagana jest usługa Elasticsearch w wersji 7 lub 8  (uruchamiana w poniższej sekcji Konfiguracja i punkcie 3).

Instalacja

Szkolenie z instalacji i konfiguracji ElasticSearch-20231121_100214-Nagrywanie spotkania.mp4

Obsługa Dockera

  1. Usuwanie kontenerów - Będąc w lokalizacji pliku docker-compose.yml należy wywołać:

    docker compose down

    Jeżeli chcemy również usunąć wolumen ze wszystkimi danymi wywołujemy z opcją -v

    docker compose down -v
  2. Jeżeli chcemy utworzyć kontenery bez wyświetlania logów, dodajemy komendę -d

    docker compose up -d
  3. Aby wyświetlić status kontenerów należy wykonać:

    docker stats

Konfiguracja

  1. Wymagana jest instalacja Dockera wraz z Docker Compose. 
  2. W repozytorium kodu (lub docker-compose.yml, docker-compose8.yml - dla wersji 8) plusworkflow/plusworkflow-core znajduje się docker-compose.yml do uruchomienia elastica i Kibany lokalnie (docker-compose8.yml dla wersji 8).
  3. W celu zmiany nazwy użytkownika i hasła do usługi należy zmodyfikować parametry ELASTIC_USERNAME i ELASTIC_PASSWORD w sekcji elasticsearch w pliku docker-compose.yml. 
    Należy też zmienić parametry ELASTICSEARCH_USERNAME i ELASTICSEARCH_PASSWORD sekcji kibana powyższego pliku (połączenie Kibany z usługą Elastica).

    Dla wersji 8 parametr ELASTIC_USERNAME  nie jest używany.
    Od wersji 8 kibany nazwa użytkownika "elastic" jest zastrzeżona, dlatego trzeba w pliku zmienić na inną nazwę.

    Warte uwagi są jeszcze następujące parametry:

    • ES_SETTING_SEARCH_MAX__OPEN__SCROLL__CONTEXT - domyślna wartość w Elasticu to 500, zwiększamy w przypadku wystąpienia błędu - Trying to create too many scroll contexts (występuje najczęściej przy usuwaniu procesów)
    • ES_SETTING_CLUSTER_MAX__SHARDS__PER__NODE - domyślna wartość to 1000, zwiększamy przy wystąpieniu błędu - this action would add [2] shards, but this cluster currently has [1000]/[1000] maximum normal shards open (może wystąpić podczas indeksowania zadaniem zaplanowanym)
  4. Będąc w lokalizacji powyższego pliku docker-compose.yml należy wywołać:

    docker compose up
  5. Trzeba ustawić flagę w experimental.properties:

    elasticProcessSearch=true
  6. Dodać plik w katalogu domowym w configu: elastic.properties o zawartości:

    elastic.hostname=localhost
    elastic.port=9200
    elastic.username=elastic
    elastic.password=elastic
    #Opcjonalne
    elastic.environment=
    elastic.protocol=
  7. Opcjonalnie można podać parametr elastic.environment, który jest przydatny w przypadku jednej usługi Elasticsearch dla kilku instancji systemu. Podajemy w nim unikalną nazwę dla każdej z tych instancji. 
    Nazwa nie może zawierać następujących znaków: spacja, ", *, \, <, |, ,, >, /, ?
  8. Opcjonalnie można podać parametr elastic.protocol, który określa, czy komunikacja z usługą Elasticsearch powinna odbywać się po HTTPS, czy HTTP (W zależności od ustawień serwera). Podajemy w nim wartość https lub http. W przypadku braku parametru, komunikacja odbywa się domyślnie po HTTP.

    Uwaga

    Jeżeli komunikacja z Elasticsearch odbywa się po HTTPS, to należy uzupełnić parametr elastic.protocol wartością https.
    Aby komunikacja z usługą działała poprawnie, należy wgrać ważny certyfikat do systemu. Można skorzystać z systemowej zakładki Certyfikaty.

  9. Włączyć parametr systemowy ElasticEnabled (jeśli istnieje)
  10. Dodać zadanie zaplanowane o nazwie: Indeksowanie procesów i zadań. Po jego uruchomieniu zastaną zaindeksowane wszystkie procesy i zadania.

    Zadanie powinno być uruchamiane na żądanie, nie powinno być ustawione jako cykliczne. Najczęściej uruchamiamy je przy nowej instancji Elastica dla istniejącego systemu (w celu przesłania danych do Elastica), nowe dane są przesyłane na bieżąco. W przypadku wystąpienia rozbieżności w danych w Elasticu pomocne jest uruchomienie zadania. W przypadku dużych baz danych można jednak uruchamiać zadanie jako cykliczne (jest to opisane w opisie zadania).

    Szczegółowy opis w sekcji Zadania zaplanowane


  11.  Dodać zadanie zaplanowane o nazwie: Indeksowanie brakujących procesów i zadań.

    Szczegółowy opis w sekcji Zadania zaplanowane


  12. [Opcjonalnie] Dodać zadanie zaplanowane o nazwie: Usuwanie indeksów procesów i zadań. 

    Szczegółowy opis w sekcji Zadania zaplanowane


  13. [Opcjonalnie] Dodać zadanie zaplanowane o nazwie: Indeksowanie wskazanych procesów i ich zadań.

    Szczegółowy opis w sekcji Zadania zaplanowane


  14. [Opcjonalne] Dodać zadanie zaplanowane o nazwieIndeksowanie procesów i zadań z widoku.

    Szczegółowy opis w sekcji Zadania zaplanowane

Zadania zaplanowane

  1. Indeksowanie procesów i zadań

    Zadanie posiada parametr "Rozmiar części", który odpowiada za dzielenie indeksowanych danych. Manipulując nim można mieć wpływ na szybkość wykonywania zadania.

    Zadanie po przetworzeniu każdej z części zapisuje w parametrze zadania "ID ostatniego zaindeksowanego zadania" ID ostatniego zaindeksowanego zadania z paczki. W przypadku wystąpienia błędu podczas wykonywania zadania i po jego ponownym uruchomieniu zadanie wznowi indeksowanie od ID procesu zapisanego w parametrze. W celu zresetowania zadania, należy jako wartość parametru podać 0. Po pomyślnym wykonaniu zadania wartość parametru jest ustawiana na 0.

    Zadanie posiada mechanizm powtarzania indeksowania danych w Elasticu (w przypadku np. wystąpienia problemów z połączeniem). Parametr "Ilość ponownych prób" określa ile razy będzia powtarzana próba wysłania danych do Elastica, a "Czas oczekiwania na ponowną próbę"  określa czas między kolejnymi próbami.

    Parametr Maksymalny czas indeksowania pozwala określić jak długo maksymalnie ma wykonywać się zadanie (w godzinach). Domyślna wartość to 96 godzin.

    Parametr Usuwaj indeksy decyduje, czy przed rozpoczęciem indeksowania usunąć wszystkie indeksy (przy pierwszym uruchomieniu zadania).

    Parametr Dezaktywuj po sukcesie jest pomocny w przypadku uruchamiania zadania w interwałach. Po zakończeniu indeksowania zadanie jest dezaktywowane.


  2. Usuwanie indeksów procesów i zadań

    Zadanie zaleca się uruchamiać przy każdej potrzebie przeindeksowania procesów i zadań (przed uruchomieniem powyżej opisanego zadania). Zadanie usuwa wszystkie indeksu w Elasticsearch i nie powinno być uruchamiane jako cykliczne.

  3. Indeksowanie brakujących procesów i zadań

    Zadanie indeksuje procesy/zadania, niezaindeksowane w Elasticsearch np. z powodu problemów z połączeniem z Elasticiem. Zadanie powinno być ustawione jako cykliczne.

    Zadanie sprawdza czy w tabeli pm_elastic_missing_docs są jakiekolwiek wpisy, jeśli tak to następuje próba ich ponownego zaindeksowania w Elasticsearch. Pożądanym stanem jest pusta wcześniej wspomniana tabela.


  4. Indeksowanie wskazanych procesów i ich zadań

    Zadanie indeksuje tylko wskazane procesy wraz z ich zadaniami poprzez podanie listy definicji procesów.

    Parametr Lista definicji procesów pozwala określić listę definicji procesów do indeksowania w formacie: id_pakietu.id_definicja_zadania.

    Pozostałe parametry zadania są analogiczne jak w zadaniu Indeksowanie procesów i zadań.
     

  5. Indeksowanie procesów i zadań z widoku

    Zadanie indeksuje procesy i zadania, które są zwracane przez podany jako parametr zadania widok. Jeśli widok zwraca zadania to indeksowane są również procesy tych zadań, a jeśli zwraca procesy to indeksowane są wszystkie zadania tych procesów.

    Parametr Bufor widoku wpływa na rozmiar strony przetwarzanego widoku.

    Pozostałe parametry zadania są analogiczne jak w zadaniu Indeksowanie procesów i zadań.
     

  6. Zmiana loginu w Elasticsearch
    Zadanie może zostać użyte w przypadku niepowodzenia zmiany loginu użytkownika w Elasticsearch, przy użyciu mechanizmu uruchamianego podczas edycji użytkownika w systemie (np. login został zmieniony w bazie danych, a w Elasticu nie).
    Jako parametry podajemy stary i nowy login użytkownika.

Parametry systemowe

  1. ElasticEnabled - ma wpływ na wykorzystanie Elastica przy wyszukiwaniu procesów i zadań (procesy i zadania są indeksowane).
  2. ElasticCompletedActivitiesCacheExpTime - określa przez jaki czas (w sekundach) zadania znajdują się w cache po akceptacji. Cache jest przydatny w przypadku dłuższego oczekiwania na zaindeksowanie akceptacji w Elasticu (jeśli zadanie się w nim znajduje, to jest ukrywane na widoku jako zadanie do akceptacji).
  3. ElasticMaxInnerResultWindow - określa ilość możliwych do zaindeksowania/wyświetlenia wierszy tabel dla Elastic'a.
  4. ElasticMaxResultWindow - określa wielkość okna wyszukiwania w Elastic'u, czyli maksymalną ilość wyników wyszukiwania. Wartość parametru jest przesyłana do Elastic'a w trakcie zadania zaplanowanego indeksowania dokumentów.
  5. ElasticRequestTimeout - określa maksymalny czas połączenia i zapytania w Elasticsearch (w sekundach).

Rekomendacje sprzętowe

  1. Zalecane jest stosowanie dysków SSD na maszynie, gdzie znajduje się usługa Elastic.
  2. Ilość pamięci RAM to minimum 8GB. Zaleca się, by pamięć RAM wynosiła 16-64GB. Należy zwrócić uwagę jaką pamięcią dysponuje kontener Elastica.
  3. Jeśli usługa Elastica znajduje się w innej lokalizacji niż system Plusworkflow należy umożliwić połączenie o jak największej przepustowości pomiędzy nimi.

    Elastic na środowisku produkcyjnym

    W przypadku używania ElasticSearch na środowisku produkcyjnym zaleca się ustawić vm.max_map_count na co najmniej 262144

    Linux:
    grep vm.max_map_count /etc/sysctl.conf

    sysctl -w vm.max_map_count=262144

     

 

  • No labels