Wymagania
- Wymagana jest usługa Elasticsearch w wersji 7 lub wyższej (uruchamiana w poniższej sekcji Konfiguracja i punkcie 3).
Konfiguracja
- Wymagana jest instalacja Dockera wraz z Docker Compose.
- W repozytorium kodu (lub docker-compose.yml) plusworkflow/plusworkflow-core znajduje się docker-compose.yml do uruchomienia elastica i Kibany lokalnie.
Będąc w lokalizacji powyższego pliku docker-compose.yml należy wywołać:
docker compose up
Trzeba ustawić flagę w experimental.properties:
elasticProcessSearch=true
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=
- 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, ", *, \, <, |, ,, >, /, ? 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.- Włączyć parametr systemowy ElasticEnabled (jeśli istnieje)
- Dodać zadanie zaplanowane o nazwie: Indeksowanie procesów zadań. Po jego uruchomieniu zastaną zaindeksowane wszystkie procesy i zadania.
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.
Zadnie po przetworzeniu każdej z części zapisuje w parametrze systemowym ElasticLastIndexedProcessObjectId ID ostatniego zaindeksowanego procesu 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.
Obsługa Kibany
- Kibana uruchomiona z powyższej konfiguracji dostępna jest pod adresem: http://localhost:5601/ Dane dostępowe takie jak w elastic.properties powyżej.
Przy pierwszym uruchomieniu Kibany trzeba ustawić patterny dla indeksów (process* dla procesów i activity* dla zadań).
- Zaindeksowane dokumenty przeglądamy w zakładce Discovery.
- W przypadku problemów ze zgodnością danych w elasticu (np. po zmianie typu jakiegoś indeksowanego pola) należy przejść do:
Management -> Stack Management -> IndexManagement
zaznaczyć wszystko (Include rollup indices i Include hidden indices muszą być odznaczone) i wybrać delete indices. Następnie trzeba przeindeksować wszystkie dokumenty zadaniem zaplanowanym.
W przypadku wystąpienia błędu:
Validation Failed: 1: this action would add [2] shards, but this cluster currently has [1000]/[1000] maximum normal shards open;
Należy zwiększyć maksymalny limit aktywnych shard'ów z poziomu zakładki Management -> Dev Tools wywołując:
PUT /_cluster/settings { "persistent" : { "cluster.max_shards_per_node": "2000" } }
- Usuwanie wiele indeksów na raz
Obsługa Dockera
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
Jeżeli chcemy utworzyć kontenery bez wyświetlania logów, dodajemy komendę -d
docker compose up -d
Aby wyświetlić status kontenerów należy wykonać:
docker stats
Uwagi
- Po usunięciu/anulowaniu procesu lub zawieszeniu/anulowaniu/przywróceniu zadania z poziomu widoku wyników wyszukiwania daną mogą nie być spójne, należy ponowne wyszukać.
- Wyszukiwanie zadań z użyciem pól związanych z terminami ostatecznymi nie wyszukuje tylko zadań z terminami ostatecznymi.
- Zmienne tabelaryczne są wyświetlane wyłącznie w ramach jednego wiersza.