From 9adab95c24768fedda7525fa839741f3259e8214 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Mon, 12 Jun 2023 10:47:49 +0200 Subject: [PATCH] added config and documentation Issue 183 --- docs/imixs-archive-exporter-prometheus.png | Bin 0 -> 65078 bytes docs/imixs-archive-exporter-screen.png | Bin 0 -> 80123 bytes imixs-archive-exporter/README.md | 79 +++++++++----- .../docker-compose-dev.yml | 54 +++++----- .../docker-compose-monitor.yml | 94 ++++++++++++++++ imixs-archive-exporter/docker-compose.yml | 102 +++++++++++++++--- .../docker/configuration/prometheus.yml | 28 +++++ .../export/services/SchedulerService.java | 7 +- 8 files changed, 291 insertions(+), 73 deletions(-) create mode 100644 docs/imixs-archive-exporter-prometheus.png create mode 100644 docs/imixs-archive-exporter-screen.png rename docker-compose-test.yml => imixs-archive-exporter/docker-compose-dev.yml (66%) create mode 100644 imixs-archive-exporter/docker-compose-monitor.yml create mode 100644 imixs-archive-exporter/docker/configuration/prometheus.yml diff --git a/docs/imixs-archive-exporter-prometheus.png b/docs/imixs-archive-exporter-prometheus.png new file mode 100644 index 0000000000000000000000000000000000000000..398c88b110094666615978eb4ec1f0e37c01c900 GIT binary patch literal 65078 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%0DKHIR&J~JT>Kfa5b9Hxd>%|HR#kyV$I(S1O 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 literal 0 HcmV?d00001 diff --git a/docs/imixs-archive-exporter-screen.png b/docs/imixs-archive-exporter-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e488f3c014741504c22de74247c7dfd56cb4f5 GIT binary patch literal 80123 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 L$M&>nS>%5Jo2MZ3 literal 0 HcmV?d00001 diff --git a/imixs-archive-exporter/README.md b/imixs-archive-exporter/README.md index 407ee8f..c85f4a4 100644 --- a/imixs-archive-exporter/README.md +++ b/imixs-archive-exporter/README.md @@ -2,49 +2,70 @@ The _Imixs-Archive-Exporter Service_ is a microservice to export documents form a Imixs-Workflow data into an external storage like a FTP server or a local filesystem. This export service is decoupled from the a Imixs-Workflow Instance and can be run in a independent server environment. You can run this microservice on different hardware or in a external cluster. - + -# Configuration +The Exporter Service can be run as an independent Microservice connecting to an Imixs-Workflow Instance. The exporter processes EventLog entries generated by the Workflow Instance to store file attachments into a separate data source like a local filesystem or a FTP server. -The Exporter Service can be run in a container environment. To connect the exporter service with your workflow instance the following environment parameters are mandatory: +# Export EventLog Entries - WORKFLOW_SERVICE_ENDPOINT: [REST-API-ENDPOINT-OF-WORKFLOW-INSTANCE] - WORKFLOW_SERVICE_USER: [BACKUP-USER] - WORKFLOW_SERVICE_PASSWORD: [PASSWORD] - WORKFLOW_SERVICE_AUTHMETHOD: [AUTHMETHOD] +The Imixs-Archive-Exporter is controlled by corresponding [EventLog Entries](https://www.imixs.org/doc/engine/eventlogservice.html). An EventLog entity describes a unique event created during the processing life-cycle of a workitem or the update life-cycle of a Document. An eventLog entry for the Imixs-Archive-Exporter can be created by a BPMN Event result: - EXPORT_PATH: [DIRECTORY] - EXPORT_FTP_HOST: [FTP-SERVER-ADDRESS] - EXPORT_FTP_PORT: "21" - EXPORT_FTP_USER: [USER] - EXPORT_FTP_PASSWORD: [PASSWORD] +```xml + + $uniqueid + 60000 + + my-documents/ + + +``` - EVENTLOG_TOPIC : "file.export" (default topic) - EVENTLOG_DEADLOCK: 10000 (default timeout) +On each corresponding worklfow event a new event log entry `file.export` will be created. The Imixs-Archive-Exporter periodically check this event log entries and exports the corresponding files into a configured data space. -**Note:** The EXPORT-USER must have manager access. +# Configuration + +The Exporter Service can be run in a container environment. To connect the exporter service can be configured via environment variables: + +| Environment Param | Description | Example | +| --------------------------- | ------------------------------------------------------------------------------------ | ----------------------- | +| WORKFLOW_SERVICE_ENDPOINT | The Rest-API endpoint of a Imixs Workflow Instance providing export eventLog entries | http://my-host:8080/api | +| WORKFLOW_SERVICE_USER | Workflow user to access the Workflow Instance. This user must have manager access. | | +| WORKFLOW_SERVICE_PASSWORD | Workflow user password | | +| WORKFLOW_SERVICE_AUTHMETHOD | Authentication method (form/basic) | form | +| EVENTLOG_TOPIC | The EventLog topic (default = file.export), can be overwritten | file.export | +| EVENTLOG_DEADLOCK | EventLog timeout in ms (default = 60000) | | +| EXPORT_PATH | Target directory to write files | | The following environment variables are optional and depend on the Jakarta EE Runtime: -- METRICS_ENDPOINT = endpoint for metrics API (default = http://localhost:9990/metrics) -- HEALTH_ENDPOINT = endpoint for health API (default = http://localhost:9990/health) +| Environment Param | Description | Example | +| ------------------- | --------------------------- | ----------------------------- | +| METRICS_ENDPOINT | endpoint for metrics API | http://localhost:9990/metrics | +| HEALTH_ENDPOINT | endpoint for health API | http://localhost:9990/health | +| EXPORT_FTP_HOST | Optional: FTP Server host | my-ftp-server | +| EXPORT_FTP_PORT | Optional: FTP Server port | 21 | +| EXPORT_FTP_USER | Optional: FTP user | | +| EXPORT_FTP_PASSWORD | Optional: FTP user password | | -To connect a Imixs-Workflow instance with the Exporter Service you need to add the Imixs-Archive API as a dependency. +The Imixs-Workflow instance is not needed to be configured. Only a service user account need to be provided. -```xml - - org.imixs.workflow - imixs-archive-api - ${org.imixs.archive.version} - provided - -``` +# Monitoring + +The Imixs-Archive-Exporter provides a Health and Metrics Endpoint that can be used to monitor the status of the service. + +The Health-Check endpoint 'http://localhost:9991/health' indicates if the server and exporter service are running. + +The Metric endpoint `http://localhost:9991/metric` provides detailed information about the processing status. The metrics are provided in a prometeus format and can be analyzed with corresponding Tools like Grafana. + +To run an example with A Prometeus and Grafana Service see the Docker-Compose Example `docker-compose-monitor.yml`. You can start the example with + + $ docker-compose -f docker/docker-compose-monitor.yml -Next set the environment parameter `backup.service.endpoint` to activate the backup. +The Prometeus Dashboard can be loaded via : http://localhost:9090 - EXPORT_SERVICE_ENDPOINT: [REST-API-ENDPOINT-OF-EXPORTSERVICE] + -On each save event a new event log entry `snapshot.export` will be created. The backup Service periodically check this event log entries and stores the corresponding snapshot into the backup space. +The Grafana Dashboard can be loaded via : http://localhost:3000/login # Development diff --git a/docker-compose-test.yml b/imixs-archive-exporter/docker-compose-dev.yml similarity index 66% rename from docker-compose-test.yml rename to imixs-archive-exporter/docker-compose-dev.yml index df11e3b..db9690b 100644 --- a/docker-compose-test.yml +++ b/imixs-archive-exporter/docker-compose-dev.yml @@ -59,37 +59,37 @@ services: - "8788:8787" - "9991:9990" volumes: - - ./imixs-archive-exporter/docker/deployments:/opt/jboss/wildfly/standalone/deployments/ + - ./docker/deployments:/opt/jboss/wildfly/standalone/deployments/ ################## # Backup Service ################## - imixsbackup-app: - image: imixs/imixs-archive-backup:latest - environment: - WILDFLY_PASS: adminadmin - DEBUG: "true" - - # EXAMPLE SETUP - WORKFLOW_SERVICE_ENDPOINT: "http://imixs-office:8080/api" - WORKFLOW_SERVICE_USER: "dataservice" - WORKFLOW_SERVICE_PASSWORD: "adminadmin" - WORKFLOW_SERVICE_AUTHMETHOD: "form" - - EXPORT_FTP_HOST: "ftp.storage.foo" - EXPORT_FTP_PATH: "/test/backup-service" - EXPORT_FTP_PORT: "21" - EXPORT_FTP_USER: "" - EXPORT_FTP_PASSWORD: "" - - METRICS_ENDPOINT: "http://localhost:9992/metrics" - HEALTH_ENDPOINT: "http://localhost:9992/health" - ports: - - "8082:8080" - - "8789:8787" - - "9992:9990" - volumes: - - ./imixs-archive-backup/docker/deployments:/opt/jboss/wildfly/standalone/deployments/ + #imixsbackup-app: + # image: imixs/imixs-archive-backup:latest + # environment: + # WILDFLY_PASS: adminadmin + # DEBUG: "true" + # + # # EXAMPLE SETUP + # WORKFLOW_SERVICE_ENDPOINT: "http://imixs-office:8080/api" + # WORKFLOW_SERVICE_USER: "dataservice" + # WORKFLOW_SERVICE_PASSWORD: "adminadmin" + # WORKFLOW_SERVICE_AUTHMETHOD: "form" + # + # EXPORT_FTP_HOST: "ftp.storage.foo" + # EXPORT_FTP_PATH: "/test/backup-service" + # EXPORT_FTP_PORT: "21" + # EXPORT_FTP_USER: "" + # EXPORT_FTP_PASSWORD: "" + # + # METRICS_ENDPOINT: "http://localhost:9992/metrics" + # HEALTH_ENDPOINT: "http://localhost:9992/health" + # ports: + # - "8082:8080" + # - "8789:8787" + # - "9992:9990" + # volumes: + # - ./imixs-archive-backup/docker/deployments:/opt/jboss/wildfly/standalone/deployments/ ################## # Admin Client diff --git a/imixs-archive-exporter/docker-compose-monitor.yml b/imixs-archive-exporter/docker-compose-monitor.yml new file mode 100644 index 0000000..08aeb59 --- /dev/null +++ b/imixs-archive-exporter/docker-compose-monitor.yml @@ -0,0 +1,94 @@ +version: "3" +services: + ################## + # Database + ################## + db: + image: postgres:9.6.1 + environment: + POSTGRES_PASSWORD: adminadmin + POSTGRES_DB: office + volumes: + - dbdata:/var/lib/postgresql/data + + ################## + # Imixs-Office-Worklfow + ################## + imixs-office: + image: imixs/imixs-office-workflow:latest + depends_on: + - db + environment: + JAVA_OPTS: "-Dnashorn.args=--no-deprecation-warning" + POSTGRES_USER: "postgres" + POSTGRES_PASSWORD: "adminadmin" + POSTGRES_CONNECTION: "jdbc:postgresql://db/office" + TZ: "Europe/Berlin" + MAILGATEWAY: "localhost" + ports: + - "8080:8080" + - "8787:8787" + - "9990:9990" + + ################## + # Exporter Service + ################## + imixsexporter-app: + image: imixs/imixs-archive-exporter:latest + environment: + WILDFLY_PASS: adminadmin + DEBUG: "true" + + # EXAMPLE SETUP + WORKFLOW_SERVICE_ENDPOINT: "http://imixs-office:8080/api" + WORKFLOW_SERVICE_USER: "dataservice" + WORKFLOW_SERVICE_PASSWORD: "adminadmin" + WORKFLOW_SERVICE_AUTHMETHOD: "form" + + METRICS_ENDPOINT: "http://localhost:9991/metrics" + HEALTH_ENDPOINT: "http://localhost:9991/health" + # Optional FTP Export + #EXPORT_FTP_HOST: "ftp.storage.foo" + #EXPORT_FTP_PATH: "/test/export-service/" + #EXPORT_FTP_PORT: "21" + #EXPORT_FTP_USER: "" + #EXPORT_FTP_PASSWORD: "" + EXPORT_PATH: "/opt/jboss/wildfly/test-export" + ports: + - "8081:8080" + - "8788:8787" + - "9991:9990" + + + ################## + # Prometheus + ################## + prometheus: + image: prom/prometheus:latest + ports: + - "9090:9090" + volumes: + - ./docker/configuration/prometheus.yml:/etc/prometheus/prometheus.yml + - prometheusdata:/prometheus/ + + ################## + # Grafana + ################## + grafana: + image: grafana/grafana:latest + ports: + - "3000:3000" + + + + ################## + # Admin Client + ################## + #imixsadmin: + # image: imixs/imixs-admin + # ports: + # - "8888:8080" + +volumes: + dbdata: + prometheusdata: \ No newline at end of file diff --git a/imixs-archive-exporter/docker-compose.yml b/imixs-archive-exporter/docker-compose.yml index 225ab5f..a453574 100644 --- a/imixs-archive-exporter/docker-compose.yml +++ b/imixs-archive-exporter/docker-compose.yml @@ -1,5 +1,38 @@ version: "3" services: + ################## + # Database + ################## + db: + image: postgres:9.6.1 + environment: + POSTGRES_PASSWORD: adminadmin + POSTGRES_DB: office + volumes: + - dbdata:/var/lib/postgresql/data + + ################## + # Imixs-Office-Worklfow + ################## + imixs-office: + image: imixs/imixs-office-workflow:latest + depends_on: + - db + environment: + JAVA_OPTS: "-Dnashorn.args=--no-deprecation-warning" + POSTGRES_USER: "postgres" + POSTGRES_PASSWORD: "adminadmin" + POSTGRES_CONNECTION: "jdbc:postgresql://db/office" + TZ: "Europe/Berlin" + MAILGATEWAY: "localhost" + ports: + - "8080:8080" + - "8787:8787" + - "9990:9990" + + ################## + # Exporter Service + ################## imixsexporter-app: image: imixs/imixs-archive-exporter:latest environment: @@ -7,19 +40,62 @@ services: DEBUG: "true" # EXAMPLE SETUP - WORKFLOW_SERVICE_ENDPOINT: "http://app:8080/api" - WORKFLOW_SERVICE_USER: test - WORKFLOW_SERVICE_PASSWORD: "" + WORKFLOW_SERVICE_ENDPOINT: "http://imixs-office:8080/api" + WORKFLOW_SERVICE_USER: "dataservice" + WORKFLOW_SERVICE_PASSWORD: "adminadmin" WORKFLOW_SERVICE_AUTHMETHOD: "form" - EXPORT_FTP_HOST: "ftp.storage.foo" - EXPORT_FTP_PATH: "/test/" - EXPORT_FTP_PORT: "21" - EXPORT_FTP_USER: "" - EXPORT_FTP_PASSWORD: "" + METRICS_ENDPOINT: "http://localhost:9991/metrics" + HEALTH_ENDPOINT: "http://localhost:9991/health" + # Optional FTP Export + #EXPORT_FTP_HOST: "ftp.storage.foo" + #EXPORT_FTP_PATH: "/test/export-service/" + #EXPORT_FTP_PORT: "21" + #EXPORT_FTP_USER: "" + #EXPORT_FTP_PASSWORD: "" + EXPORT_PATH: "/opt/jboss/wildfly/test-export" ports: - - "8080:8080" - - "8787:8787" - - "9990:9990" - volumes: - - ./docker/deployments:/opt/jboss/wildfly/standalone/deployments/ + - "8081:8080" + - "8788:8787" + - "9991:9990" + + ################## + # Backup Service + ################## + #imixsbackup-app: + # image: imixs/imixs-archive-backup:latest + # environment: + # WILDFLY_PASS: adminadmin + # DEBUG: "true" + # + # # EXAMPLE SETUP + # WORKFLOW_SERVICE_ENDPOINT: "http://imixs-office:8080/api" + # WORKFLOW_SERVICE_USER: "dataservice" + # WORKFLOW_SERVICE_PASSWORD: "adminadmin" + # WORKFLOW_SERVICE_AUTHMETHOD: "form" + # + # EXPORT_FTP_HOST: "ftp.storage.foo" + # EXPORT_FTP_PATH: "/test/backup-service" + # EXPORT_FTP_PORT: "21" + # EXPORT_FTP_USER: "" + # EXPORT_FTP_PASSWORD: "" + # + # METRICS_ENDPOINT: "http://localhost:9992/metrics" + # HEALTH_ENDPOINT: "http://localhost:9992/health" + # ports: + # - "8082:8080" + # - "8789:8787" + # - "9992:9990" + # volumes: + # - ./imixs-archive-backup/docker/deployments:/opt/jboss/wildfly/standalone/deployments/ + + ################## + # Admin Client + ################## + imixsadmin: + image: imixs/imixs-admin + ports: + - "8888:8080" + +volumes: + dbdata: diff --git a/imixs-archive-exporter/docker/configuration/prometheus.yml b/imixs-archive-exporter/docker/configuration/prometheus.yml new file mode 100644 index 0000000..e8fc23e --- /dev/null +++ b/imixs-archive-exporter/docker/configuration/prometheus.yml @@ -0,0 +1,28 @@ +global: + scrape_interval: 15s # By default, scrape targets every 15 seconds. + + # Attach these labels to any time series or alerts when communicating with + # external systems (federation, remote storage, Alertmanager). + external_labels: + monitor: "imixs-monitor" + +scrape_configs: + # Prometheus itself + - job_name: "prometheus" + scrape_interval: 5s + static_configs: + - targets: ["localhost:9090"] + + # Imixs-Office-Workflow Job (Wildfly Metrics) + - job_name: "imixs-office-workflow" + scrape_interval: 5s + metrics_path: /metrics + static_configs: + - targets: ["imixs-office:9990"] + + # Imixs-Export Job (Wildfly Metrics) + - job_name: "imixs-archive-exporter" + scrape_interval: 5s + metrics_path: /metrics + static_configs: + - targets: ["imixsexporter-app:9990"] diff --git a/imixs-archive-exporter/src/main/java/org/imixs/archive/export/services/SchedulerService.java b/imixs-archive-exporter/src/main/java/org/imixs/archive/export/services/SchedulerService.java index f8c9c10..81b4550 100644 --- a/imixs-archive-exporter/src/main/java/org/imixs/archive/export/services/SchedulerService.java +++ b/imixs-archive-exporter/src/main/java/org/imixs/archive/export/services/SchedulerService.java @@ -253,13 +253,12 @@ public void onTimeout(jakarta.ejb.Timer _timer) { // finally remove the event log entry... eventLogClient.deleteEventLogEntry(id); - metricRegistry.counter("application_org_imixs_archive_export_services_SchedulerService_events") - .inc(); + metricRegistry.counter("org_imixs_archive_export_services_SchedulerService_events").inc(); } catch (InvalidAccessException | EJBException | ExportException | RestAPIException e) { // we also catch EJBExceptions here because we do not want to cancel the // ManagedScheduledExecutorService logService.warning("ExportEvent " + id + " failed: " + e.getMessage()); - metricRegistry.counter("application_org_imixs_archive_export_SchedulerService_errors").inc(); + metricRegistry.counter("org_imixs_archive_export_SchedulerService_errors").inc(); errors++; // release lock eventLogClient.unlockEventLogEntry(id); @@ -275,7 +274,7 @@ public void onTimeout(jakarta.ejb.Timer _timer) { } catch (InvalidAccessException | EJBException | RestAPIException e) { logService.severe("processing EventLog failed: " + e.getMessage()); - metricRegistry.counter("application_org_imixs_archive_export_SchedulerService_errors").inc(); + metricRegistry.counter("org_imixs_archive_export_SchedulerService_errors").inc(); } }