From 317a9e76f8300e58207c77f568d384b2444b315b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Rodr=C3=ADguez=20Ponce?= Date: Wed, 25 Oct 2023 13:12:36 +0200 Subject: [PATCH] Release GN v4.4.0 (#107) * GN v4.4.0 * Allow to set the application web context path using the new `WEBAPP_CONTEXT_PATH` (defaults to `/geonetwork`) * Move the exploded war to `/opt/geonetwork` * Add a new `GN_CONFIG_PROPERTIES` for passing additional configuration options to GN in the form of Java properties, for example `GN_CONFIG_PROPERTIES=-Dldap.base.provider.url=ldap://ldap:389` * `ES_HOST` is no longer mandatory and now defaults to `localhost` * Update * Java 11 * Fix Config properties * Use OGC API records 4.2.5 for now * Fix OGC API records fail to start because of empty GN database * Move config to JVM args * Add Jetty http forward module for X-Forwarded header. * Move env to variable for future easier configuration of multiple instances. * Jetty / Increase max form keys This is a parameter to customize depending on size of metadata records (eg. many languages or many contacts) * Jetty config / Allows larger form. * Java options to be able to return metrics in Java 11. * Clustering / Add instruction for testing and add a simple load balancer. * Nginx / Add body size parameter and fix hard coded scheme. * Move to traefik. Main idea was to more easily set up load balancing with sticky session. Co-authored-by: Joachim Nielandt * Add health check. Main idea is to avoid errors on some case (eg. OGC API records error starting on an empty database) and start services in order. Co-authored-by: Joachim Nielandt * Readme update for traefik change. * Monitoring / Load traefik log using filebeat. Removing Apache and Nginx config. * Update multiple instances limitations. * Jetty / Update version and fix sending mail on java 11. Co-authored-by: Joachim Nielandt * Add timezone config and use separate schemapublication dir (avoid issue when starting multiple instances using the same data dir - XSD are copied to this folder on startup and copy may clash) --------- Co-authored-by: Francois Prunayre Co-authored-by: Joachim Nielandt Co-authored-by: joachimnielandt --- 4.4.0/Dockerfile | 45 +++ 4.4.0/Dockerfile.local | 54 ++++ 4.4.0/README.md | 244 +++++++++++++++ 4.4.0/catalogue-log-dashboard.ndjson | 11 + 4.4.0/catalogue-log-dashboard.png | Bin 0 -> 142999 bytes 4.4.0/docker-compose.dev.yml | 7 + 4.4.0/docker-compose.monitoring.yml | 31 ++ 4.4.0/docker-compose.yml | 220 ++++++++++++++ 4.4.0/docker-entrypoint.sh | 24 ++ 4.4.0/filebeat/filebeat.yml | 33 ++ 4.4.0/filebeat/modules.d/postgresql.yml | 4 + 4.4.0/filebeat/modules.d/traefik.yml | 4 + .../Filebeat-Postgresql-overview.json | 80 +++++ .../Filebeat-Postgresql-slowlogs.json | 87 ++++++ 4.4.0/jetty/geonetwork_context_template.xml | 17 ++ 4.4.0/metricbeat/metricbeat.yml | 32 ++ 4.4.0/metricbeat/modules.d/postgresql.yml | 10 + .../Metricbeat-postgresql-overview.json | 284 ++++++++++++++++++ 18 files changed, 1187 insertions(+) create mode 100644 4.4.0/Dockerfile create mode 100644 4.4.0/Dockerfile.local create mode 100644 4.4.0/README.md create mode 100644 4.4.0/catalogue-log-dashboard.ndjson create mode 100644 4.4.0/catalogue-log-dashboard.png create mode 100644 4.4.0/docker-compose.dev.yml create mode 100644 4.4.0/docker-compose.monitoring.yml create mode 100644 4.4.0/docker-compose.yml create mode 100755 4.4.0/docker-entrypoint.sh create mode 100644 4.4.0/filebeat/filebeat.yml create mode 100644 4.4.0/filebeat/modules.d/postgresql.yml create mode 100644 4.4.0/filebeat/modules.d/traefik.yml create mode 100644 4.4.0/filebeat/templates/Filebeat-Postgresql-overview.json create mode 100644 4.4.0/filebeat/templates/Filebeat-Postgresql-slowlogs.json create mode 100644 4.4.0/jetty/geonetwork_context_template.xml create mode 100644 4.4.0/metricbeat/metricbeat.yml create mode 100644 4.4.0/metricbeat/modules.d/postgresql.yml create mode 100644 4.4.0/metricbeat/templates/Metricbeat-postgresql-overview.json diff --git a/4.4.0/Dockerfile b/4.4.0/Dockerfile new file mode 100644 index 0000000..a976000 --- /dev/null +++ b/4.4.0/Dockerfile @@ -0,0 +1,45 @@ +FROM jetty:9-jdk11 + +ENV DATA_DIR /catalogue-data +ENV WEBAPP_CONTEXT_PATH /geonetwork +ENV GN_CONFIG_PROPERTIES -Dgeonetwork.dir=${DATA_DIR} \ + -Dgeonetwork.formatter.dir=${DATA_DIR}/data/formatter \ + -Dgeonetwork.schema.dir=/opt/geonetwork/WEB-INF/data/config/schema_plugins \ + -Dgeonetwork.indexConfig.dir=/opt/geonetwork/WEB-INF/data/config/index + + +ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true \ + -Xms512M -Xss512M -Xmx2G -XX:+UseConcMarkSweepGC + +USER root +RUN apt-get -y update && \ + apt-get -y install --no-install-recommends \ + curl \ + unzip && \ + rm -rf /var/lib/apt/lists/* && \ + mkdir -p ${DATA_DIR} && \ + chown -R jetty:jetty ${DATA_DIR} && \ + mkdir -p /opt/geonetwork && \ + chown -R jetty:jetty /opt/geonetwork + +USER jetty +ENV GN_FILE geonetwork.war +ENV GN_VERSION 4.4.0 +ENV GN_DOWNLOAD_MD5 36638cfd380942801ff2038792ee54a9 + +RUN cd /opt/geonetwork/ && \ + curl -fSL -o geonetwork.war \ + https://sourceforge.net/projects/geonetwork/files/GeoNetwork_opensource/v${GN_VERSION}/${GN_FILE}/download && \ + echo "${GN_DOWNLOAD_MD5} *geonetwork.war" | md5sum -c && \ + unzip -q geonetwork.war && \ + rm geonetwork.war + +COPY jetty/geonetwork_context_template.xml /usr/local/share/geonetwork/geonetwork_context_template.xml +COPY ./docker-entrypoint.sh /geonetwork-entrypoint.sh + +RUN java -jar /usr/local/jetty/start.jar --create-startd --add-module=http-forwarded + +ENTRYPOINT ["/geonetwork-entrypoint.sh"] +CMD ["java","-jar","/usr/local/jetty/start.jar"] + +VOLUME [ "${DATA_DIR}" ] diff --git a/4.4.0/Dockerfile.local b/4.4.0/Dockerfile.local new file mode 100644 index 0000000..bf9778f --- /dev/null +++ b/4.4.0/Dockerfile.local @@ -0,0 +1,54 @@ +FROM jetty:9-jdk11 as base + +USER root +RUN apt-get update && apt-get install -y --no-install-recommends unzip \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /opt/geonetwork \ + && chown -R jetty:jetty /opt/geonetwork + +COPY geonetwork.war /tmp + +USER jetty +RUN unzip /tmp/geonetwork.war -d /opt/geonetwork + + + +FROM jetty:9-jdk11 as final + +ENV GN_FILE geonetwork.war +ENV GN_VERSION 4.4.0 + +ENV DATA_DIR /catalogue-data +ENV WEBAPP_CONTEXT_PATH /geonetwork + + +# This variable can be used to define additional config options in the way of Java System properties +# (e.g. "-Des.protocol=http -Des.port=9200 -Des.index.records=geo-records") +ENV GN_CONFIG_PROPERTIES -Dgeonetwork.dir=${DATA_DIR} \ + -Dgeonetwork.formatter.dir=${DATA_DIR}/data/formatter \ + -Dgeonetwork.schema.dir=/opt/geonetwork/WEB-INF/data/config/schema_plugins \ + -Dgeonetwork.indexConfig.dir=/opt/geonetwork/WEB-INF/data/config/index + +# JAVA_OPTS can be used to configue JVM specific options, like max memory, debugger port and method... +ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true \ + -Xms512M -Xss512M -Xmx2G -XX:+UseConcMarkSweepGC + +USER root +RUN apt-get update && apt-get install -y --no-install-recommends unzip \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +RUN mkdir -p /catalogue-data \ + && chown -R jetty:jetty /catalogue-data + +USER jetty + +COPY jetty/geonetwork_context_template.xml /usr/local/share/geonetwork/geonetwork_context_template.xml +COPY --from=base /opt/geonetwork /opt/geonetwork + +COPY ./docker-entrypoint.sh /geonetwork-entrypoint.sh + +RUN java -jar /usr/local/jetty/start.jar --create-startd --add-to-start=http-forwarded + +ENTRYPOINT ["/geonetwork-entrypoint.sh"] +CMD ["java","-jar","/usr/local/jetty/start.jar"] diff --git a/4.4.0/README.md b/4.4.0/README.md new file mode 100644 index 0000000..38cb754 --- /dev/null +++ b/4.4.0/README.md @@ -0,0 +1,244 @@ +# Version 4.4.0 + +## Running with integrated Elasticsearch + +1. Clone this repository + +```bash +git clone https://github.com/geonetwork/docker-geonetwork.git +cd docker-geonetwork/4.4.0 +``` + +2. Run the docker-composition from the current directory: + +```bash +docker-compose up +``` + +3. Open http://geonetwork.localhost/geonetwork/ in a browser + +## Build docker image + +If not published, you can build the image locally using: + +```bash +docker build . -t geonetwork:4.4.0 +``` + +## Running with custom geonetwork.war + +This directory includes two Dockerfiles: + +* `Dockerfile` is canonical one used to generate the Docker Hub official +image. It downloads GeoNetwork 4.4.0-0 WAR file from sourceforge. +* `Dockerfile.local` needs a `geonetwork.war` file next to it to build +the image. + +It also includes two docker-compose configuration files.* `docker-compose.yml` uses official GeoNetwork image from Docker Hub. + +* `docker-compose.dev.yml` can be applied to override the image used in +`docker-compose.yml` and build the GeoNetwork image using `Dockerfile.local`. + +### Pre-built image + +To use the pre-built image you can use the `docker-compose.yml` file provided +in this directory: + +```bash +docker-compose up +``` + +### Local image + +To be able to generate an elasticsearch-ready docker image, you will have: + +1. Build your geonetwork.war (https://geonetwork-opensource.org/manuals/trunk/en/maintainer-guide/installing/installing-from-source-code.html#the-quick-way) + +2. Clone this repository + +```bash +git clone https://github.com/geonetwork/docker-geonetwork.git +cd docker-geonetwork/4.4.0 +``` + +3. Get the generated webapp in the current directory, name it `geonetwork.war` + +```shell +cp ../../core-geonetwork/web/target/geonetwork.war . +``` + +4. Run the docker-composition from the current directory: + +```bash +docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build +``` + +5. Open http://geonetwork.localhost/geonetwork/ in a browser + +## Running with a custom Database + +See "Connecting to a postgres database" https://hub.docker.com/_/geonetwork + +```bash +docker run --name geonetwork -d -p 8080:8080 \ + -e GEONETWORK_DB_TYPE=postgres \ + -e GEONETWORK_DB_HOST=my-db-host \ + -e GEONETWORK_DB_PORT=5434 \ + -e GEONETWORK_DB_USERNAME=postgres \ + -e GEONETWORK_DB_PASSWORD=mysecretpassword \ + -e GEONETWORK_DB_NAME=mydbname \ + geonetwork:4.4.0 +``` + +## Running with remote Elasticsearch + +```bash +docker run --name geonetwork -d -p 8080:8080 \ + -e "GN_CONFIG_PROPERTIES=-Des.host=elasticsearch \ + -Des.protocol=http \ + -Des.port=9200 \ + -Des.url=http://elasticsearch:9200 \ + -Dgeonetwork.ESFeaturesProxy.targetUri=http://elasticsearch:9200/gn-features/{_} " \ + geonetwork:4.4.0 +``` + +If you have error connecting to the remote Elasticsearch, check the configuration in `config/elasticsearch.yml`: + +```yaml +network.host: my-elasticsearch-host +discovery.seed_hosts: [] +``` + +## Running with custom Elasticsearch index names + +Add the following options to `GN_CONFIG_PROPERTIES`: + +```bash +-Des.index.records=geo-records +-Des.index.features=geo-features +-Des.index.searchlogs=geo-searchlogs +-Dgeonetwork.ESFeaturesProxy.targetUri=http://elasticsearch:9200/geo-features/{_} +``` + +## Running with remote Elasticsearch with authentication + +Add the `-Des.username=esUserName -Des.password=esPassword` options to `GN_CONFIG_PROPERTIES`. + +If using the WFS features harvesting, add the +`-Dgeonetwork.ESFeaturesProxy.username=esReadOnlyUsername -Dgeonetwork.ESFeaturesProxy.password=esPassword` options to `GN_CONFIG_PROPERTIES`. + +## Running with remote Kibana + +Add the `-Dgeonetwork.HttpDashboardProxy.targetUri=http://kibana:5601` options to `GN_CONFIG_PROPERTIES`. + +## Running with remote OGC API Records + +Add the `-Dgeonetwork.MicroServicesProxy.targetUri=http://ogc-api-records-service:8080` options to `GN_CONFIG_PROPERTIES`. + +## Running with custom security mode + +Add the `-Dgeonetwork.security.type=` to set the authentication mode. See available security modes in and configuration options in . See also . + +eg. LDAP configuration: + +```bash +-Dgeonetwork.security.type=ldap +-Dldap.host=ldap +-Dldap.port=389 +-Dldap.base=dc=geonetwork-opensource,dc=org +-Dldap.base.dn=dc=geonetwork-opensource,dc=org +-Dldap.security.principal=cn=admin,dc=geonetwork-opensource,dc=org +-Dldap.security.credentials=secret +-Dldap.base.search.base=ou=directory +-Dldap.sync.user.search.base=ou=directory +-Dldap.base.dn.pattern=uid={0},ou=directory +``` + +eg. CAS configuration + +```bash +-Dcas.baseURL=http://localhost:8080/cas +-Dcas.login.url=http://localhost:8080/cas/login +-Dcas.ticket.validator.url=http://cas:8080/cas +-Dgeonetwork.https.url=http://localhost:8080/geonetwork +``` + +## Running with a custom context path + +To run the application in a custom context path, for example in instead of the default use the `WEBAPP_CONTEXT_PATH` environment variable: + +```yaml + environment: + WEBAPP_CONTEXT_PATH: /catalogue +``` + +## Configure the default language + +To configure the default application language and bypass browser language detection when redirecting from the base URL use: + +```bash +-Dlanguage.default=fre +-Dlanguage.forceDefault=true +``` + +## Running behind a proxy + +If the catalogue needs to use proxy for HTTP calls, use Java environment variables: + +```bash +-Dhttp.proxyHost= +-Dhttp.proxyPort= +-Dhttps.proxyHost= +-Dhttps.proxyPort= +-Dhttp.nonProxyHosts= +-Dhttp.proxyUser= +-Dhttp.proxyPassword= +``` + +## Clustering (experimental) + +The clustering mode allows to start more than one GeoNetwork instance. +To enable it use the `scaled` profile. In this mode: + +* only one node will be in charge of the harvester scheduler and process the scheduled harvesting tasks +* any node can take a harvesting task manually triggered from the harvesting console +* webserver is configured with sticky session (ie. a user stay on the same node) + +First, start the main composition which will start all services (including the main node). Then start new instances with: + +```bash +docker-compose --profile scaled up --scale geonetwork-replica=2 -d +``` + +Known limitations: + +* Harvester / Scheduler needs to be refreshed when the database harvester configuration is modified +(the harvesting node refresh the schedule every 2 minutes as a stopgap solution) +* Harvester / Replica can't access the main node harvester log files +* Harvester / Running state is not visible on other nodes +* Settings / When saving application settings, some modules need to be updated: + * log level configuration, + * DOI configuration, + * proxy configuration (use Java environment variable instead of database configuration) +* Thesaurus / Local thesaurus modified in one node are not updated on others. + +## Monitoring + +A composition is also available for monitoring metrics and logs for the webserver and the database. + +First start the composition without monitoring containers. +In Kibana go to `Manage space` and create a `catalogue-monitor` space. +This space will be populated with default dashboards by metricbeat and filebeat. + +Once the space created, use the following to start metricbeat and filebeat: + +```bash +docker-compose -f docker-compose.yml -f docker-compose.monitoring.yml up --build +``` + +Metricbeat and filebeat needs to authenticate to push into Kibana (GeoNetwork is checking access). Adapt password + if needed in configuration files for `setup.kibana.username` and `setup.kibana.password`. + +Once started, sample dashboards analyzing the GeoNetwork API usage are available in `catalogue-log-dashboard.ndjson`. + +![Dashboard](catalogue-log-dashboard.png) diff --git a/4.4.0/catalogue-log-dashboard.ndjson b/4.4.0/catalogue-log-dashboard.ndjson new file mode 100644 index 0000000..8c72fe4 --- /dev/null +++ b/4.4.0/catalogue-log-dashboard.ndjson @@ -0,0 +1,11 @@ +{"attributes":{"columns":["url.original"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"event.category: web\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[],"title":"[Catalogue] Web log","version":1},"id":"d6905850-3636-11eb-b5f1-77e32f760e12","migrationVersion":{"search":"7.4.0"},"references":[{"id":"gn-logs-*","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-04T13:45:20.751Z","version":"WzMwNiwyXQ=="} +{"attributes":{"description":"Number of searches (Elasticsearch or CSW)","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Catalogue searches","uiStateJSON":"{\"vis\":{\"colors\":{\"CSW\":\"#F4D598\",\"Main search\":\"#82B5D8\"}}}","version":1,"visState":"{\"title\":\"Catalogue searches\",\"type\":\"area\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"params\":{\"filters\":[{\"input\":{\"query\":\"url.original : /geonetwork/srv/*/csw*GetRecords*\",\"language\":\"kuery\"},\"label\":\"CSW\"},{\"input\":{\"query\":\"url.original : /geonetwork/srv/api/search/records/_search\",\"language\":\"kuery\"},\"label\":\"Main search\"}]},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":true,\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"top\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}"},"id":"1dbac520-3638-11eb-b5f1-77e32f760e12","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"d6905850-3636-11eb-b5f1-77e32f760e12","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T14:35:36.169Z","version":"WzQ2OSwyXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Logs by level over time [Filebeat PostgreSQL] ECS","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Logs by level over time [Filebeat PostgreSQL] ECS\",\"aggs\":[{\"type\":\"count\",\"enabled\":true,\"params\":{},\"schema\":\"metric\",\"id\":\"1\"},{\"type\":\"date_histogram\",\"enabled\":true,\"params\":{\"extended_bounds\":{},\"interval\":\"auto\",\"field\":\"@timestamp\",\"min_doc_count\":1},\"schema\":\"segment\",\"id\":\"2\"},{\"type\":\"terms\",\"enabled\":true,\"params\":{\"size\":5,\"field\":\"log.level\",\"orderBy\":\"1\",\"order\":\"desc\"},\"schema\":\"group\",\"id\":\"3\"}],\"type\":\"histogram\",\"params\":{\"categoryAxes\":[{\"show\":true,\"type\":\"category\",\"id\":\"CategoryAxis-1\",\"title\":{\"text\":\"@timestamp per month\"},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"style\":{},\"position\":\"bottom\"}],\"legendPosition\":\"right\",\"times\":[],\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"type\":\"histogram\",\"addLegend\":true,\"seriesParams\":[{\"show\":\"true\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"showCircles\":true,\"drawLinesBetweenPoints\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"valueAxis\":\"ValueAxis-1\"}],\"addTimeMarker\":false,\"valueAxes\":[{\"show\":true,\"style\":{},\"type\":\"value\",\"name\":\"LeftAxis-1\",\"title\":{\"text\":\"Count\"},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"id\":\"ValueAxis-1\",\"position\":\"left\"}],\"addTooltip\":true}}"},"id":"3dbd5370-87f3-11e7-ad9c-db80de0bf8d3-ecs","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"PostgreSQL All Logs-ecs","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T13:16:11.669Z","version":"WzIwMiwyXQ=="} +{"attributes":{"description":"If records have been imported from URL, files or created from templates or other records.","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Catalogue record creations","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Catalogue record creations\",\"type\":\"area\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-26m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"params\":{\"filters\":[{\"input\":{\"query\":\"url.original : /*/srv/api/records and http.request.method : POST\",\"language\":\"kuery\"},\"label\":\"Record added from file\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records* and http.request.method : PUT\",\"language\":\"kuery\"},\"label\":\"Record added from URL\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/duplicate*\",\"language\":\"kuery\"},\"label\":\"Record created (or duplicated)\"}]},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":true,\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"top\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}"},"id":"8c4a6160-363a-11eb-b5f1-77e32f760e12","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"d6905850-3636-11eb-b5f1-77e32f760e12","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T14:37:40.534Z","version":"WzQ4OSwyXQ=="} +{"attributes":{"description":"Does not include the default view (which is based on search results).","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Catalogue record views","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Catalogue record views\",\"type\":\"area\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-26m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"params\":{\"filters\":[{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/formatters/xsl-view*\",\"language\":\"kuery\"},\"label\":\"Full view\"},{\"input\":{\"query\":\"url.original : /*/srv/*/csw*GetRecordById*\",\"language\":\"kuery\"},\"label\":\"CSW GetRecordById\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/formatters/pdf*\",\"language\":\"kuery\"},\"label\":\"PDF\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/formatters/zip*\",\"language\":\"kuery\"},\"label\":\"ZIP\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/formatters/xml*\",\"language\":\"kuery\"},\"label\":\"XML\"}]},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":true,\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"top\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}"},"id":"5c0fb0a0-3639-11eb-b5f1-77e32f760e12","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"d6905850-3636-11eb-b5f1-77e32f760e12","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T14:38:45.738Z","version":"WzQ5NSwyXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Catalogue validations","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Catalogue validations\",\"type\":\"area\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-26m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"params\":{\"filters\":[{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/editor*withValidationErrors=true*\",\"language\":\"kuery\"},\"label\":\"Internal validation\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/validate/inspire*\",\"language\":\"kuery\"},\"label\":\"INSPIRE validation\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/validate?*\",\"language\":\"kuery\"},\"label\":\"Internal validation on selection\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/validate/inspire?*\",\"language\":\"kuery\"},\"label\":\"INSPIRE validation on selection\"}]},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":true,\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"top\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}"},"id":"dc184300-363b-11eb-b5f1-77e32f760e12","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"d6905850-3636-11eb-b5f1-77e32f760e12","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T14:42:13.829Z","version":"WzUwNCwyXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Catalogue user authentication","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Catalogue user authentication\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"filters\",\"params\":{\"filters\":[{\"input\":{\"query\":\"url.original : /*/signin*\",\"language\":\"kuery\"},\"label\":\"Number of user authentication\"},{\"input\":{\"query\":\"url.original : /*/signout*\",\"language\":\"kuery\"},\"label\":\"Number of user sign out\"},{\"input\":{\"query\":\"url.original : /*/srv/*/catalog.signin?node=*&failure=true\",\"language\":\"kuery\"},\"label\":\"Authentication failures\"}]},\"schema\":\"group\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"id":"990badc0-3638-11eb-b5f1-77e32f760e12","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"d6905850-3636-11eb-b5f1-77e32f760e12","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T14:41:34.434Z","version":"WzUwMSwyXQ=="} +{"attributes":{"description":"Editing sessions, overview added, online sources ...","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Catalogue edits","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Catalogue edits\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-26m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"params\":{\"filters\":[{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/editor*starteditingsession=yes*\",\"language\":\"kuery\"},\"label\":\"Editing sessions\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/attachments* and http.request.method : POST\",\"language\":\"kuery\"},\"label\":\"Attachements uploaded\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/processes/thumbnail-add*\",\"language\":\"kuery\"},\"label\":\"Overview added\"},{\"input\":{\"query\":\"url.original : /*/srv/api/records/*/processes/onlinesrc-add*\",\"language\":\"kuery\"},\"label\":\"Online resources added\"}]},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":true,\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"top\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}"},"id":"a5f9e440-363b-11eb-b5f1-77e32f760e12","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"d6905850-3636-11eb-b5f1-77e32f760e12","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T14:38:05.413Z","version":"WzQ5MiwyXQ=="} +{"attributes":{"description":"Number of searches, user authentications, editing sessions...","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.9.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"4b751c30-0d64-4dae-883c-3cf564700c2b\"},\"panelIndex\":\"4b751c30-0d64-4dae-883c-3cf564700c2b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.9.2\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"7335f3d2-7428-4804-90d6-04609520060b\"},\"panelIndex\":\"7335f3d2-7428-4804-90d6-04609520060b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.9.2\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"08bc95a8-ff1d-425a-87ab-9281b56a3580\"},\"panelIndex\":\"08bc95a8-ff1d-425a-87ab-9281b56a3580\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.9.2\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"791feb56-2116-4627-840b-7116d2f7092c\"},\"panelIndex\":\"791feb56-2116-4627-840b-7116d2f7092c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.9.2\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"84c7f519-bf1b-45e0-bb65-2a65a90e190b\"},\"panelIndex\":\"84c7f519-bf1b-45e0-bb65-2a65a90e190b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"version\":\"7.9.2\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"f73ea3ce-de93-4fdf-8a9b-20c7ea882c23\"},\"panelIndex\":\"f73ea3ce-de93-4fdf-8a9b-20c7ea882c23\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"}]","timeRestore":false,"title":"Catalogue activities","version":1},"id":"4732f940-363d-11eb-b5f1-77e32f760e12","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"1dbac520-3638-11eb-b5f1-77e32f760e12","name":"panel_0","type":"visualization"},{"id":"8c4a6160-363a-11eb-b5f1-77e32f760e12","name":"panel_1","type":"visualization"},{"id":"5c0fb0a0-3639-11eb-b5f1-77e32f760e12","name":"panel_2","type":"visualization"},{"id":"dc184300-363b-11eb-b5f1-77e32f760e12","name":"panel_3","type":"visualization"},{"id":"990badc0-3638-11eb-b5f1-77e32f760e12","name":"panel_4","type":"visualization"},{"id":"a5f9e440-363b-11eb-b5f1-77e32f760e12","name":"panel_5","type":"visualization"}],"type":"dashboard","updated_at":"2020-12-04T14:30:38.036Z","version":"WzQzNCwyXQ=="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[],\"query\":{\"language\":\"kuery\",\"query\":\"\"}}"},"savedSearchRefName":"search_0","title":"Query count and cumulated duration [Filebeat PostgreSQL] ECS","uiStateJSON":"{\"vis\": {\"colors\": {\"Sum of query duration\": \"#6ED0E0\", \"Number of queries\": \"#0A437C\"}, \"legendOpen\": true}}","version":1,"visState":"{\"title\":\"Query count and cumulated duration [Filebeat PostgreSQL] ECS\",\"aggs\":[{\"type\":\"date_histogram\",\"enabled\":true,\"params\":{\"extended_bounds\":{},\"interval\":\"auto\",\"field\":\"@timestamp\",\"min_doc_count\":1},\"schema\":\"segment\",\"id\":\"3\"},{\"type\":\"count\",\"enabled\":true,\"params\":{\"customLabel\":\"Number of queries\"},\"schema\":\"metric\",\"id\":\"4\"},{\"type\":\"sum\",\"enabled\":true,\"params\":{\"customLabel\":\"Sum of query duration\",\"field\":\"event.duration\"},\"schema\":\"metric\",\"id\":\"2\"}],\"type\":\"histogram\",\"params\":{\"categoryAxes\":[{\"show\":true,\"type\":\"category\",\"id\":\"CategoryAxis-1\",\"title\":{\"text\":\"@timestamp per 3 hours\"},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"style\":{},\"position\":\"bottom\"}],\"legendPosition\":\"right\",\"times\":[],\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"type\":\"histogram\",\"addLegend\":true,\"seriesParams\":[{\"show\":true,\"data\":{\"label\":\"Number of queries\",\"id\":\"4\"},\"showCircles\":true,\"interpolate\":\"linear\",\"drawLinesBetweenPoints\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-1\"},{\"show\":true,\"data\":{\"label\":\"Sum of query duration\",\"id\":\"2\"},\"showCircles\":true,\"interpolate\":\"linear\",\"drawLinesBetweenPoints\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-1\"}],\"addTimeMarker\":false,\"valueAxes\":[{\"show\":true,\"style\":{},\"type\":\"value\",\"name\":\"LeftAxis-1\",\"title\":{\"text\":\"\"},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"id\":\"ValueAxis-1\",\"position\":\"left\"}],\"addTooltip\":true}}"},"id":"PostgreSQL Query Count and Duration-ecs","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"PostgreSQL Query Durations-ecs","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-04T13:16:12.693Z","version":"WzIwNCwyXQ=="} +{"exportedCount":10,"missingRefCount":0,"missingReferences":[]} \ No newline at end of file diff --git a/4.4.0/catalogue-log-dashboard.png b/4.4.0/catalogue-log-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..bc07912d9b7935a8a4a44be17e020bfb08eae568 GIT binary patch literal 142999 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%0D7#@_p)NjL%^xnae_6 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 T#c%KU-C%ve-U9cB*WG^u?7r8w literal 0 HcmV?d00001 diff --git a/4.4.0/docker-compose.dev.yml b/4.4.0/docker-compose.dev.yml new file mode 100644 index 0000000..9b8221a --- /dev/null +++ b/4.4.0/docker-compose.dev.yml @@ -0,0 +1,7 @@ +version: '3.8' + +services: + geonetwork: + build: + context: . + dockerfile: Dockerfile.local diff --git a/4.4.0/docker-compose.monitoring.yml b/4.4.0/docker-compose.monitoring.yml new file mode 100644 index 0000000..02e4a52 --- /dev/null +++ b/4.4.0/docker-compose.monitoring.yml @@ -0,0 +1,31 @@ +version: '3.8' + +services: + metricbeat: + image: docker.elastic.co/beats/metricbeat:7.17.10 + command: metricbeat -e -strict.perms=false + volumes: + - ./metricbeat/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml + - ./metricbeat/modules.d:/usr/share/metricbeat/modules.d + - ./metricbeat/templates:/usr/share/metricbeat/templates/7/dashboard + depends_on: + - elasticsearch + - kibana + networks: + - gn-network + + + filebeat: + image: docker.elastic.co/beats/filebeat:7.17.10 + command: filebeat -e -strict.perms=false + volumes: + - ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml + - ./filebeat/modules.d:/usr/share/filebeat/modules.d +# - ./filebeat/templates:/usr/share/filebeat/kibana/7/dashboard + - pglog:/usr/share/filebeat/analyzedlogs/postgresql:ro + - traefiklog:/usr/share/filebeat/analyzedlogs/traefiklog:ro + depends_on: + - elasticsearch + - kibana + networks: + - gn-network diff --git a/4.4.0/docker-compose.yml b/4.4.0/docker-compose.yml new file mode 100644 index 0000000..0f47c13 --- /dev/null +++ b/4.4.0/docker-compose.yml @@ -0,0 +1,220 @@ +version: '3.8' + +x-geonetwork-environment: + &default-geonetwork-environment + WEBAPP_CONTEXT_PATH: /geonetwork + DATA_DIR: /catalogue-data + TZ: Europe/Amsterdam + + JAVA_OPTS: >- + --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED + -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true + -Xms512M -Xss512M -Xmx2G -XX:+UseConcMarkSweepGC + -Djetty.httpConfig.requestHeaderSize=32768 + -Dorg.eclipse.jetty.server.Request.maxFormContentSize=500000 + -Dorg.eclipse.jetty.server.Request.maxFormKeys=4000 + # For remote debug + # -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 + + GN_CONFIG_PROPERTIES: >- + -Dgeonetwork.dir=/catalogue-data + -Dgeonetwork.formatter.dir=/catalogue-data/data/formatter + -Dgeonetwork.schema.dir=/opt/geonetwork/WEB-INF/data/config/schema_plugins + -Dgeonetwork.indexConfig.dir=/opt/geonetwork/WEB-INF/data/config/index + -Dgeonetwork.schemapublication.dir=/opt/geonetwork/WEB-INF/data/resources/schemapublication + -Dgeonetwork.htmlcache.dir=/opt/geonetwork/WEB-INF/data/resources/htmlcache + -Des.host=elasticsearch + -Des.protocol=http + -Des.port=9200 + -Des.url=http://elasticsearch:9200 + -Des.username= + -Des.password= + -Dgeonetwork.ESFeaturesProxy.targetUri=http://elasticsearch:9200/gn-features/{_} + -Dgeonetwork.HttpDashboardProxy.targetUri=http://kibana:5601 + -Dgeonetwork.MicroServicesProxy.targetUri=http://ogc-api-records-service:8080 + + GEONETWORK_DB_TYPE: postgres + GEONETWORK_DB_HOST: database + GEONETWORK_DB_PORT: 5432 + GEONETWORK_DB_NAME: geonetwork + GEONETWORK_DB_USERNAME: geonetwork + GEONETWORK_DB_PASSWORD: geonetwork + VIRTUAL_HOST: localhost + +x-service-geonetwork: + &default-service-geonetwork + image: geonetwork:4.4.0 + healthcheck: + test: "curl http://localhost:8080/" + interval: 5s + timeout: 5s + retries: 30 + labels: + - "traefik.enable=true" + - "traefik.http.routers.geonetwork.middlewares=root-redirect" + - "traefik.http.middlewares.root-redirect.replacepathregex.regex=^/$$" + - "traefik.http.middlewares.root-redirect.replacepathregex.replacement=/geonetwork/" + - "traefik.http.routers.geonetwork.rule=Host(`geonetwork.localhost`)" + - "traefik.http.routers.geonetwork.entrypoints=web" + - "traefik.http.services.geonetwork.loadbalancer.server.port=8080" + - "traefik.http.services.geonetwork.loadbalancer.sticky=true" + - "traefik.http.services.geonetwork.loadbalancer.sticky.cookie.name=gnstickycookie" + - "traefik.http.services.geonetwork.loadbalancer.sticky.cookie.secure=false" + - "traefik.http.services.geonetwork.loadbalancer.sticky.cookie.httpOnly=true" + restart: always + volumes: + - geonetwork:/catalogue-data + depends_on: + database: + condition: service_healthy + networks: + - gn-network + + +volumes: + geonetwork: + esdata: + pgdata: + pglog: + traefiklog: + + +networks: + gn-network: + driver: bridge + + +services: + traefik: + image: "traefik:v2.10" + container_name: "traefik" + command: +# - "--log.level=DEBUG" + - "--log.filePath=/logs/traefik.log" + - "--accesslog=true" + - "--accesslog.bufferingsize=50" + - "--accesslog.filePath=/logs/access.log" + - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + ports: + - "80:80" + - "8000:8080" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - traefiklog:/logs + networks: + - gn-network + + + database: + image: postgis/postgis:11-2.5 + environment: + POSTGRES_USER: geonetwork + POSTGRES_PASSWORD: geonetwork + POSTGRES_DB: geonetwork + command: [ "postgres", + "-c", "log_statement=all", + "-c", "logging_collector=true", + "-c", "log_file_mode=0644", + "-c", "log_directory=/var/log/postgresql", + "-c", "log_filename=postgresql.log" ] + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U postgres" ] + interval: 5s + timeout: 5s + retries: 5 + volumes: + - pgdata:/var/lib/postgresql/data + - pglog:/var/log/postgresql + networks: + - gn-network + + + geonetwork: + <<: *default-service-geonetwork + environment: + << : *default-geonetwork-environment + HARVESTER_SCHEDULER_ENABLED: "true" + HARVESTER_REFRESH_INTERVAL_MINUTES: 2 + ports: + - 8080:8080 + + # docker-compose --profile scaled up --scale geonetwork-replica=2 -d + geonetwork-replica: + profiles: [ "scaled" ] + <<: *default-service-geonetwork + environment: + << : *default-geonetwork-environment + HARVESTER_SCHEDULER_ENABLED: "false" + HARVESTER_REFRESH_INTERVAL_MINUTES: 0 + deploy: + mode: replicated + replicas: 1 + ports: + - "8081-8082:8080" + + + ogc-api-records-service: + image: geonetwork/gn-cloud-ogc-api-records-service:4.2.5-1 + environment: + SPRING_PROFILES_ACTIVE: standalone + SPRING_DATASOURCE_URL: jdbc:postgresql://database:5432/geonetwork + SPRING_DATASOURCE_USERNAME: geonetwork + SPRING_DATASOURCE_PASSWORD: geonetwork + GN_BASEURL: http://geonetwork.localhost/geonetwork/api + GN_LEGACY_URL: http://geonetwork.localhost/geonetwork + GN_INDEX_URL: http://elasticsearch:9200 + SERVER_FORWARDHEADERSSTRATEGY: FRAMEWORK + JAVA_OPTS: -Dfile.encoding=UTF-8 + healthcheck: + test: "timeout 10s bash -c ':> /dev/tcp/127.0.0.1/8080' || exit 1" + interval: 10s + timeout: 2s + retries: 10 + depends_on: + geonetwork: + condition: service_healthy + networks: + - gn-network + + + elasticsearch: + image: elasticsearch:7.17.10 + ports: + - 9200:9200 + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 + hard: 65536 + healthcheck: + test: "curl -s http://localhost:9200 >/dev/null || exit 1" + interval: 10s + timeout: 2s + retries: 10 + environment: + ES_JAVA_OPTS: "-Xms1G -Xmx1G" + discovery.type: single-node + volumes: + - esdata:/usr/share/elasticsearch/data + networks: + - gn-network + + kibana: + image: kibana:7.17.10 + environment: + SERVER_NAME: 'kibana' + ELASTICSEARCH_URL: http://elasticsearch:9200/ + SERVER_BASEPATH: /geonetwork/dashboards + SERVER_REWRITEBASEPATH: 'false' + KIBANA_INDEX: .dashboards + XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED: 'true' + depends_on: + elasticsearch: + condition: service_healthy + networks: + - gn-network diff --git a/4.4.0/docker-entrypoint.sh b/4.4.0/docker-entrypoint.sh new file mode 100755 index 0000000..5ac9293 --- /dev/null +++ b/4.4.0/docker-entrypoint.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +export JAVA_OPTIONS="${JAVA_OPTS} ${GN_CONFIG_PROPERTIES}" + +GN_BASE_DIR=/opt/geonetwork + +if ! command -v -- "$1" >/dev/null 2>&1 ; then + set -- java -jar "$JETTY_HOME/start.jar" "$@" +fi + +if [[ "$1" = jetty.sh ]] || [[ $(expr "$*" : 'java .*/start\.jar.*$') != 0 ]]; then + # Customize context path + if [ ! -f "${JETTY_BASE}/webapps/geonetwork.xml" ]; then + echo "Using $WEBAPP_CONTEXT_PATH for deploying the application" + cp /usr/local/share/geonetwork/geonetwork_context_template.xml "${JETTY_BASE}/webapps/geonetwork.xml" + sed -i "s#GEONETWORK_CONTEXT_PATH#${WEBAPP_CONTEXT_PATH}#" "${JETTY_BASE}/webapps/geonetwork.xml" + fi + + # Delegate on base image entrypoint to start jetty + exec /docker-entrypoint.sh "$@" +else + exec "$@" +fi diff --git a/4.4.0/filebeat/filebeat.yml b/4.4.0/filebeat/filebeat.yml new file mode 100644 index 0000000..89d901e --- /dev/null +++ b/4.4.0/filebeat/filebeat.yml @@ -0,0 +1,33 @@ +filebeat.config.modules: + path: ${path.config}/modules.d/*.yml + reload.enabled: false + +setup.template.settings: + index.number_of_shards: 1 + index.codec: best_compression + +setup.kibana: + host: "geonetwork:8080" + path: "/geonetwork/dashboards" + space.id: catalogue-monitor + username: admin + password: admin + +setup.dashboards: + index: "gn-logs-*" + directory: ${path.config}/kibana + +setup.ilm: + enabled: auto + rollover_alias: "gn-logs" + pattern: "{now/d}-000001" + +output.elasticsearch: + hosts: ["elasticsearch:9200"] + +processors: + - add_host_metadata: + when.not.contains.tags: forwarded + - add_cloud_metadata: ~ + - add_docker_metadata: ~ + - add_kubernetes_metadata: ~ diff --git a/4.4.0/filebeat/modules.d/postgresql.yml b/4.4.0/filebeat/modules.d/postgresql.yml new file mode 100644 index 0000000..b8d58b4 --- /dev/null +++ b/4.4.0/filebeat/modules.d/postgresql.yml @@ -0,0 +1,4 @@ +- module: postgresql + log: + enabled: true + var.paths: ["/usr/share/filebeat/analyzedlogs/postgresql/*.log*"] diff --git a/4.4.0/filebeat/modules.d/traefik.yml b/4.4.0/filebeat/modules.d/traefik.yml new file mode 100644 index 0000000..4ea75b2 --- /dev/null +++ b/4.4.0/filebeat/modules.d/traefik.yml @@ -0,0 +1,4 @@ +- module: traefik + access: + enabled: true + var.paths: ["/usr/share/filebeat/analyzedlogs/traefiklog/access.log*"] diff --git a/4.4.0/filebeat/templates/Filebeat-Postgresql-overview.json b/4.4.0/filebeat/templates/Filebeat-Postgresql-overview.json new file mode 100644 index 0000000..a38a60c --- /dev/null +++ b/4.4.0/filebeat/templates/Filebeat-Postgresql-overview.json @@ -0,0 +1,80 @@ +{ + "objects": [ + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": []}" + }, + "savedSearchId": "PostgreSQL All Logs-ecs", + "title": "Log Level Count [Filebeat PostgreSQL] ECS", + "uiStateJSON": "{\"vis\": {\"params\": {\"sort\": {\"direction\": null, \"columnIndex\": null}}}}", + "version": 1, + "visState": "{\"title\": \"Log Level Count [Filebeat PostgreSQL] ECS\", \"aggs\": [{\"type\": \"count\", \"enabled\": true, \"params\": {}, \"schema\": \"metric\", \"id\": \"1\"}, {\"type\": \"terms\", \"enabled\": true, \"params\": {\"size\": 12, \"field\": \"log.level\", \"orderBy\": \"1\", \"order\": \"desc\"}, \"schema\": \"bucket\", \"id\": \"2\"}], \"type\": \"table\", \"params\": {\"sort\": {\"direction\": null, \"columnIndex\": null}, \"totalFunc\": \"sum\", \"showPartialRows\": false, \"showTotal\": false, \"perPage\": 10, \"showMeticsAtAllLevels\": false}}" + }, + "id": "PostgreSQL Log Level Count-ecs", + "type": "visualization", + "version": 2 + }, + { + "attributes": { + "columns": [ + "user.name", + "postgresql.log.database", + "log.level", + "message", + "postgresql.log.query" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\": {\"language\": \"kuery\", \"query\": \"\"}, \"highlightAll\": true, \"filter\": [{\"$state\": {\"store\": \"appState\"}, \"query\": {\"match\": {\"event.module\": {\"type\": \"phrase\", \"query\": \"postgresql\"}}}, \"meta\": {\"alias\": null, \"type\": \"phrase\", \"value\": \"postgresql\", \"params\": {\"type\": \"phrase\", \"query\": \"postgresql\"}, \"negate\": false, \"index\": \"filebeat-*\", \"key\": \"event.module\", \"disabled\": false}}], \"version\": true, \"index\": \"filebeat-*\"}" + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "All Logs [Filebeat PostgreSQL] ECS", + "version": 1 + }, + "id": "PostgreSQL All Logs-ecs", + "type": "search", + "version": 1 + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": []}" + }, + "savedSearchId": "PostgreSQL All Logs-ecs", + "title": "Logs by level over time [Filebeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Logs by level over time [Filebeat PostgreSQL] ECS\", \"aggs\": [{\"type\": \"count\", \"enabled\": true, \"params\": {}, \"schema\": \"metric\", \"id\": \"1\"}, {\"type\": \"date_histogram\", \"enabled\": true, \"params\": {\"customInterval\": \"2h\", \"extended_bounds\": {}, \"interval\": \"auto\", \"field\": \"@timestamp\", \"min_doc_count\": 1}, \"schema\": \"segment\", \"id\": \"2\"}, {\"type\": \"terms\", \"enabled\": true, \"params\": {\"size\": 5, \"field\": \"log.level\", \"orderBy\": \"1\", \"order\": \"desc\"}, \"schema\": \"group\", \"id\": \"3\"}], \"type\": \"histogram\", \"params\": {\"categoryAxes\": [{\"show\": true, \"type\": \"category\", \"id\": \"CategoryAxis-1\", \"title\": {\"text\": \"@timestamp per month\"}, \"scale\": {\"type\": \"linear\"}, \"labels\": {\"show\": true, \"truncate\": 100}, \"style\": {}, \"position\": \"bottom\"}], \"legendPosition\": \"right\", \"times\": [], \"grid\": {\"categoryLines\": false, \"style\": {\"color\": \"#eee\"}}, \"type\": \"histogram\", \"addLegend\": true, \"seriesParams\": [{\"show\": \"true\", \"data\": {\"label\": \"Count\", \"id\": \"1\"}, \"showCircles\": true, \"drawLinesBetweenPoints\": true, \"type\": \"histogram\", \"mode\": \"stacked\", \"valueAxis\": \"ValueAxis-1\"}], \"addTimeMarker\": false, \"valueAxes\": [{\"show\": true, \"style\": {}, \"type\": \"value\", \"name\": \"LeftAxis-1\", \"title\": {\"text\": \"Count\"}, \"scale\": {\"type\": \"linear\", \"mode\": \"normal\"}, \"labels\": {\"show\": true, \"rotate\": 0, \"filter\": false, \"truncate\": 100}, \"id\": \"ValueAxis-1\", \"position\": \"left\"}], \"addTooltip\": true}}" + }, + "id": "3dbd5370-87f3-11e7-ad9c-db80de0bf8d3-ecs", + "type": "visualization", + "version": 1 + }, + { + "attributes": { + "description": "Overview dashboard for the Filebeat PostgreSQL module", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\": {\"language\": \"kuery\", \"query\": \"\"}, \"highlightAll\": true, \"filter\": [], \"version\": true}" + }, + "optionsJSON": "{\"darkTheme\": false}", + "panelsJSON": "[{\"type\": \"visualization\", \"col\": 1, \"id\": \"PostgreSQL Log Level Count-ecs\", \"size_x\": 3, \"row\": 1, \"size_y\": 3, \"panelIndex\": 1}, {\"columns\": [\"user.name\", \"postgresql.log.database\", \"log.level\", \"message\", \"postgresql.log.query\"], \"sort\": [\"@timestamp\", \"desc\"], \"type\": \"search\", \"col\": 1, \"id\": \"PostgreSQL All Logs-ecs\", \"size_x\": 12, \"row\": 4, \"size_y\": 6, \"panelIndex\": 2}, {\"type\": \"visualization\", \"col\": 4, \"id\": \"3dbd5370-87f3-11e7-ad9c-db80de0bf8d3-ecs\", \"size_x\": 9, \"row\": 1, \"size_y\": 3, \"panelIndex\": 3}]", + "timeRestore": false, + "title": "[Filebeat PostgreSQL] Overview ECS", + "uiStateJSON": "{\"P-1\": {\"vis\": {\"params\": {\"sort\": {\"direction\": null, \"columnIndex\": null}}}}}", + "version": 1 + }, + "id": "158be870-87f4-11e7-ad9c-db80de0bf8d3-ecs", + "type": "dashboard", + "version": 1 + } + ], + "version": "6.0.0-beta1-SNAPSHOT" +} \ No newline at end of file diff --git a/4.4.0/filebeat/templates/Filebeat-Postgresql-slowlogs.json b/4.4.0/filebeat/templates/Filebeat-Postgresql-slowlogs.json new file mode 100644 index 0000000..d4e6d12 --- /dev/null +++ b/4.4.0/filebeat/templates/Filebeat-Postgresql-slowlogs.json @@ -0,0 +1,87 @@ +{ + "objects": [ + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\": {\"language\": \"kuery\", \"query\": \"\"}, \"filter\": []}" + }, + "savedSearchId": "PostgreSQL Query Durations-ecs", + "title": "Query count and cumulated duration [Filebeat PostgreSQL] ECS", + "uiStateJSON": "{\"vis\": {\"colors\": {\"Sum of query duration\": \"#6ED0E0\", \"Number of queries\": \"#0A437C\"}, \"legendOpen\": true}}", + "version": 1, + "visState": "{\"title\": \"Query count and cumulated duration [Filebeat PostgreSQL] ECS\", \"aggs\": [{\"type\": \"date_histogram\", \"enabled\": true, \"params\": {\"customInterval\": \"2h\", \"extended_bounds\": {}, \"interval\": \"auto\", \"field\": \"@timestamp\", \"min_doc_count\": 1}, \"schema\": \"segment\", \"id\": \"3\"}, {\"type\": \"count\", \"enabled\": true, \"params\": {\"customLabel\": \"Number of queries\"}, \"schema\": \"metric\", \"id\": \"4\"}, {\"type\": \"sum\", \"enabled\": true, \"params\": {\"customLabel\": \"Sum of query duration\", \"field\": \"event.duration\"}, \"schema\": \"metric\", \"id\": \"2\"}], \"type\": \"histogram\", \"params\": {\"categoryAxes\": [{\"show\": true, \"type\": \"category\", \"id\": \"CategoryAxis-1\", \"title\": {\"text\": \"@timestamp per 3 hours\"}, \"scale\": {\"type\": \"linear\"}, \"labels\": {\"show\": true, \"truncate\": 100}, \"style\": {}, \"position\": \"bottom\"}], \"legendPosition\": \"right\", \"times\": [], \"grid\": {\"categoryLines\": false, \"style\": {\"color\": \"#eee\"}}, \"type\": \"histogram\", \"addLegend\": true, \"seriesParams\": [{\"show\": true, \"data\": {\"label\": \"Number of queries\", \"id\": \"4\"}, \"showCircles\": true, \"interpolate\": \"linear\", \"drawLinesBetweenPoints\": true, \"type\": \"histogram\", \"mode\": \"normal\", \"lineWidth\": 2, \"valueAxis\": \"ValueAxis-1\"}, {\"show\": true, \"data\": {\"label\": \"Sum of query duration\", \"id\": \"2\"}, \"showCircles\": true, \"interpolate\": \"linear\", \"drawLinesBetweenPoints\": true, \"type\": \"histogram\", \"mode\": \"normal\", \"lineWidth\": 2, \"valueAxis\": \"ValueAxis-1\"}], \"addTimeMarker\": false, \"valueAxes\": [{\"show\": true, \"style\": {}, \"type\": \"value\", \"name\": \"LeftAxis-1\", \"title\": {\"text\": \"\"}, \"scale\": {\"type\": \"linear\", \"mode\": \"normal\"}, \"labels\": {\"show\": true, \"rotate\": 0, \"filter\": false, \"truncate\": 100}, \"id\": \"ValueAxis-1\", \"position\": \"left\"}], \"addTooltip\": true}}" + }, + "id": "PostgreSQL Query Count and Duration-ecs", + "type": "visualization", + "version": 1 + }, + { + "attributes": { + "columns": [ + "user.name", + "postgresql.log.database", + "event.duration", + "postgresql.log.query" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\": {\"language\": \"kuery\", \"query\": \"event.duration>30000000\"}, \"highlightAll\": true, \"filter\": [], \"version\": true, \"index\": \"filebeat-*\"}" + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "Slow Queries [Filebeat PostgreSQL] ECS", + "version": 1 + }, + "id": "Slow PostgreSQL Queries-ecs", + "type": "search", + "version": 1 + }, + { + "attributes": { + "columns": [ + "user.name", + "postgresql.log.database", + "event.duration", + "postgresql.log.query" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\": {\"language\": \"kuery\", \"query\": \"event.duration:*\"}, \"highlightAll\": true, \"filter\": [], \"version\": true, \"index\": \"filebeat-*\"}" + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "Query Durations [Filebeat PostgreSQL] ECS", + "version": 1 + }, + "id": "PostgreSQL Query Durations-ecs", + "type": "search", + "version": 1 + }, + { + "attributes": { + "description": "Dashboard for analyzing the query durations of the Filebeat PostgreSQL module", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\": {\"language\": \"kuery\", \"query\": \"postgresql.log.query:*\"}, \"highlightAll\": true, \"filter\": [], \"version\": true}" + }, + "optionsJSON": "{\"darkTheme\": false}", + "panelsJSON": "[{\"type\": \"visualization\", \"col\": 1, \"id\": \"PostgreSQL Query Count and Duration-ecs\", \"size_x\": 6, \"row\": 1, \"size_y\": 3, \"panelIndex\": 1}, {\"columns\": [\"user.name\", \"postgresql.log.database\", \"event.duration\", \"postgresql.log.query\"], \"sort\": [\"@timestamp\", \"desc\"], \"type\": \"search\", \"col\": 7, \"id\": \"Slow PostgreSQL Queries-ecs\", \"size_x\": 6, \"row\": 1, \"size_y\": 3, \"panelIndex\": 2}, {\"columns\": [\"user.name\", \"postgresql.log.database\", \"event.duration\", \"postgresql.log.query\"], \"sort\": [\"@timestamp\", \"desc\"], \"type\": \"search\", \"col\": 1, \"id\": \"PostgreSQL Query Durations-ecs\", \"size_x\": 12, \"row\": 4, \"size_y\": 5, \"panelIndex\": 3}]", + "timeRestore": false, + "title": "[Filebeat PostgreSQL] Query Duration Overview ECS", + "uiStateJSON": "{}", + "version": 1 + }, + "id": "e4c5f230-87f3-11e7-ad9c-db80de0bf8d3-ecs", + "type": "dashboard", + "version": 1 + } + ], + "version": "6.0.0-beta1-SNAPSHOT" +} \ No newline at end of file diff --git a/4.4.0/jetty/geonetwork_context_template.xml b/4.4.0/jetty/geonetwork_context_template.xml new file mode 100644 index 0000000..d667206 --- /dev/null +++ b/4.4.0/jetty/geonetwork_context_template.xml @@ -0,0 +1,17 @@ + + + + + GEONETWORK_CONTEXT_PATH + /opt/geonetwork + + -javax.mail. + + + javax.mail. + + + org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern + nomatches + + diff --git a/4.4.0/metricbeat/metricbeat.yml b/4.4.0/metricbeat/metricbeat.yml new file mode 100644 index 0000000..c48122f --- /dev/null +++ b/4.4.0/metricbeat/metricbeat.yml @@ -0,0 +1,32 @@ +metricbeat.config.modules: + path: ${path.config}/modules.d/*.yml + reload.enabled: false + +setup.template.settings: + index.number_of_shards: 1 + index.codec: best_compression + +setup.kibana: + host: "geonetwork:8080" + path: "/geonetwork/dashboards" + space.id: catalogue-monitor + username: admin + password: admin + +setup.dashboards: + index: "gn-metrics-*" + directory: ${path.config}/templates + +setup.ilm: + enabled: auto + rollover_alias: "gn-metrics" + pattern: "{now/d}-000001" + +output.elasticsearch: + hosts: ["elasticsearch:9200"] + +processors: + - add_host_metadata: ~ + - add_cloud_metadata: ~ + - add_docker_metadata: ~ + - add_kubernetes_metadata: ~ diff --git a/4.4.0/metricbeat/modules.d/postgresql.yml b/4.4.0/metricbeat/modules.d/postgresql.yml new file mode 100644 index 0000000..920d603 --- /dev/null +++ b/4.4.0/metricbeat/modules.d/postgresql.yml @@ -0,0 +1,10 @@ +- module: postgresql + #metricsets: + # - database + # - bgwriter + # - activity + period: 10s + hosts: ["postgres://database:5432?sslmode=disable"] + username: geonetwork + password: geonetwork + database: geonetwork diff --git a/4.4.0/metricbeat/templates/Metricbeat-postgresql-overview.json b/4.4.0/metricbeat/templates/Metricbeat-postgresql-overview.json new file mode 100644 index 0000000..39fa2ee --- /dev/null +++ b/4.4.0/metricbeat/templates/Metricbeat-postgresql-overview.json @@ -0,0 +1,284 @@ +{ + "objects": [ + { + "attributes": { + "description": "This PostgreSQL dashboard shows the most important database related metrics.\n\n", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "optionsJSON": "{\"useMargins\": true, \"hidePanelTitles\": false}", + "panelsJSON": "[{\"embeddableConfig\": {\"title\": \"Query Latency\"}, \"gridData\": {\"i\": \"1\", \"y\": 6, \"w\": 24, \"h\": 13, \"x\": 0}, \"panelIndex\": \"1\", \"version\": \"7.3.1\", \"title\": \"Query Latency\", \"panelRefName\": \"panel_0\"}, {\"embeddableConfig\": {\"title\": \"Database Transactions\"}, \"gridData\": {\"i\": \"2\", \"y\": 0, \"w\": 24, \"h\": 12, \"x\": 24}, \"panelIndex\": \"2\", \"version\": \"7.3.1\", \"title\": \"Database Transactions\", \"panelRefName\": \"panel_1\"}, {\"embeddableConfig\": {\"title\": \"Fileblock IO\"}, \"gridData\": {\"i\": \"3\", \"y\": 19, \"w\": 24, \"h\": 10, \"x\": 0}, \"panelIndex\": \"3\", \"version\": \"7.3.1\", \"title\": \"Fileblock IO\", \"panelRefName\": \"panel_2\"}, {\"embeddableConfig\": {\"title\": \"Rows Fetched/Returned\"}, \"gridData\": {\"i\": \"4\", \"y\": 0, \"w\": 14, \"h\": 6, \"x\": 10}, \"panelIndex\": \"4\", \"version\": \"7.3.1\", \"title\": \"Rows Fetched/Returned\", \"panelRefName\": \"panel_3\"}, {\"embeddableConfig\": {\"title\": \"Rows Inserted/Deleted/Updated\"}, \"gridData\": {\"i\": \"5\", \"y\": 22, \"w\": 24, \"h\": 9, \"x\": 24}, \"panelIndex\": \"5\", \"version\": \"7.3.1\", \"title\": \"Rows Inserted/Deleted/Updated\", \"panelRefName\": \"panel_4\"}, {\"embeddableConfig\": {\"title\": \"Conflict/Deadlock Rates\"}, \"gridData\": {\"i\": \"6\", \"y\": 29, \"w\": 24, \"h\": 11, \"x\": 0}, \"panelIndex\": \"6\", \"version\": \"7.3.1\", \"title\": \"Conflict/Deadlock Rates\", \"panelRefName\": \"panel_5\"}, {\"embeddableConfig\": {\"title\": \"Database Filter\"}, \"gridData\": {\"i\": \"7\", \"y\": 0, \"w\": 10, \"h\": 6, \"x\": 0}, \"panelIndex\": \"7\", \"version\": \"7.3.1\", \"title\": \"Database Filter\", \"panelRefName\": \"panel_6\"}, {\"embeddableConfig\": {\"title\": \"Top Queries\"}, \"gridData\": {\"i\": \"8\", \"y\": 12, \"w\": 24, \"h\": 10, \"x\": 24}, \"panelIndex\": \"8\", \"version\": \"7.3.1\", \"title\": \"Top Queries\", \"panelRefName\": \"panel_7\"}, {\"embeddableConfig\": {\"title\": \"Local block cache stats\"}, \"gridData\": {\"i\": \"9\", \"y\": 31, \"w\": 12, \"h\": 9, \"x\": 24}, \"panelIndex\": \"9\", \"version\": \"7.3.1\", \"title\": \"Local block cache stats\", \"panelRefName\": \"panel_8\"}, {\"embeddableConfig\": {\"title\": \"Shared block cache stats\"}, \"gridData\": {\"i\": \"10\", \"y\": 31, \"w\": 12, \"h\": 9, \"x\": 36}, \"panelIndex\": \"10\", \"version\": \"7.3.1\", \"title\": \"Shared block cache stats\", \"panelRefName\": \"panel_9\"}]", + "timeRestore": false, + "title": "[Metricbeat PostgreSQL] Database Overview", + "version": 1 + }, + "id": "4288b790-b79f-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "fbfa67e0-b796-11e9-a579-f5c0a5d81340", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "d733c630-b797-11e9-a579-f5c0a5d81340", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "570973a0-b798-11e9-a579-f5c0a5d81340", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "66d67200-b799-11e9-a579-f5c0a5d81340", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "20931ef0-b79a-11e9-a579-f5c0a5d81340", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "960ecdf0-b79a-11e9-a579-f5c0a5d81340", + "name": "panel_5", + "type": "visualization" + }, + { + "id": "98e6b0a0-b79b-11e9-a579-f5c0a5d81340", + "name": "panel_6", + "type": "visualization" + }, + { + "id": "147875b0-b903-11e9-a579-f5c0a5d81340", + "name": "panel_7", + "type": "visualization" + }, + { + "id": "0cb65170-b909-11e9-a579-f5c0a5d81340", + "name": "panel_8", + "type": "visualization" + }, + { + "id": "e2b28ce0-b908-11e9-a579-f5c0a5d81340", + "name": "panel_9", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-02-06T12:05:20.696Z", + "version": "WzQzNTYsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Query Latency [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Query Latency [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"id\": \"919c5570-b796-11e9-8ed3-ef1959e6b366\", \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"time_field\": \"@timestamp\", \"show_legend\": 1, \"axis_scale\": \"normal\", \"type\": \"timeseries\", \"interval\": \"auto\", \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"Query Latency\", \"metrics\": [{\"type\": \"max\", \"id\": \"919c7c80-b796-11e9-8ed3-ef1959e6b366\", \"field\": \"postgresql.statement.query.time.total.ms\"}, {\"type\": \"derivative\", \"id\": \"9e553c60-b79f-11e9-9029-a9d302b79ec2\", \"field\": \"919c7c80-b796-11e9-8ed3-ef1959e6b366\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"a58b6590-b79f-11e9-9029-a9d302b79ec2\", \"field\": \"9e553c60-b79f-11e9-9029-a9d302b79ec2\", \"unit\": \"\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"terms_size\": \"10\", \"stacked\": \"none\", \"fill\": \"0.1\", \"type\": \"timeseries\", \"id\": \"919c5571-b796-11e9-8ed3-ef1959e6b366\", \"terms_field\": \"postgresql.statement.query.text\", \"split_color_mode\": \"rainbow\", \"terms_order_by\": \"919c7c80-b796-11e9-8ed3-ef1959e6b366\", \"color\": \"rgba(0,156,224,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"terms\", \"filter\": {\"query\": \"not postgresql.statement.query.text : (\\\"BEGIN;\\\" or \\\"begin\\\" or \\\"commit\\\" or \\\"end\\\" or \\\"END;\\\" or \\\"SELECT * FROM pg_stat_statements\\\" or \\\"SELECT * FROM pg_stat_database\\\" or \\\"SELECT * FROM pg_stat_bgwriter\\\" or \\\"SELECT * FROM pg_stat_activity\\\")\", \"language\": \"kuery\"}, \"point_size\": 0, \"formatter\": \"number\", \"line_width\": 2, \"separate_axis\": 0}], \"index_pattern\": \"metricbeat-*\", \"isModelInvalid\": false, \"show_grid\": 1, \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\"}, \"aggs\": []}" + }, + "id": "fbfa67e0-b796-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-02-06T11:59:01.903Z", + "version": "WzQzNTAsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Database Transactions [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Database Transactions [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"id\": \"7af01590-b797-11e9-8816-2992f1df7a62\", \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"time_field\": \"@timestamp\", \"show_legend\": 1, \"axis_scale\": \"normal\", \"type\": \"timeseries\", \"interval\": \"auto\", \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"committed\", \"metrics\": [{\"type\": \"max\", \"id\": \"7af01592-b797-11e9-8816-2992f1df7a62\", \"field\": \"postgresql.database.transactions.commit\"}, {\"type\": \"derivative\", \"id\": \"7af01594-b797-11e9-8816-2992f1df7a62\", \"field\": \"7af01592-b797-11e9-8816-2992f1df7a62\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"7af01593-b797-11e9-8816-2992f1df7a62\", \"field\": \"7af01594-b797-11e9-8816-2992f1df7a62\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"7af01591-b797-11e9-8816-2992f1df7a62\", \"color\": \"rgba(104,188,0,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"rolled back\", \"metrics\": [{\"type\": \"max\", \"id\": \"7af01596-b797-11e9-8816-2992f1df7a62\", \"field\": \"postgresql.database.transactions.rollback\"}, {\"type\": \"derivative\", \"id\": \"7af01598-b797-11e9-8816-2992f1df7a62\", \"field\": \"7af01596-b797-11e9-8816-2992f1df7a62\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"7af01597-b797-11e9-8816-2992f1df7a62\", \"field\": \"7af01598-b797-11e9-8816-2992f1df7a62\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"7af01595-b797-11e9-8816-2992f1df7a62\", \"color\": \"rgba(254,146,0,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}], \"index_pattern\": \"metricbeat-*\", \"isModelInvalid\": false, \"show_grid\": 1, \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\"}, \"aggs\": []}" + }, + "id": "d733c630-b797-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-02-05T15:49:18.236Z", + "version": "WzQzMTIsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Fileblock IO Rate [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Fileblock IO Rate [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"id\": \"fbc27280-b797-11e9-b46b-4f80f005c4a5\", \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"time_field\": \"@timestamp\", \"show_legend\": 1, \"axis_scale\": \"normal\", \"type\": \"timeseries\", \"interval\": \"auto\", \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"read\", \"metrics\": [{\"type\": \"max\", \"id\": \"fbc27282-b797-11e9-b46b-4f80f005c4a5\", \"field\": \"postgresql.database.blocks.time.read.ms\"}, {\"type\": \"derivative\", \"id\": \"fbc27284-b797-11e9-b46b-4f80f005c4a5\", \"field\": \"fbc27282-b797-11e9-b46b-4f80f005c4a5\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"fbc27283-b797-11e9-b46b-4f80f005c4a5\", \"field\": \"fbc27284-b797-11e9-b46b-4f80f005c4a5\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"fbc27281-b797-11e9-b46b-4f80f005c4a5\", \"color\": \"rgba(252,196,0,1)\", \"value_template\": \"{{value}} ms\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"write\", \"metrics\": [{\"type\": \"max\", \"id\": \"fbc27286-b797-11e9-b46b-4f80f005c4a5\", \"field\": \"postgresql.database.blocks.time.write.ms\"}, {\"type\": \"derivative\", \"id\": \"fbc27288-b797-11e9-b46b-4f80f005c4a5\", \"field\": \"fbc27286-b797-11e9-b46b-4f80f005c4a5\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"fbc27287-b797-11e9-b46b-4f80f005c4a5\", \"field\": \"fbc27288-b797-11e9-b46b-4f80f005c4a5\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"fbc27285-b797-11e9-b46b-4f80f005c4a5\", \"color\": \"rgba(123,100,255,1)\", \"value_template\": \"{{value}} ms\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}], \"index_pattern\": \"metricbeat-*\", \"isModelInvalid\": false, \"show_grid\": 1, \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\"}, \"aggs\": []}" + }, + "id": "570973a0-b798-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-02-05T19:01:54.390Z", + "version": "WzQzMjQsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Rows Fetched/Returned [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Rows Fetched/Returned [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"gauge_inner_width\": 10, \"default_index_pattern\": \"metricbeat-*\", \"gauge_style\": \"half\", \"axis_formatter\": \"number\", \"id\": \"a6981ed0-b798-11e9-a598-8baa89257193\", \"show_legend\": 1, \"axis_scale\": \"normal\", \"type\": \"timeseries\", \"background_color_rules\": [{\"id\": \"bec42b70-b798-11e9-af2f-3be5a91b64a6\"}], \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"Rows Returned\", \"metrics\": [{\"percentiles\": [{\"mode\": \"line\", \"id\": \"b507cc90-b798-11e9-af2f-3be5a91b64a6\", \"value\": 50, \"shade\": 0.2}], \"type\": \"max\", \"id\": \"a6981ed2-b798-11e9-a598-8baa89257193\", \"field\": \"postgresql.database.rows.returned\"}, {\"type\": \"derivative\", \"id\": \"ed6f33d0-b8ff-11e9-8645-31d6a6d28728\", \"field\": \"a6981ed2-b798-11e9-a598-8baa89257193\", \"unit\": \"1\"}, {\"type\": \"positive_only\", \"id\": \"f58b9e50-b8ff-11e9-8645-31d6a6d28728\", \"field\": \"ed6f33d0-b8ff-11e9-8645-31d6a6d28728\", \"unit\": \"\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"a6981ed1-b798-11e9-a598-8baa89257193\", \"color\": \"rgba(164,221,0,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"point_size\": 0, \"formatter\": \"'0.0 a'\", \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"Rows Fetched\", \"metrics\": [{\"type\": \"max\", \"id\": \"a6981ed4-b798-11e9-a598-8baa89257193\", \"field\": \"postgresql.database.rows.fetched\"}, {\"type\": \"derivative\", \"id\": \"064737e0-b900-11e9-8645-31d6a6d28728\", \"field\": \"a6981ed4-b798-11e9-a598-8baa89257193\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"0fea1b50-b900-11e9-8645-31d6a6d28728\", \"field\": \"064737e0-b900-11e9-8645-31d6a6d28728\", \"unit\": \"\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"a6981ed3-b798-11e9-a598-8baa89257193\", \"color\": \"rgba(0,156,224,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}], \"gauge_width\": 10, \"index_pattern\": \"metricbeat-*\", \"isModelInvalid\": false, \"show_grid\": 1, \"time_field\": \"@timestamp\", \"gauge_color_rules\": [{\"id\": \"ada89790-b798-11e9-af2f-3be5a91b64a6\"}], \"bar_color_rules\": [{\"id\": \"cc80b5d0-b798-11e9-af2f-3be5a91b64a6\"}], \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\", \"interval\": \"auto\"}, \"aggs\": []}" + }, + "id": "66d67200-b799-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-02-06T11:56:03.315Z", + "version": "WzQzNDYsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Rows Inserted/Deleted/Updated [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Rows Inserted/Deleted/Updated [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"id\": \"fc474800-b799-11e9-bfa6-bd2fe13c0445\", \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"time_field\": \"@timestamp\", \"show_legend\": 1, \"axis_scale\": \"normal\", \"type\": \"timeseries\", \"interval\": \"auto\", \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"inserted\", \"metrics\": [{\"type\": \"max\", \"id\": \"fc474802-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"postgresql.database.rows.inserted\"}, {\"type\": \"derivative\", \"id\": \"fc474804-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"fc474802-b799-11e9-bfa6-bd2fe13c0445\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"fc474803-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"fc474804-b799-11e9-bfa6-bd2fe13c0445\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"id\": \"fc474801-b799-11e9-bfa6-bd2fe13c0445\", \"color\": \"#3185FC\", \"value_template\": \"{{value}}/s\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"deleted\", \"metrics\": [{\"type\": \"max\", \"id\": \"fc474806-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"postgresql.database.rows.deleted\"}, {\"type\": \"derivative\", \"id\": \"fc474808-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"fc474806-b799-11e9-bfa6-bd2fe13c0445\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"fc474807-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"fc474808-b799-11e9-bfa6-bd2fe13c0445\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"id\": \"fc474805-b799-11e9-bfa6-bd2fe13c0445\", \"color\": \"#DB1374\", \"value_template\": \"{{value}}/s\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"updated\", \"metrics\": [{\"type\": \"max\", \"id\": \"fc476f11-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"postgresql.database.rows.updated\"}, {\"type\": \"derivative\", \"id\": \"fc476f13-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"fc476f11-b799-11e9-bfa6-bd2fe13c0445\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"fc476f12-b799-11e9-bfa6-bd2fe13c0445\", \"field\": \"fc476f13-b799-11e9-bfa6-bd2fe13c0445\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"id\": \"fc476f10-b799-11e9-bfa6-bd2fe13c0445\", \"color\": \"#00B3A4\", \"value_template\": \"{{value}}/s\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}], \"index_pattern\": \"metricbeat-*\", \"isModelInvalid\": false, \"show_grid\": 1, \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\"}, \"aggs\": []}" + }, + "id": "20931ef0-b79a-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-02-06T12:01:45.205Z", + "version": "WzQzNTMsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Conflict/Deadlock Rates [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Conflict/Deadlock Rates [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"id\": \"6c90db30-b79a-11e9-a8f0-d7983cd3d871\", \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"time_field\": \"@timestamp\", \"show_legend\": 1, \"axis_scale\": \"normal\", \"type\": \"timeseries\", \"interval\": \"auto\", \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"conflicts\", \"metrics\": [{\"type\": \"avg\", \"id\": \"6c90db32-b79a-11e9-a8f0-d7983cd3d871\", \"field\": \"postgresql.database.conflicts\"}, {\"type\": \"derivative\", \"id\": \"6c90db34-b79a-11e9-a8f0-d7983cd3d871\", \"field\": \"6c90db32-b79a-11e9-a8f0-d7983cd3d871\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"6c90db33-b79a-11e9-a8f0-d7983cd3d871\", \"field\": \"6c90db34-b79a-11e9-a8f0-d7983cd3d871\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"6c90db31-b79a-11e9-a8f0-d7983cd3d871\", \"color\": \"rgba(12,121,125,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"deadlocks\", \"metrics\": [{\"type\": \"avg\", \"id\": \"6c90db36-b79a-11e9-a8f0-d7983cd3d871\", \"field\": \"postgresql.database.deadlocks\"}, {\"type\": \"derivative\", \"id\": \"6c90db38-b79a-11e9-a8f0-d7983cd3d871\", \"field\": \"6c90db36-b79a-11e9-a8f0-d7983cd3d871\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"6c90db37-b79a-11e9-a8f0-d7983cd3d871\", \"field\": \"6c90db38-b79a-11e9-a8f0-d7983cd3d871\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"6c90db35-b79a-11e9-a8f0-d7983cd3d871\", \"color\": \"rgba(244,78,59,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}], \"index_pattern\": \"metricbeat-*\", \"isModelInvalid\": false, \"show_grid\": 1, \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\"}, \"aggs\": []}" + }, + "id": "960ecdf0-b79a-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-02-05T15:46:52.411Z", + "version": "WzQzMDgsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Database Filter [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Database Filter [Metricbeat PostgreSQL] ECS\", \"type\": \"input_control_vis\", \"params\": {\"updateFiltersOnChange\": true, \"controls\": [{\"fieldName\": \"postgresql.database.name\", \"label\": \"database\", \"parent\": \"\", \"type\": \"list\", \"indexPatternRefName\": \"control_0_index_pattern\", \"id\": \"1549397251041\", \"options\": {\"order\": \"desc\", \"type\": \"terms\", \"dynamicOptions\": true, \"size\": 5, \"multiselect\": false}}], \"useTimeFilter\": true, \"pinFilters\": false}, \"aggs\": []}" + }, + "id": "98e6b0a0-b79b-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2020-01-22T13:56:51.268Z", + "version": "WzQwMjgsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Query Calls Count [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Query Calls Count [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"gauge_inner_width\": 10, \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"show_legend\": 1, \"axis_scale\": \"normal\", \"type\": \"top_n\", \"background_color_rules\": [{\"id\": \"d3cc2560-484b-11ea-a805-d7a3b4bc3300\"}], \"default_timefield\": \"@timestamp\", \"index_pattern\": \"metricbeat-*\", \"show_grid\": 1, \"time_field\": \"@timestamp\", \"interval\": \"auto\", \"axis_position\": \"left\", \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"gauge_style\": \"half\", \"id\": \"2bc5fea0-b902-11e9-8b8c-f99be54b4271\", \"pivot_type\": \"string\", \"gauge_width\": 10, \"series\": [{\"label\": \"Number of times the query has been run\", \"metrics\": [{\"type\": \"avg\", \"id\": \"2bc5fea2-b902-11e9-8b8c-f99be54b4271\", \"field\": \"postgresql.statement.query.calls\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"terms_size\": \"20\", \"stacked\": \"none\", \"fill\": 0, \"type\": \"timeseries\", \"id\": \"2bc5fea1-b902-11e9-8b8c-f99be54b4271\", \"terms_field\": \"postgresql.statement.query.text\", \"terms_order_by\": \"2bc5fea2-b902-11e9-8b8c-f99be54b4271\", \"color\": \"rgba(22,165,165,1)\", \"value_template\": \"{{value}}\", \"split_mode\": \"terms\", \"filter\": {\"query\": \"not postgresql.statement.query.text : (\\\"BEGIN;\\\" or \\\"begin\\\" or \\\"commit\\\" or \\\"end\\\" or \\\"END;\\\" or \\\"SELECT * FROM pg_stat_statements\\\" or \\\"SELECT * FROM pg_stat_database\\\" or \\\"SELECT * FROM pg_stat_bgwriter\\\" or \\\"SELECT * FROM pg_stat_activity\\\")\", \"language\": \"kuery\"}, \"point_size\": 0, \"formatter\": \"'0a'\", \"line_width\": 2, \"separate_axis\": 0}], \"isModelInvalid\": false, \"time_range_mode\": \"entire_time_range\", \"gauge_color_rules\": [{\"id\": \"d22727f0-484b-11ea-a805-d7a3b4bc3300\"}], \"bar_color_rules\": [{\"id\": \"6da7d6e0-b902-11e9-9f00-7b1f283b2282\"}], \"pivot_id\": \"postgresql.statement.query.text\"}, \"aggs\": []}" + }, + "id": "147875b0-b903-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-02-06T12:04:42.628Z", + "version": "WzQzNTUsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Local block cache stats [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Local block cache stats [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"id\": \"8f49dbd0-b908-11e9-a256-6d0ec934f3f9\", \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"time_field\": \"@timestamp\", \"show_legend\": 1, \"show_grid\": 1, \"type\": \"timeseries\", \"interval\": \"auto\", \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"cache hits\", \"metrics\": [{\"type\": \"max\", \"id\": \"8f49dbd2-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"postgresql.statement.query.memory.local.hit\"}, {\"type\": \"derivative\", \"id\": \"8f49dbd4-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd2-b908-11e9-a256-6d0ec934f3f9\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"8f49dbd3-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd2-b908-11e9-a256-6d0ec934f3f9\", \"unit\": \"\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"id\": \"8f49dbd1-b908-11e9-a256-6d0ec934f3f9\", \"color\": \"#3185FC\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"cache read\", \"metrics\": [{\"type\": \"max\", \"id\": \"8f49dbd6-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"postgresql.statement.query.memory.local.read\"}, {\"type\": \"derivative\", \"id\": \"8f49dbd8-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd6-b908-11e9-a256-6d0ec934f3f9\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"8f49dbd7-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd6-b908-11e9-a256-6d0ec934f3f9\", \"unit\": \"\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"id\": \"8f49dbd5-b908-11e9-a256-6d0ec934f3f9\", \"color\": \"#DB1374\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}], \"index_pattern\": \"metricbeat-*\", \"axis_scale\": \"normal\", \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\"}, \"aggs\": []}" + }, + "id": "0cb65170-b909-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-01-22T13:56:51.268Z", + "version": "WzQwMzAsMV0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}" + }, + "title": "Shared block cache stats [Metricbeat PostgreSQL] ECS", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\": \"Shared block cache stats [Metricbeat PostgreSQL] ECS\", \"type\": \"metrics\", \"params\": {\"id\": \"8f49dbd0-b908-11e9-a256-6d0ec934f3f9\", \"default_index_pattern\": \"metricbeat-*\", \"axis_formatter\": \"number\", \"time_field\": \"@timestamp\", \"show_legend\": 1, \"show_grid\": 1, \"type\": \"timeseries\", \"interval\": \"auto\", \"default_timefield\": \"@timestamp\", \"series\": [{\"label\": \"cache hits\", \"metrics\": [{\"type\": \"max\", \"id\": \"8f49dbd2-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"postgresql.statement.query.memory.shared.hit\"}, {\"type\": \"derivative\", \"id\": \"8f49dbd4-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd2-b908-11e9-a256-6d0ec934f3f9\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"8f49dbd3-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd4-b908-11e9-a256-6d0ec934f3f9\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"id\": \"8f49dbd1-b908-11e9-a256-6d0ec934f3f9\", \"color\": \"#3185FC\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}, {\"label\": \"cache read\", \"metrics\": [{\"type\": \"max\", \"id\": \"8f49dbd6-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"postgresql.statement.query.memory.shared.read\"}, {\"type\": \"derivative\", \"id\": \"8f49dbd8-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd6-b908-11e9-a256-6d0ec934f3f9\", \"unit\": \"1s\"}, {\"type\": \"positive_only\", \"id\": \"8f49dbd7-b908-11e9-a256-6d0ec934f3f9\", \"field\": \"8f49dbd8-b908-11e9-a256-6d0ec934f3f9\"}], \"chart_type\": \"line\", \"axis_position\": \"right\", \"stacked\": \"none\", \"fill\": 0, \"id\": \"8f49dbd5-b908-11e9-a256-6d0ec934f3f9\", \"color\": \"#DB1374\", \"value_template\": \"{{value}}\", \"split_mode\": \"everything\", \"formatter\": \"number\", \"point_size\": 0, \"line_width\": 2, \"separate_axis\": 0}], \"index_pattern\": \"metricbeat-*\", \"axis_scale\": \"normal\", \"filter\": {\"query\": \"\", \"language\": \"kuery\"}, \"axis_position\": \"left\"}, \"aggs\": []}" + }, + "id": "e2b28ce0-b908-11e9-a579-f5c0a5d81340", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-01-22T13:56:51.268Z", + "version": "WzQwMzEsMV0=" + } + ], + "version": "7.3.1" +} \ No newline at end of file