Harvester
Allgemeines¶
Der InGrid Harvester ist eine eigenständige Softwarekomponente, die Daten aus diversen Quellen „erntet“ und in einem Speicher, den Elasticsearch-Indizes, zur weiteren Verarbeitung bereitstellt. Dadurch wird sichergestellt, dass die Daten jederzeit in einem einheitlichen Format verfügbar sind.
Leitfaden¶
Sie haben die Installation bereits abgeschlossen? Diese Leitfaden könnten Sie interessieren.
-
Harvester einrichten
Sie haben die Installation vom Harvester abgeschlossen?
Dieser Leitfaden begleitet Sie beim finalen Einrichtungsprozess.
-
CSW Harvester Beispiel
Sie wollen einen Harvester-Prozess aufsetzen?
Dieser Leitfaden begleitet Sie bei dem Aufsetzen eines CSW Harvesters.
-
Benutzeroberfläche
Interesse an der Benutzeroberfläche?
Dieser Leitfaden bietet Einblicke in Bediehnung und Überwachung von Harvester-Prozessen.
Systemvoraussetzungen¶
Systembestandteil | Anforderung | |
---|---|---|
Hardware | Arbeitsspeicher | 2 GB RAM |
Festplattenspeicher | 10 GB frei | |
Prozessor | Dual Core CPU | |
Software | Java | Java 17 |
Node.js | Version 20 | |
Elasticsearch | Version 8.x | |
PostgreSQL | Version 13 oder höher |
Installation¶
Info
Neben dem Harvester muss zusätzlich eine Datenbank und Elasticsearch eingerichtet werden.
Die Installation des Harvester kann mit Docker, per RPM (in Arbeit) oder direkt aus dem github-Repository erfolgen. Im Folgenden sind Beispiele und Anleitungen dazu aufgelistet.
Docker¶
-
Docker-Image
Zur Installation kann das folgende Docker-Image verwendet werden:
services:
harvester:
image: docker-registry.wemove.com/ingrid-harvester:latest
restart: unless-stopped
environment:
- NODE_ENV=production
#- BASE_URL=/harvester/
- IMPORTER_PROFILE=ingrid
- ADMIN_PASSWORD=admin
- ELASTIC_URL=http://elastic:9200
- ELASTIC_VERSION=8
- ELASTIC_USER=elastic
- ELASTIC_PASSWORD=
- ELASTIC_ALIAS=harvester-alias
- ELASTIC_PREFIX=harvester_
- DB_URL=postgres
- DB_PORT=5432
- DB_NAME=harvester
- DB_USER=admin
- DB_PASSWORD=admin
volumes:
- /etc/localtime:/etc/localtime:ro
- ./harvester/config/config.json:/opt/ingrid/harvester/server/config.json
- ./harvester/config/client_config.json:/opt/ingrid/harvester/server/app/webapp/assets/config.json
- ./harvester/logs:/opt/ingrid/harvester/server/logs
ports:
- 8090:8090
working_dir: /opt/ingrid/harvester/server
command: node app/index.js
networks:
- ingrid-network
postgres:
image: postgres:15.7
restart: unless-stopped
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=harvester
- PGDATA=/pgdata
volumes:
- ./postgres/_data/pgdata:/pgdata
- ./postgres/init-db:/docker-entrypoint-initdb.d
networks:
- ingrid-network
elastic:
image: docker.elastic.co/elasticsearch/elasticsearch:8.14.1
restart: unless-stopped
environment:
- cluster.name=ingrid
- discovery.type=single-node
- cluster.routing.allocation.disk.threshold_enabled=false
- http.host=0.0.0.0
- transport.host=0.0.0.0
- http.cors.enabled=true
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms2g -Xmx2g -Dlog4j2.formatMsgNoLookups=true"
# Hotfix #3292
- "LOG4J_FORMAT_MSG_NO_LOOKUPS=true"
deploy:
resources:
limits:
memory: 3072M
networks:
- ingrid-network
networks:
ingrid-network:
driver: "bridge"
RPM¶
TODO
From Source¶
Um den Harvester direkt auf einem System zu installieren, müssen folgende Vorbedingungen erfüllt sein:
- Elasticsearch (>= v6)
- PostgreSQL (>= v14)
- NodeJS (>= v20)
Die Installation des Harvesters (z.B. nach /opt/ingrid/harvester
) erfolgt dann mit diesen Schritten:
Harvester clonen und bauen¶
git clone https://github.com/informationgrid/ingrid-harvester
cd ingrid-harvester/server
npm ci
npm run build
cd ../client
npm ci
npm run prod
Harvester installieren¶
mkdir -p /opt/ingrid/harvester
cp server/package*.json /opt/ingrid/harvester/
cp -r server/build/* /opt/ingrid/harvester/
cp -r client/dist/webapp /opt/ingrid/harvester/server/app/webapp
cd /opt/ingrid/harvester
npm run install-production
Harvester starten¶
Zuerst eine Datenbank erstellen und die nötigen Umgebungsvariablen für Elasticsearch und PostgreSQL einrichten, siehe Umgebungsvariablen. Danach:
Konfiguration¶
Wenn der InGrid Harvester unter einem Unterpfad (z. B. nicht direkt unter dem Root) erreichbar sein soll, müssen beide der folgenden Einstellungen vorgenommen werden:
BASE_URL
auf den gewünschten Pfad setzen (Umgebungsvariable)contextPath
in der Client-Konfigurationsdatei auf denselben Wert setzen
Zusätzlich müssen entsprechende Einstellungen in nginx vorgenommen werden.
Authentifizierung¶
Benutzer und Passwort wird über die Konfigurationsdatei users.json
gesetzt. Das Admin-Password kann mit der Umgebungsvariable ADMIN_PASSWORD
überschieben werden.
Beispiel für users.json
Konfigurationsdateien¶
In einem Docker-Setup sollten diese Dateien vom Hostsystem in den Container gemappt werden.
Mapping relevanter Dateien
Speicherort der Konfigurationsdatei (Projekt) | Speicherort der Konfigurationsdatei (Docker-Container) | Zweck |
---|---|---|
server/users.json | /opt/ingrid/harvester/server/users.json | Konfiguration von Benutzer und Passwort |
server/config.json | /opt/ingrid/harvester/server/config.json | Konfiguration des Harvester |
server/config-general.json | /opt/ingrid/harvester/server/config-general.json | Allgemeine Einstellungen (Elasticsearch, Postgres, ...) |
server/mappings.json | /opt/ingrid/harvester/server/mappings.json | Mapping der Datenformate |
client/src/assets/config.json | /opt/ingrid/harvester/server/app/webapp/assets/config.json | Einstellungen des Clients |
Umgebungsvariablen¶
Einige allgemeine Einstellungen können auch über Umgebungsvariablen konfiguriert werden. Diese Einstellungen haben Vorrang vor den Konfigurationsdateien.
Alle Umgebungsvariablen im Überblick
Variable | Hinweis |
---|---|
ADMIN_PASSWORD | Admin Passwort zum Überschreiben der Konfigurationsdatei users.json |
DB_CONNECTION_STRING | |
DB_URL | |
DB_PORT | |
DB_NAME | |
DB_USER | |
DB_PASSWORD | |
DEFAULT_CATALOG | Standardkatalog, der verwendet wird, wenn kein spezifischer angegeben ist |
ELASTIC_URL | |
ELASTIC_VERSION | Hauptversion (6, 7 oder 8) |
ELASTIC_USER | |
ELASTIC_PASSWORD | |
ELASTIC_REJECT_UNAUTHORIZED | Ob Verbindungen abgelehnt werden sollen, wenn das Zertifikat ungültig ist |
ELASTIC_INDEX | TODO |
ELASTIC_ALIAS | TODO |
ELASTIC_PREFIX | TODO |
ELASTIC_NUM_SHARDS | TODO |
ELASTIC_NUM_REPLICAS | TODO |
PORTAL_URL | Basis-URL zur Anzeige der Portal-Website (ohne abschließenden Slash) |
PROXY_URL | URL mit Anmeldedaten und Port, falls erforderlich |
ALLOW_ALL_UNAUTHORIZED | Ob alle Verbindungen unabhängig vom SSL-Status erlaubt werden sollen |
IMPORTER_PROFILE | Profil, das für die Anwendung verwendet wird: ingrid, diplanung, mcloud |
BASE_URL | Unterpfad, unter dem der Harvester bereitgestellt wird, wenn nicht unter / |
FAQ¶
Wie richte ich den Harvester final ein, wenn die Installation abgeschlossen ist?
Siehe Leitfaden Harvester einrichten
Wie setze ich einen CSW Harvester auf?
Siehe Leitfaden CSW Harvester
Werde ich benachrichtigt wenn ein Harvester Process fehl schlägt?
Diese Verhalten kann eingerichtet werden.
Im Abschnitt E-Mail Einstellungen vom Leitfaden "Harvester einrichten" können Benachrichtigungen eingerichtet werden.