Repository: jhipster/generator-jhipster
Pull request #9491 (2019-03-28 10:18:06)

Add default docker-compose files for Prometheus and Grafana
Create by default some Docker Compose files for using Prometheus and Grafana to monitor your applications, with an autoconfigured default dashboard in Grafana.

For the moment in this PR, Prometheus listen for instances on : 
- localhost:8080
- localhost:8081
- localhost:8082
- localhost:8083

I'm not sure if it's ok ?

-   Please make sure the below checklist is followed for Pull Requests.

-   [ ] [Travis tests](https://travis-ci.org/jhipster/generator-jhipster/pull_requests) are green
-   [x] Tests are added where necessary
-   [] Documentation is added/updated where necessary
-   [x] Coding Rules & Commit Guidelines as per our [CONTRIBUTING.md document](https://github.com/jhipster/generator-jhipster/blob/master/CONTRIBUTING.md) are followed

<!--
Please also reference the issue number in a commit message to [automatically close the related Github issue](https://help.github.com/articles/closing-issues-via-commit-messages/)

Note: It is also possible to add `[skip ci]` to your commit message to skip Travis tests
-->



Patch:
diff --git a/generators/client/templates/react/package.json.ejs b/generators/client/templates/react/package.json.ejs
index 4367c0d913..b48eee17ad 100644
--- a/generators/client/templates/react/package.json.ejs
+++ b/generators/client/templates/react/package.json.ejs
@@ -27,25 +27,27 @@ limitations under the License.
     "node_modules"
   ],
   "dependencies": {
-    "@fortawesome/fontawesome-svg-core": "1.2.17",
-    "@fortawesome/free-solid-svg-icons": "5.8.1",
+    "@fortawesome/fontawesome-svg-core": "1.2.15",
+    "@fortawesome/free-solid-svg-icons": "5.7.2",
     "@fortawesome/react-fontawesome": "0.1.4",
-    "availity-reactstrap-validation": "2.5.1",
+    "availity-reactstrap-validation": "2.5.0",
     "axios": "0.18.0",
     "bootstrap": "4.3.1",
     "loaders.css": "0.1.2",
     "lodash": "4.17.11",
     "moment": "2.24.0",
-    "react": "16.8.5",
-    "react-dom": "16.8.5",
-    "react-hot-loader": "4.8.0",
+    "react": "16.8.3",
+    "react-transition-group": "2.5.3",
+    "react-dom": "16.8.3",
+    "react-hot-loader": "4.7.1",
     "react-jhipster": "0.7.0",
     "react-loadable": "5.5.0",
     "react-redux": "6.0.1",
     "react-redux-loading-bar": "4.2.0",
-    "react-router-dom": "5.0.0",
+    "react-router": "4.3.1",
+    "react-router-dom": "4.3.1",
     "react-toastify": "4.5.2",
-    "react-transition-group": "2.7.0",
+    "react-transition-group": "2.5.3",
     "reactstrap": "7.1.0",
     "redux": "4.0.1",
     "redux-devtools": "3.5.0",
@@ -54,35 +56,34 @@ limitations under the License.
     "redux-promise-middleware": "6.1.0",
     "redux-thunk": "2.3.0",
     <%_ if (websocket === 'spring-websocket') { _%>
-    "rxjs": "6.4.0",
+    "rxjs": "5.5.12",
     "sockjs-client": "1.3.0",
+    "webstomp-client": "1.2.6",
     <%_ } _%>
     "tslib": "1.9.3",
-    "uuid": "3.3.2"<% if (websocket === 'spring-websocket') { %>,
-    "webstomp-client": "1.2.6"
-    <%_ } _%>
+    "uuid": "3.3.2"
   },
   "devDependencies": {
     <%_ if (protractorTests) { _%>
     "@types/chai": "4.1.7",
     <%_ } _%>
-    "@types/enzyme": "3.9.1",
-    "@types/jest": "24.0.11",
-    "@types/lodash": "4.14.123",
+    "@types/enzyme": "3.9.0",
+    "@types/jest": "24.0.6",
+    "@types/lodash": "4.14.121",
     <%_ if (protractorTests) { _%>
     "@types/mocha": "5.2.6",
     <%_ } _%>
-    "@types/node": "10.14.3",
-    "@types/react": "16.8.8",
-    "@types/react-dom": "16.8.3",
+    "@types/node": "10.12.27",
+    "@types/react": "16.8.4",
+    "@types/react-dom": "16.8.2",
     "@types/react-redux": "6.0.6",
     "@types/react-router-dom": "4.3.1",
     "@types/redux": "3.6.31",
     <%_ if (protractorTests) { _%>
     "@types/selenium-webdriver": "3.0.15",
     <%_ } _%>
-    "@types/webpack-env": "1.13.9",
-    "autoprefixer": "9.5.0",
+    "@types/webpack-env": "1.13.7",
+    "autoprefixer": "9.4.9",
     "base-href-webpack-plugin": "2.0.0",
     "browser-sync": "2.26.3",
     "browser-sync-webpack-plugin": "2.2.2",
@@ -91,15 +92,15 @@ limitations under the License.
     "chai": "4.2.0",
     "chai-as-promised": "7.1.1",
     <%_ } _%>
-    "copy-webpack-plugin": "5.0.2",
-    "core-js": "3.0.0",
+    "copy-webpack-plugin": "5.0.0",
+    "core-js": "2.6.5",
     "cross-env": "5.2.0",
-    "css-loader": "2.1.1",
+    "css-loader": "2.1.0",
     "enzyme": "3.9.0",
-    "enzyme-adapter-react-16": "1.11.2",
+    "enzyme-adapter-react-16": "1.9.1",
     "enzyme-to-json": "3.3.5",
     "file-loader": "3.0.1",
-    "fork-ts-checker-webpack-plugin": "1.0.0",
+    "fork-ts-checker-webpack-plugin": "0.5.2",
     "friendly-errors-webpack-plugin": "1.7.0",
     "generator-jhipster": "<%= packagejs.version %>",
     "html-webpack-plugin": "3.2.0",
@@ -107,19 +108,19 @@ limitations under the License.
     "husky": "1.3.1",
     <%_ } _%>
     "identity-obj-proxy": "3.0.0",
-    "jest": "24.5.0",
+    "jest": "24.1.0",
     "jest-junit": "6.3.0",
     "jest-sonar-reporter": "2.0.0",
     "json-loader": "0.5.7",
     <%_ if (!skipCommitHook) { _%>
-    "lint-staged": "8.1.5",
+    "lint-staged": "8.1.4",
     <%_ } _%>
     <%_ if (enableTranslation) { _%>
     "merge-jsons-webpack-plugin": "1.0.18",
     <%_ } _%>
     "mini-css-extract-plugin": "0.5.0",
     <%_ if (protractorTests) { _%>
-    "mocha": "6.0.2",
+    "mocha": "6.0.1",
     <%_ } _%>
     "moment-locales-webpack-plugin": "1.0.7",
     "optimize-css-assets-webpack-plugin": "5.0.1",
@@ -131,13 +132,10 @@ limitations under the License.
     "react-infinite-scroller": "1.2.4",
     "redux-mock-store": "1.5.3",
     "rimraf": "2.6.3",
-    <%_ if (websocket === 'spring-websocket') { _%>
-    "rxjs-tslint": "0.1.7",
-    <%_ } _%>
-    "sass": "1.17.3",
+    "sass": "1.17.2",
     "sass-loader": "7.1.0",
     "simple-progress-webpack-plugin": "1.1.2",
-    "sinon": "7.3.0",
+    "sinon": "7.2.4",
     "source-map-loader": "0.2.4",
     "sourcemap-istanbul-instrumenter-loader": "0.2.0",
     "stripcomment-loader": "0.1.0",
@@ -152,20 +150,20 @@ limitations under the License.
     "ts-jest": "24.0.0",
     "ts-loader": "5.3.3",
     <%_ if (protractorTests) { _%>
-    "ts-node": "8.0.3",
+    "ts-node": "8.0.2",
     <%_ } _%>
-    "tslint": "5.14.0",
+    "tslint": "5.13.0",
     "tslint-config-prettier": "1.18.0",
     "tslint-eslint-rules": "5.4.0",
     "tslint-loader": "3.6.0",
     "tslint-react": "3.6.0",
-    "typescript": "3.3.4000",
+    "typescript": "3.3.3333",
     "webpack": "4.28.4",
-    "webpack-cli": "3.3.0",
+    "webpack-cli": "3.2.3",
     "webpack-dev-server": "3.2.1",
     "webpack-merge": "4.2.1",
     "webpack-notifier": "1.7.0",
-    "workbox-webpack-plugin": "4.1.1",
+    "workbox-webpack-plugin": "3.6.3",
     "write-file-webpack-plugin": "4.5.0"<% if (buildTool === 'maven') { %>,
     "xml2js": "0.4.19"<% } %>
   },
diff --git a/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs b/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs
index 0c7929c386..893352dcc9 100644
--- a/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs
+++ b/generators/client/templates/react/src/main/webapp/app/config/websocket-middleware.ts.ejs
@@ -20,9 +20,8 @@ import SockJS from 'sockjs-client';
 
 import Stomp from 'webstomp-client';
 import { Observable } from 'rxjs'; // tslint:disable-line
-<%_ if (authenticationType !== 'session') { _%>
+import { Observer } from 'rxjs/Observer'; // tslint:disable-line
 import { Storage } from 'react-jhipster';
-<%_ } _%>
 
 import { ACTION_TYPES as ADMIN_ACTIONS } from 'app/modules/administration/administration.reducer';
 import { ACTION_TYPES as AUTH_ACTIONS } from 'app/shared/reducers/authentication';
@@ -37,7 +36,7 @@ let subscriber = null;
 let connection: Promise<any>;
 let connectedPromise: any = null;
 let listener: Observable<any>;
-let listenerObserver: any;
+let listenerObserver: Observer<any>;
 let alreadyConnectedOnce = false;
 
 const createConnection = (): Promise<any> => new Promise((resolve, reject) => (connectedPromise = resolve));
@@ -115,6 +114,7 @@ const disconnect = () => {
 
 const receive = () => listener;
 
+
 const unsubscribe = () => {
   if (subscriber !== null) {
     subscriber.unsubscribe();
diff --git a/generators/client/templates/react/tslint.json.ejs b/generators/client/templates/react/tslint.json.ejs
index 41379dc9c2..6c6d1149f1 100644
--- a/generators/client/templates/react/tslint.json.ejs
+++ b/generators/client/templates/react/tslint.json.ejs
@@ -224,12 +224,8 @@
 
     "jsx-boolean-value": [true, "never"],
     "jsx-no-multiline-js": false,
-    "jsx-alignment": false<% if (websocket === 'spring-websocket') { %>,
-    "rxjs-collapse-imports": true,
-    "rxjs-pipeable-operators-only": true,
-    "rxjs-no-static-observable-methods": true,
-    "rxjs-proper-imports": true
-    <%_ } _%>
+    "jsx-alignment": false
+
   },
-  "rulesDirectory": [<% if (websocket === 'spring-websocket') { %>"node_modules/rxjs-tslint"<% } %>]
+  "rulesDirectory": []
 }
diff --git a/generators/generator-base-private.js b/generators/generator-base-private.js
index d4a5460a33..d473bf46dd 100644
--- a/generators/generator-base-private.js
+++ b/generators/generator-base-private.js
@@ -719,9 +719,6 @@ module.exports = class extends Generator {
      * @param {string} blueprint - name of the blueprint
      */
     normalizeBlueprintName(blueprint) {
-        if (blueprint && blueprint.startsWith('@')) {
-            return blueprint;
-        }
         if (blueprint && !blueprint.startsWith('generator-jhipster')) {
             return `generator-jhipster-${blueprint}`;
         }
diff --git a/generators/server/files.js b/generators/server/files.js
index aa010603f9..6a031ea920 100644
--- a/generators/server/files.js
+++ b/generators/server/files.js
@@ -51,7 +51,18 @@ const serverFiles = {
     docker: [
         {
             path: DOCKER_DIR,
-            templates: ['Dockerfile', 'entrypoint.sh', '.dockerignore', 'app.yml', 'sonar.yml']
+            templates: [
+                'Dockerfile',
+                'entrypoint.sh',
+                '.dockerignore',
+                'app.yml',
+                'sonar.yml',
+                'monitoring.yml',
+                'prometheus/prometheus.yml',
+                'grafana/provisioning/dashboards/dashboard.yml',
+                'grafana/provisioning/dashboards/JVM.json',
+                'grafana/provisioning/datasources/datasource.yml'
+            ]
         },
         {
             condition: generator => generator.prodDatabaseType !== 'no' && generator.prodDatabaseType !== 'oracle',
@@ -468,10 +479,6 @@ const serverFiles = {
                 {
                     file: 'package/security/oauth2/AudienceValidatorTest.java',
                     renameTo: generator => `${generator.javaDir}security/oauth2/AudienceValidatorTest.java`
-                },
-                {
-                    file: 'package/config/TestSecurityConfiguration.java',
-                    renameTo: generator => `${generator.testDir}config/TestSecurityConfiguration.java`
                 }
             ]
         },
@@ -789,6 +796,10 @@ const serverFiles = {
                     file: 'package/aop/logging/LoggingAspect.java',
                     renameTo: generator => `${generator.javaDir}aop/logging/LoggingAspect.java`
                 },
+                {
+                    file: 'package/config/lazy/LazyInitBeanFactoryPostProcessor.java',
+                    renameTo: generator => `${generator.javaDir}config/lazy/LazyInitBeanFactoryPostProcessor.java`
+                },
                 {
                     file: 'package/config/DefaultProfileUtil.java',
                     renameTo: generator => `${generator.javaDir}config/DefaultProfileUtil.java`
diff --git a/generators/server/index.js b/generators/server/index.js
index 1726a11464..0ece46ce31 100644
--- a/generators/server/index.js
+++ b/generators/server/index.js
@@ -121,6 +121,8 @@ module.exports = class extends BaseBlueprintGenerator {
                 this.DOCKER_CONSUL = constants.DOCKER_CONSUL;
                 this.DOCKER_CONSUL_CONFIG_LOADER = constants.DOCKER_CONSUL_CONFIG_LOADER;
                 this.DOCKER_SWAGGER_EDITOR = constants.DOCKER_SWAGGER_EDITOR;
+                this.DOCKER_PROMETHEUS = constants.DOCKER_PROMETHEUS;
+                this.DOCKER_GRAFANA = constants.DOCKER_GRAFANA;
 
                 this.JAVA_VERSION = constants.JAVA_VERSION;
                 this.SCALA_VERSION = constants.SCALA_VERSION;
diff --git a/generators/server/templates/build.gradle.ejs b/generators/server/templates/build.gradle.ejs
index a2480e8507..1d4550f08a 100644
--- a/generators/server/templates/build.gradle.ejs
+++ b/generators/server/templates/build.gradle.ejs
@@ -435,6 +435,7 @@ dependencies {
     <%_ } _%>
     <%_ if (authenticationType === 'uaa') { _%>
     implementation "org.springframework.security.oauth:spring-security-oauth2"
+    implementation "org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure"
     implementation "org.springframework.security:spring-security-jwt"
     <%_ } _%>
     <%_ if (databaseType === 'mongodb') { _%>
diff --git a/generators/server/templates/pom.xml.ejs b/generators/server/templates/pom.xml.ejs
index 8cfacb1943..8e346d12ac 100644
--- a/generators/server/templates/pom.xml.ejs
+++ b/generators/server/templates/pom.xml.ejs
@@ -604,6 +604,10 @@
             <groupId>org.springframework.security.oauth</groupId>
             <artifactId>spring-security-oauth2</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.security.oauth.boot</groupId>
+            <artifactId>spring-security-oauth2-autoconfigure</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-jwt</artifactId>
@@ -1648,13 +1652,6 @@
                     <name>m2e.version</name>
                 </property>
             </activation>
-            <dependencies>
-                <!-- The following dependency is added due to issue #9175-->
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-undertow</artifactId>
-                </dependency>
-            </dependencies>
             <build>
                 <pluginManagement>
                     <plugins>
diff --git a/generators/server/templates/src/main/docker/elasticsearch.yml.ejs b/generators/server/templates/src/main/docker/elasticsearch.yml.ejs
index 70644dd45d..1bc64de19b 100644
--- a/generators/server/templates/src/main/docker/elasticsearch.yml.ejs
+++ b/generators/server/templates/src/main/docker/elasticsearch.yml.ejs
@@ -16,7 +16,7 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -%>
-version: '2'
+version: '2.2'
 services:
     <%= baseName.toLowerCase() %>-elasticsearch:
         image: <%= DOCKER_ELASTICSEARCH %>
diff --git a/generators/server/templates/src/main/docker/grafana/provisioning/dashboards/JVM.json.ejs b/generators/server/templates/src/main/docker/grafana/provisioning/dashboards/JVM.json.ejs
new file mode 100644
index 0000000000..eab0eaef7c
--- /dev/null
+++ b/generators/server/templates/src/main/docker/grafana/provisioning/dashboards/JVM.json.ejs
@@ -0,0 +1,3893 @@
+<%#
+ Copyright 2013-2019 the original author or authors from the JHipster project.
+
+ This file is part of the JHipster project, see https://www.jhipster.tech/
+ for more information.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-%>
+{
+    "annotations": {
+        "list": [
+        {
+            "builtIn": 1,
+            "datasource": "-- Grafana --",
+            "enable": true,
+            "hide": true,
+            "iconColor": "rgba(0, 211, 255, 1)",
+            "limit": 100,
+            "name": "Annotations & Alerts",
+            "showIn": 0,
+            "type": "dashboard"
+        },
+        {
+            "datasource": "Prometheus",
+            "enable": true,
+            "expr": "resets(process_uptime_seconds{application=\"$application\", instance=\"$instance\"}[1m]) > 0",
+            "iconColor": "rgba(255, 96, 96, 1)",
+            "name": "Restart Detection",
+            "showIn": 0,
+            "step": "1m",
+            "tagKeys": "restart-tag",
+            "textFormat": "uptime reset",
+            "titleFormat": "Restart"
+        }
+        ]
+    },
+    "description": "Dashboard for Micrometer instrumented applications (Java, Spring Boot, Micronaut)",
+    "editable": true,
+    "gnetId": 4701,
+    "graphTooltip": 1,
+    "iteration": 1553765841423,
+    "links": [],
+    "panels": [
+    {
+        "content": "\n# Acknowledgments\n\nThank you to [Michael Weirauch](https://twitter.com/emwexx) for creating this dashboard: see original JVM (Micrometer) dashboard at [https://grafana.com/dashboards/4701](https://grafana.com/dashboards/4701)\n\n\n\n",
+        "gridPos": {
+            "h": 3,
+            "w": 24,
+            "x": 0,
+            "y": 0
+        },
+        "id": 141,
+        "links": [],
+        "mode": "markdown",
+        "timeFrom": null,
+        "timeShift": null,
+        "title": "Acknowledgments",
+        "type": "text"
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 3
+        },
+        "id": 125,
+        "panels": [],
+        "repeat": null,
+        "title": "Quick Facts",
+        "type": "row"
+    },
+    {
+        "cacheTimeout": null,
+        "colorBackground": false,
+        "colorValue": true,
+        "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+        ],
+        "datasource": "Prometheus",
+        "decimals": 1,
+        "editable": true,
+        "error": false,
+        "format": "s",
+        "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+        },
+        "gridPos": {
+            "h": 3,
+            "w": 6,
+            "x": 0,
+            "y": 4
+        },
+        "height": "",
+        "id": 63,
+        "interval": null,
+        "links": [],
+        "mappingType": 1,
+        "mappingTypes": [
+        {
+            "name": "value to text",
+            "value": 1
+        },
+        {
+            "name": "range to text",
+            "value": 2
+        }
+        ],
+        "maxDataPoints": 100,
+        "nullPointMode": "connected",
+        "nullText": null,
+        "postfix": "",
+        "postfixFontSize": "50%",
+        "prefix": "",
+        "prefixFontSize": "70%",
+        "rangeMaps": [
+        {
+            "from": "null",
+            "text": "N/A",
+            "to": "null"
+        }
+        ],
+        "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+        },
+        "tableColumn": "",
+        "targets": [
+        {
+            "expr": "process_uptime_seconds{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "",
+            "metric": "",
+            "refId": "A",
+            "step": 14400
+        }
+        ],
+        "thresholds": "",
+        "title": "Uptime",
+        "type": "singlestat",
+        "valueFontSize": "80%",
+        "valueMaps": [
+        {
+            "op": "=",
+            "text": "N/A",
+            "value": "null"
+        }
+        ],
+        "valueName": "current"
+    },
+    {
+        "cacheTimeout": null,
+        "colorBackground": false,
+        "colorValue": true,
+        "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+        ],
+        "datasource": "Prometheus",
+        "decimals": null,
+        "editable": true,
+        "error": false,
+        "format": "dateTimeAsIso",
+        "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+        },
+        "gridPos": {
+            "h": 3,
+            "w": 6,
+            "x": 6,
+            "y": 4
+        },
+        "height": "",
+        "id": 92,
+        "interval": null,
+        "links": [],
+        "mappingType": 1,
+        "mappingTypes": [
+        {
+            "name": "value to text",
+            "value": 1
+        },
+        {
+            "name": "range to text",
+            "value": 2
+        }
+        ],
+        "maxDataPoints": 100,
+        "nullPointMode": "connected",
+        "nullText": null,
+        "postfix": "",
+        "postfixFontSize": "50%",
+        "prefix": "",
+        "prefixFontSize": "70%",
+        "rangeMaps": [
+        {
+            "from": "null",
+            "text": "N/A",
+            "to": "null"
+        }
+        ],
+        "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+        },
+        "tableColumn": "",
+        "targets": [
+        {
+            "expr": "process_start_time_seconds{application=\"$application\", instance=\"$instance\"}*1000",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "",
+            "metric": "",
+            "refId": "A",
+            "step": 14400
+        }
+        ],
+        "thresholds": "",
+        "title": "Start time",
+        "type": "singlestat",
+        "valueFontSize": "70%",
+        "valueMaps": [
+        {
+            "op": "=",
+            "text": "N/A",
+            "value": "null"
+        }
+        ],
+        "valueName": "current"
+    },
+    {
+        "cacheTimeout": null,
+        "colorBackground": false,
+        "colorValue": true,
+        "colors": [
+            "rgba(50, 172, 45, 0.97)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(245, 54, 54, 0.9)"
+        ],
+        "datasource": "Prometheus",
+        "decimals": 2,
+        "editable": true,
+        "error": false,
+        "format": "percent",
+        "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+        },
+        "gridPos": {
+            "h": 3,
+            "w": 6,
+            "x": 12,
+            "y": 4
+        },
+        "id": 65,
+        "interval": null,
+        "links": [],
+        "mappingType": 1,
+        "mappingTypes": [
+        {
+            "name": "value to text",
+            "value": 1
+        },
+        {
+            "name": "range to text",
+            "value": 2
+        }
+        ],
+        "maxDataPoints": 100,
+        "nullPointMode": "connected",
+        "nullText": null,
+        "postfix": "",
+        "postfixFontSize": "50%",
+        "prefix": "",
+        "prefixFontSize": "70%",
+        "rangeMaps": [
+        {
+            "from": "null",
+            "text": "N/A",
+            "to": "null"
+        }
+        ],
+        "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+        },
+        "tableColumn": "",
+        "targets": [
+        {
+            "expr": "sum(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", area=\"heap\"})*100/sum(jvm_memory_max_bytes{application=\"$application\",instance=\"$instance\", area=\"heap\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "",
+            "refId": "A",
+            "step": 14400
+        }
+        ],
+        "thresholds": "70,90",
+        "title": "Heap used",
+        "type": "singlestat",
+        "valueFontSize": "80%",
+        "valueMaps": [
+        {
+            "op": "=",
+            "text": "N/A",
+            "value": "null"
+        }
+        ],
+        "valueName": "current"
+    },
+    {
+        "cacheTimeout": null,
+        "colorBackground": false,
+        "colorValue": true,
+        "colors": [
+            "rgba(50, 172, 45, 0.97)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(245, 54, 54, 0.9)"
+        ],
+        "datasource": "Prometheus",
+        "decimals": 2,
+        "editable": true,
+        "error": false,
+        "format": "percent",
+        "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+        },
+        "gridPos": {
+            "h": 3,
+            "w": 6,
+            "x": 18,
+            "y": 4
+        },
+        "id": 75,
+        "interval": null,
+        "links": [],
+        "mappingType": 2,
+        "mappingTypes": [
+        {
+            "name": "value to text",
+            "value": 1
+        },
+        {
+            "name": "range to text",
+            "value": 2
+        }
+        ],
+        "maxDataPoints": 100,
+        "nullPointMode": "connected",
+        "nullText": null,
+        "postfix": "",
+        "postfixFontSize": "50%",
+        "prefix": "",
+        "prefixFontSize": "70%",
+        "rangeMaps": [
+        {
+            "from": "null",
+            "text": "N/A",
+            "to": "null"
+        },
+        {
+            "from": "-99999999999999999999999999999999",
+            "text": "N/A",
+            "to": "0"
+        }
+        ],
+        "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+        },
+        "tableColumn": "",
+        "targets": [
+        {
+            "expr": "sum(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", area=\"nonheap\"})*100/sum(jvm_memory_max_bytes{application=\"$application\",instance=\"$instance\", area=\"nonheap\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "",
+            "refId": "A",
+            "step": 14400
+        }
+        ],
+        "thresholds": "70,90",
+        "title": "Non-Heap used",
+        "type": "singlestat",
+        "valueFontSize": "80%",
+        "valueMaps": [
+        {
+            "op": "=",
+            "text": "N/A",
+            "value": "null"
+        },
+        {
+            "op": "=",
+            "text": "x",
+            "value": ""
+        }
+        ],
+        "valueName": "current"
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 7
+        },
+        "id": 126,
+        "panels": [],
+        "repeat": null,
+        "title": "I/O Overview",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "fill": 1,
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 0,
+            "y": 8
+        },
+        "id": 111,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\"}[1m]))",
+            "format": "time_series",
+            "intervalFactor": 1,
+            "legendFormat": "HTTP",
+            "refId": "A"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Rate",
+        "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "yaxes": [
+        {
+            "decimals": null,
+            "format": "ops",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": "0",
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {
+            "HTTP": "#890f02",
+            "HTTP - 5xx": "#bf1b00"
+        },
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "fill": 1,
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 8,
+            "y": 8
+        },
+        "id": 112,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\", status=~\"5..\"}[1m]))",
+            "format": "time_series",
+            "intervalFactor": 1,
+            "legendFormat": "HTTP - 5xx",
+            "refId": "A"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Errors",
+        "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "yaxes": [
+        {
+            "decimals": null,
+            "format": "ops",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": "0",
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "fill": 1,
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 16,
+            "y": 8
+        },
+        "id": 113,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "sum(rate(http_server_requests_seconds_sum{application=\"$application\", instance=\"$instance\", status!~\"5..\"}[1m]))/sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\", status!~\"5..\"}[1m]))",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 1,
+            "legendFormat": "HTTP - AVG",
+            "refId": "A"
+        },
+        {
+            "expr": "max(http_server_requests_seconds_max{application=\"$application\", instance=\"$instance\", status!~\"5..\"})",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 1,
+            "legendFormat": "HTTP - MAX",
+            "refId": "B"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Duration",
+        "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "yaxes": [
+        {
+            "format": "s",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": "0",
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 15
+        },
+        "id": 127,
+        "panels": [],
+        "repeat": null,
+        "title": "JVM Memory",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 0,
+            "y": 16
+        },
+        "id": 24,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "sum(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", area=\"heap\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "sum(jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", area=\"heap\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "committed",
+            "refId": "B",
+            "step": 2400
+        },
+        {
+            "expr": "sum(jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", area=\"heap\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "refId": "C",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "JVM Heap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 8,
+            "y": 16
+        },
+        "id": 25,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "sum(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", area=\"nonheap\"})",
+            "format": "time_series",
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "sum(jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", area=\"nonheap\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "committed",
+            "refId": "B",
+            "step": 2400
+        },
+        {
+            "expr": "sum(jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", area=\"nonheap\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "refId": "C",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "JVM Non-Heap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 16,
+            "y": 16
+        },
+        "id": 26,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "sum(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "sum(jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "committed",
+            "refId": "B",
+            "step": 2400
+        },
+        {
+            "expr": "sum(jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\"})",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "refId": "C",
+            "step": 2400
+        },
+        {
+            "expr": "process_memory_vss_bytes{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "hide": true,
+            "intervalFactor": 2,
+            "legendFormat": "vss",
+            "metric": "",
+            "refId": "D",
+            "step": 2400
+        },
+        {
+            "expr": "process_memory_rss_bytes{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "rss",
+            "refId": "E",
+            "step": 2400
+        },
+        {
+            "expr": "process_memory_pss_bytes{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "pss",
+            "refId": "F",
+            "step": 2400
+        },
+        {
+            "expr": "process_memory_swap_bytes{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "swap",
+            "refId": "G",
+            "step": 2400
+        },
+        {
+            "expr": "process_memory_swappss_bytes{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "swappss",
+            "refId": "H",
+            "step": 2400
+        },
+        {
+            "expr": "process_memory_pss_bytes{application=\"$application\", instance=\"$instance\"} + process_memory_swap_bytes{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "phys (pss+swap)",
+            "refId": "I",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "JVM Total",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": "",
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 23
+        },
+        "id": 128,
+        "panels": [],
+        "repeat": null,
+        "title": "JVM Misc",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 0,
+            "y": 24
+        },
+        "id": 106,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "system_cpu_usage{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 1,
+            "legendFormat": "system",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "process_cpu_usage{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 1,
+            "legendFormat": "process",
+            "refId": "B"
+        },
+        {
+            "expr": "avg_over_time(process_cpu_usage{application=\"$application\", instance=\"$instance\"}[1h])",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 1,
+            "legendFormat": "process-1h",
+            "refId": "C"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "CPU",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": 1,
+            "format": "percentunit",
+            "label": "",
+            "logBase": 1,
+            "max": "1",
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 6,
+            "y": 24
+        },
+        "id": 93,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "system_load_average_1m{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "system-1m",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "refId": "B"
+        },
+        {
+            "expr": "system_cpu_count{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "cpu",
+            "refId": "C"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Load",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": 1,
+            "format": "short",
+            "label": "",
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 12,
+            "y": 24
+        },
+        "id": 32,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_threads_live{application=\"$application\", instance=\"$instance\"} or jvm_threads_live_threads{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "live",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "jvm_threads_daemon{application=\"$application\", instance=\"$instance\"} or jvm_threads_daemon_threads{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "daemon",
+            "metric": "",
+            "refId": "B",
+            "step": 2400
+        },
+        {
+            "expr": "jvm_threads_peak{application=\"$application\", instance=\"$instance\"} or jvm_threads_peak_threads{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "peak",
+            "refId": "C",
+            "step": 2400
+        },
+        {
+            "expr": "process_threads{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "process",
+            "refId": "D",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Threads",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": 0,
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {
+            "blocked": "#bf1b00",
+            "new": "#fce2de",
+            "runnable": "#7eb26d",
+            "terminated": "#511749",
+            "timed-waiting": "#c15c17",
+            "waiting": "#eab839"
+        },
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "fill": 1,
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 18,
+            "y": 24
+        },
+        "id": 124,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_threads_states_threads{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "{{state}}",
+            "refId": "A"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Thread States",
+        "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "yaxes": [
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {
+            "debug": "#1F78C1",
+            "error": "#BF1B00",
+            "info": "#508642",
+            "trace": "#6ED0E0",
+            "warn": "#EAB839"
+        },
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 18,
+            "x": 0,
+            "y": 31
+        },
+        "height": "",
+        "id": 91,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "hideEmpty": false,
+            "hideZero": false,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": true,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [
+        {
+            "alias": "error",
+            "yaxis": 1
+        },
+        {
+            "alias": "warn",
+            "yaxis": 1
+        }
+        ],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "increase(logback_events_total{application=\"$application\", instance=\"$instance\"}[1m])",
+            "format": "time_series",
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "{{level}}",
+            "metric": "",
+            "refId": "A",
+            "step": 1200
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Log Events (1m)",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": 0,
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": "0",
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 18,
+            "y": 31
+        },
+        "id": 61,
+        "legend": {
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "process_open_fds{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 2,
+            "legendFormat": "open",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "process_max_fds{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "metric": "",
+            "refId": "B",
+            "step": 2400
+        },
+        {
+            "expr": "process_files_open{application=\"$application\", instance=\"$instance\"} or process_files_open_files{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "open",
+            "refId": "C"
+        },
+        {
+            "expr": "process_files_max{application=\"$application\", instance=\"$instance\"} or process_files_max_files{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "refId": "D"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "File Descriptors",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": 0,
+            "format": "short",
+            "label": null,
+            "logBase": 10,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 38
+        },
+        "id": 129,
+        "panels": [],
+        "repeat": "persistence_counts",
+        "title": "JVM Memory Pools (Heap)",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 0,
+            "y": 39
+        },
+        "id": 3,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "maxPerRow": 3,
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "repeat": "jvm_memory_pool_heap",
+        "scopedVars": {
+            "jvm_memory_pool_heap": {
+                "selected": false,
+                "text": "PS Eden Space",
+                "value": "PS Eden Space"
+            }
+        },
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "commited",
+            "metric": "",
+            "refId": "B",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "metric": "",
+            "refId": "C",
+            "step": 1800
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "$jvm_memory_pool_heap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 8,
+            "y": 39
+        },
+        "id": 134,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "maxPerRow": 3,
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "repeat": null,
+        "repeatIteration": 1553765841423,
+        "repeatPanelId": 3,
+        "scopedVars": {
+            "jvm_memory_pool_heap": {
+                "selected": false,
+                "text": "PS Old Gen",
+                "value": "PS Old Gen"
+            }
+        },
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "commited",
+            "metric": "",
+            "refId": "B",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "metric": "",
+            "refId": "C",
+            "step": 1800
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "$jvm_memory_pool_heap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 16,
+            "y": 39
+        },
+        "id": 135,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "maxPerRow": 3,
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "repeat": null,
+        "repeatIteration": 1553765841423,
+        "repeatPanelId": 3,
+        "scopedVars": {
+            "jvm_memory_pool_heap": {
+                "selected": false,
+                "text": "PS Survivor Space",
+                "value": "PS Survivor Space"
+            }
+        },
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "commited",
+            "metric": "",
+            "refId": "B",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_heap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "metric": "",
+            "refId": "C",
+            "step": 1800
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "$jvm_memory_pool_heap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 46
+        },
+        "id": 130,
+        "panels": [],
+        "repeat": null,
+        "title": "JVM Memory Pools (Non-Heap)",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 0,
+            "y": 47
+        },
+        "id": 78,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "maxPerRow": 3,
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "repeat": "jvm_memory_pool_nonheap",
+        "scopedVars": {
+            "jvm_memory_pool_nonheap": {
+                "selected": false,
+                "text": "Metaspace",
+                "value": "Metaspace"
+            }
+        },
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "commited",
+            "metric": "",
+            "refId": "B",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "metric": "",
+            "refId": "C",
+            "step": 1800
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "$jvm_memory_pool_nonheap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 8,
+            "y": 47
+        },
+        "id": 136,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "maxPerRow": 3,
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "repeat": null,
+        "repeatIteration": 1553765841423,
+        "repeatPanelId": 78,
+        "scopedVars": {
+            "jvm_memory_pool_nonheap": {
+                "selected": false,
+                "text": "Compressed Class Space",
+                "value": "Compressed Class Space"
+            }
+        },
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "commited",
+            "metric": "",
+            "refId": "B",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "metric": "",
+            "refId": "C",
+            "step": 1800
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "$jvm_memory_pool_nonheap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 16,
+            "y": 47
+        },
+        "id": 137,
+        "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": true,
+            "max": true,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": true
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "maxPerRow": 3,
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "repeat": null,
+        "repeatIteration": 1553765841423,
+        "repeatPanelId": 78,
+        "scopedVars": {
+            "jvm_memory_pool_nonheap": {
+                "selected": false,
+                "text": "Code Cache",
+                "value": "Code Cache"
+            }
+        },
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "commited",
+            "metric": "",
+            "refId": "B",
+            "step": 1800
+        },
+        {
+            "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=\"$jvm_memory_pool_nonheap\"}",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "max",
+            "metric": "",
+            "refId": "C",
+            "step": 1800
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "$jvm_memory_pool_nonheap",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "mbytes",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 54
+        },
+        "id": 131,
+        "panels": [],
+        "repeat": null,
+        "title": "Garbage Collection",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "fill": 1,
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 0,
+            "y": 55
+        },
+        "id": 98,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "rate(jvm_gc_pause_seconds_count{application=\"$application\", instance=\"$instance\"}[1m])",
+            "format": "time_series",
+            "hide": false,
+            "intervalFactor": 2,
+            "legendFormat": "{{action}} ({{cause}})",
+            "refId": "A"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Collections",
+        "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "yaxes": [
+        {
+            "format": "ops",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": "0",
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": "",
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "fill": 1,
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 8,
+            "y": 55
+        },
+        "id": 101,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "rate(jvm_gc_pause_seconds_sum{application=\"$application\", instance=\"$instance\"}[1m])/rate(jvm_gc_pause_seconds_count{application=\"$application\", instance=\"$instance\"}[1m])",
+            "format": "time_series",
+            "hide": false,
+            "instant": false,
+            "intervalFactor": 1,
+            "legendFormat": "avg {{action}} ({{cause}})",
+            "refId": "A"
+        },
+        {
+            "expr": "jvm_gc_pause_seconds_max{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "hide": false,
+            "instant": false,
+            "intervalFactor": 1,
+            "legendFormat": "max {{action}} ({{cause}})",
+            "refId": "B"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Pause Durations",
+        "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "yaxes": [
+        {
+            "format": "s",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": "0",
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": "",
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "fill": 1,
+        "gridPos": {
+            "h": 7,
+            "w": 8,
+            "x": 16,
+            "y": 55
+        },
+        "id": 99,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "rate(jvm_gc_memory_allocated_bytes_total{application=\"$application\", instance=\"$instance\"}[1m])",
+            "format": "time_series",
+            "interval": "",
+            "intervalFactor": 1,
+            "legendFormat": "allocated",
+            "refId": "A"
+        },
+        {
+            "expr": "rate(jvm_gc_memory_promoted_bytes_total{application=\"$application\", instance=\"$instance\"}[1m])",
+            "format": "time_series",
+            "interval": "",
+            "intervalFactor": 1,
+            "legendFormat": "promoted",
+            "refId": "B"
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Allocated/Promoted",
+        "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+        },
+        "type": "graph",
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": "0",
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 62
+        },
+        "id": 132,
+        "panels": [],
+        "repeat": null,
+        "title": "Classloading",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 12,
+            "x": 0,
+            "y": 63
+        },
+        "id": 37,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_classes_loaded{application=\"$application\", instance=\"$instance\"} or jvm_classes_loaded_classes{application=\"$application\", instance=\"$instance\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "loaded",
+            "metric": "",
+            "refId": "A",
+            "step": 1200
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Classes loaded",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 12,
+            "x": 12,
+            "y": 63
+        },
+        "id": 38,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "delta(jvm_classes_loaded{application=\"$application\",instance=\"$instance\"}[5m]) or delta(jvm_classes_loaded_classes{application=\"$application\",instance=\"$instance\"}[5m])",
+            "format": "time_series",
+            "hide": false,
+            "interval": "",
+            "intervalFactor": 2,
+            "legendFormat": "delta",
+            "metric": "",
+            "refId": "A",
+            "step": 1200
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Class delta (5m)",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "ops",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": null,
+            "format": "short",
+            "label": "",
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "collapsed": false,
+        "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 70
+        },
+        "id": 133,
+        "panels": [],
+        "repeat": null,
+        "title": "Buffer Pools",
+        "type": "row"
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 0,
+            "y": 71
+        },
+        "id": 33,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_buffer_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"direct\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "jvm_buffer_total_capacity_bytes{application=\"$application\", instance=\"$instance\", id=\"direct\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "capacity",
+            "metric": "",
+            "refId": "B",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Direct Buffers",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 6,
+            "y": 71
+        },
+        "id": 83,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_buffer_count{application=\"$application\", instance=\"$instance\", id=\"direct\"} or jvm_buffer_count_buffers{application=\"$application\", instance=\"$instance\", id=\"direct\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "count",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Direct Buffers",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": 0,
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 12,
+            "y": 71
+        },
+        "id": 85,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_buffer_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"mapped\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "used",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        },
+        {
+            "expr": "jvm_buffer_total_capacity_bytes{application=\"$application\", instance=\"$instance\", id=\"mapped\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "capacity",
+            "metric": "",
+            "refId": "B",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Mapped Buffers",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "format": "bytes",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    },
+    {
+        "aliasColors": {},
+        "bars": false,
+        "dashLength": 10,
+        "dashes": false,
+        "datasource": "Prometheus",
+        "editable": true,
+        "error": false,
+        "fill": 1,
+        "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null
+        },
+        "gridPos": {
+            "h": 7,
+            "w": 6,
+            "x": 18,
+            "y": 71
+        },
+        "id": 84,
+        "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+        },
+        "lines": true,
+        "linewidth": 1,
+        "links": [],
+        "nullPointMode": "null",
+        "paceLength": 10,
+        "percentage": false,
+        "pointradius": 5,
+        "points": false,
+        "renderer": "flot",
+        "seriesOverrides": [],
+        "spaceLength": 10,
+        "stack": false,
+        "steppedLine": false,
+        "targets": [
+        {
+            "expr": "jvm_buffer_count{application=\"$application\", instance=\"$instance\", id=\"mapped\"} or jvm_buffer_count_buffers{application=\"$application\", instance=\"$instance\", id=\"mapped\"}",
+            "format": "time_series",
+            "intervalFactor": 2,
+            "legendFormat": "count",
+            "metric": "",
+            "refId": "A",
+            "step": 2400
+        }
+        ],
+        "thresholds": [],
+        "timeFrom": null,
+        "timeRegions": [],
+        "timeShift": null,
+        "title": "Mapped Buffers",
+        "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+        },
+        "type": "graph",
+        "x-axis": true,
+        "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+        },
+        "y-axis": true,
+        "y_formats": [
+            "short",
+            "short"
+        ],
+        "yaxes": [
+        {
+            "decimals": 0,
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": 0,
+            "show": true
+        },
+        {
+            "format": "short",
+            "label": null,
+            "logBase": 1,
+            "max": null,
+            "min": null,
+            "show": true
+        }
+        ],
+        "yaxis": {
+            "align": false,
+            "alignLevel": null
+        }
+    }
+    ],
+    "refresh": "10s",
+    "schemaVersion": 18,
+    "style": "dark",
+    "tags": [],
+    "templating": {
+        "list": [
+        {
+            "allValue": null,
+            "current": {
+                "text": "test",
+                "value": "test"
+            },
+            "datasource": "Prometheus",
+            "definition": "",
+            "hide": 0,
+            "includeAll": false,
+            "label": "Application",
+            "multi": false,
+            "name": "application",
+            "options": [],
+            "query": "label_values(application)",
+            "refresh": 2,
+            "regex": "",
+            "skipUrlSync": false,
+            "sort": 0,
+            "tagValuesQuery": "",
+            "tags": [],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+        },
+        {
+            "allFormat": "glob",
+            "allValue": null,
+            "current": {
+                "text": "localhost:8080",
+                "value": "localhost:8080"
+            },
+            "datasource": "Prometheus",
+            "definition": "",
+            "hide": 0,
+            "includeAll": false,
+            "label": "Instance",
+            "multi": false,
+            "multiFormat": "glob",
+            "name": "instance",
+            "options": [],
+            "query": "label_values(jvm_memory_used_bytes{application=\"$application\"}, instance)",
+            "refresh": 2,
+            "regex": "",
+            "skipUrlSync": false,
+            "sort": 0,
+            "tagValuesQuery": "",
+            "tags": [],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+        },
+        {
+            "allFormat": "glob",
+            "allValue": null,
+            "current": {
+                "text": "All",
+                "value": "$__all"
+            },
+            "datasource": "Prometheus",
+            "definition": "",
+            "hide": 0,
+            "includeAll": true,
+            "label": "JVM Memory Pools Heap",
+            "multi": false,
+            "multiFormat": "glob",
+            "name": "jvm_memory_pool_heap",
+            "options": [],
+            "query": "label_values(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", area=\"heap\"},id)",
+            "refresh": 1,
+            "regex": "",
+            "skipUrlSync": false,
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+        },
+        {
+            "allFormat": "glob",
+            "allValue": null,
+            "current": {
+                "text": "All",
+                "value": "$__all"
+            },
+            "datasource": "Prometheus",
+            "definition": "",
+            "hide": 0,
+            "includeAll": true,
+            "label": "JVM Memory Pools Non-Heap",
+            "multi": false,
+            "multiFormat": "glob",
+            "name": "jvm_memory_pool_nonheap",
+            "options": [],
+            "query": "label_values(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", area=\"nonheap\"},id)",
+            "refresh": 1,
+            "regex": "",
+            "skipUrlSync": false,
+            "sort": 2,
+            "tagValuesQuery": "",
+            "tags": [],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+        }
+        ]
+    },
+    "time": {
+        "from": "now-30m",
+        "to": "now"
+    },
+    "timepicker": {
+        "now": true,
+        "refresh_intervals": [
+            "5s",
+            "10s",
+            "30s",
+            "1m",
+            "5m",
+            "15m",
+            "30m",
+            "1h",
+            "2h",
+            "1d"
+        ],
+        "time_options": [
+            "5m",
+            "15m",
+            "1h",
+            "6h",
+            "12h",
+            "24h",
+            "2d",
+            "7d",
+            "30d"
+        ]
+    },
+    "timezone": "browser",
+    "title": "JVM (Micrometer)",
+    "uid": "Ud1CFe3iz",
+    "version": 1
+}
diff --git a/generators/server/templates/src/main/docker/grafana/provisioning/dashboards/dashboard.yml.ejs b/generators/server/templates/src/main/docker/grafana/provisioning/dashboards/dashboard.yml.ejs
new file mode 100644
index 0000000000..6a317104f7
--- /dev/null
+++ b/generators/server/templates/src/main/docker/grafana/provisioning/dashboards/dashboard.yml.ejs
@@ -0,0 +1,29 @@
+<%#
+ Copyright 2013-2019 the original author or authors from the JHipster project.
+
+ This file is part of the JHipster project, see https://www.jhipster.tech/
+ for more information.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-%>
+apiVersion: 1
+
+providers:
+  - name: 'Prometheus'
+    orgId: 1
+    folder: ''
+    type: file
+    disableDeletion: false
+    editable: true
+    options:
+      path: /etc/grafana/provisioning/dashboards
diff --git a/generators/server/templates/src/main/docker/grafana/provisioning/datasources/datasource.yml.ejs b/generators/server/templates/src/main/docker/grafana/provisioning/datasources/datasource.yml.ejs
new file mode 100644
index 0000000000..4d338de78a
--- /dev/null
+++ b/generators/server/templates/src/main/docker/grafana/provisioning/datasources/datasource.yml.ejs
@@ -0,0 +1,68 @@
+<%#
+ Copyright 2013-2019 the original author or authors from the JHipster project.
+
+ This file is part of the JHipster project, see https://www.jhipster.tech/
+ for more information.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-%>
+apiVersion: 1
+
+# list of datasources that should be deleted from the database
+deleteDatasources:
+  - name: Prometheus
+    orgId: 1
+
+# list of datasources to insert/update depending
+# whats available in the database
+datasources:
+  # <string, required> name of the datasource. Required
+  - name: Prometheus
+    # <string, required> datasource type. Required
+    type: prometheus
+    # <string, required> access mode. direct or proxy. Required
+    access: proxy
+    # <int> org id. will default to orgId 1 if not specified
+    orgId: 1
+    # <string> url
+    # On MacOS, replace localhost by host.docker.internal
+    url: http://localhost:9090
+    # <string> database password, if used
+    password:
+    # <string> database user, if used
+    user:
+    # <string> database name, if used
+    database:
+    # <bool> enable/disable basic auth
+    basicAuth: false
+    # <string> basic auth username
+    basicAuthUser: admin
+    # <string> basic auth password
+    basicAuthPassword: admin
+    # <bool> enable/disable with credentials headers
+    withCredentials:
+    # <bool> mark as default datasource. Max one per org
+    isDefault: true
+    # <map> fields that will be converted to json and stored in json_data
+    jsonData:
+      graphiteVersion: "1.1"
+      tlsAuth: false
+      tlsAuthWithCACert: false
+    # <string> json object of data that will be encrypted.
+    secureJsonData:
+      tlsCACert: "..."
+      tlsClientCert: "..."
+      tlsClientKey: "..."
+    version: 1
+    # <bool> allow users to edit datasources from the UI.
+    editable: true
diff --git a/generators/server/templates/src/main/docker/monitoring.yml.ejs b/generators/server/templates/src/main/docker/monitoring.yml.ejs
new file mode 100644
index 0000000000..69bc89bae7
--- /dev/null
+++ b/generators/server/templates/src/main/docker/monitoring.yml.ejs
@@ -0,0 +1,44 @@
+<%#
+ Copyright 2013-2019 the original author or authors from the JHipster project.
+
+ This file is part of the JHipster project, see https://www.jhipster.tech/
+ for more information.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-%>
+version: '3'
+services:
+    <%= baseName.toLowerCase() %>-prometheus:
+        image: <%= DOCKER_PROMETHEUS %>
+        volumes:
+            - ./prometheus/:/etc/prometheus/
+        command:
+            - '--config.file=/etc/prometheus/prometheus.yml'
+        ports:
+            - 9090:9090
+        # On MacOS, remove next line and replace localhost by host.docker.internal in prometheus/prometheus.yml and
+        # grafana/provisioning/datasources/datasource.yml
+        network_mode: "host" # to test locally running service
+    <%= baseName.toLowerCase() %>-grafana:
+        image: <%= DOCKER_GRAFANA %>
+        volumes:
+            - ./grafana/provisioning/:/etc/grafana/provisioning/
+        environment:
+            - GF_SECURITY_ADMIN_PASSWORD=jhipster
+            - GF_USERS_ALLOW_SIGN_UP=false
+            - GF_INSTALL_PLUGINS=grafana-piechart-panel
+        ports:
+            - 3000:3000
+        # On MacOS, remove next line and replace localhost by host.docker.internal in prometheus/prometheus.yml and
+        # grafana/provisioning/datasources/datasource.yml
+        network_mode: "host" # to test locally running service
diff --git a/generators/server/templates/src/main/docker/prometheus/prometheus.yml.ejs b/generators/server/templates/src/main/docker/prometheus/prometheus.yml.ejs
new file mode 100644
index 0000000000..62901a349e
--- /dev/null
+++ b/generators/server/templates/src/main/docker/prometheus/prometheus.yml.ejs
@@ -0,0 +1,44 @@
+<%#
+ Copyright 2013-2019 the original author or authors from the JHipster project.
+
+ This file is part of the JHipster project, see https://www.jhipster.tech/
+ for more information.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-%>
+# Sample global config for monitoring JHipster applications
+global:
+  scrape_interval:     15s # By default, scrape targets every 15 seconds.
+  evaluation_interval: 15s # By default, scrape targets every 15 seconds.
+  # scrape_timeout is set to the global default (10s).
+
+  # Attach these labels to any time series or alerts when communicating with
+  # external systems (federation, remote storage, Alertmanager).
+  external_labels:
+    monitor: 'jhipster'
+
+# A scrape configuration containing exactly one endpoint to scrape:
+# Here it's Prometheus itself.
+scrape_configs:
+  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
+  - job_name: 'prometheus'
+
+    # Override the global default and scrape targets from this job every 5 seconds.
+    scrape_interval: 5s
+
+    # scheme defaults to 'http'.
+    metrics_path: /management/prometheus
+    static_configs:
+      - targets:
+          # On MacOS, replace localhost by host.docker.internal
+          - localhost:<%= serverPort %>
diff --git a/generators/server/templates/src/main/java/package/config/lazy/LazyInitBeanFactoryPostProcessor.java.ejs b/generators/server/templates/src/main/java/package/config/lazy/LazyInitBeanFactoryPostProcessor.java.ejs
new file mode 100644
index 0000000000..4f19ed7a47
--- /dev/null
+++ b/generators/server/templates/src/main/java/package/config/lazy/LazyInitBeanFactoryPostProcessor.java.ejs
@@ -0,0 +1,78 @@
+<%#
+ Copyright 2013-2019 the original author or authors from the JHipster project.
+
+ This file is part of the JHipster project, see https://www.jhipster.tech/
+ for more information.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-%>
+package  <%=packageName%>.config.lazy;
+
+import io.github.jhipster.config.JHipsterConstants;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+<%_ if (applicationType === 'gateway') { _%>
+import org.springframework.cloud.netflix.zuul.ZuulFilterInitializer;
+<%_ } _%>
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+/**
+ * Lazy initialize all Spring Beans, which boosts up start-up performance.
+ *
+ * This class originally comes from https://github.com/dsyer/spring-boot-allocations where it is written
+ * it can be copied on a project.
+ *
+ * As this is an experimental feature, we only recommend to use it in "dev" mode for the moment.
+ */
+@Component
+@Profile(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT)
+public class LazyInitBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
+
+    private Class<?>[] exclusionList = {<% if (applicationType === 'gateway') { %>ZuulFilterInitializer.class<% } %>};
+
+    public LazyInitBeanFactoryPostProcessor() {
+    }
+
+    public LazyInitBeanFactoryPostProcessor(Class<?>[] exclusionList) {
+        this.exclusionList = exclusionList;
+    }
+
+    @Override
+    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
+        throws BeansException {
+
+        // Iterate over all beans, mark them as lazy if they are not in the exclusion list.
+        for (String beanName : beanFactory.getBeanDefinitionNames()) {
+            if (isLazy(beanName, beanFactory)) {
+                BeanDefinition definition = beanFactory.getBeanDefinition(beanName);
+                definition.setLazyInit(true);
+            }
+        }
+    }
+
+    private boolean isLazy(String beanName, ConfigurableListableBeanFactory beanFactory) {
+        if (exclusionList == null || exclusionList.length == 0) {
+            return true;
+        }
+        for (Class<?> clazz : exclusionList) {
+            if (beanFactory.isTypeMatch(beanName, clazz)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
diff --git a/generators/server/templates/src/main/resources/config/application.yml.ejs b/generators/server/templates/src/main/resources/config/application.yml.ejs
index 619644db0c..a34fe69ac2 100644
--- a/generators/server/templates/src/main/resources/config/application.yml.ejs
+++ b/generators/server/templates/src/main/resources/config/application.yml.ejs
@@ -169,8 +169,7 @@ spring:
         consul:
             discovery:
                 healthCheckPath: /management/health
-                instanceId: <%= baseName.toLowerCase() %>:${spring.application.instance-id:${random.value}}
-                service-name: <%= baseName.toLowerCase() %>
+                instanceId: ${spring.application.name}:${spring.application.instance-id:${random.value}}
             config:
                 watch:
                     enabled: false


Test patch:
diff --git a/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs b/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs
index d1b57e59b8..3bcdede730 100644
--- a/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs
+++ b/generators/client/templates/react/src/test/javascript/protractor.conf.js.ejs
@@ -17,6 +17,8 @@
  limitations under the License.
 -%>
 
+const os = require('os');
+
 exports.config = {
   allScriptsTimeout: 20000,
 
@@ -48,7 +50,7 @@ exports.config = {
     reporter: 'spec',
     slow: 3000,
     ui: 'bdd',
-    timeout: 720000
+    timeout: 30000
   },
 
   beforeLaunch () {
diff --git a/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs b/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs
index 0021719c4b..a872a5fa75 100644
--- a/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs
+++ b/generators/client/templates/react/src/test/javascript/spec/app/shared/auth/private-route.spec.tsx.ejs
@@ -70,7 +70,7 @@ describe('private-route component', () => {
         renderFn({
           location: '/'
         })
-      ).html()
+      )
     ).toThrow(Error);
   });
 });
diff --git a/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs b/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs
index d74ae10380..a9f8a63ff2 100644
--- a/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs
+++ b/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity.spec.ts.ejs
@@ -158,7 +158,7 @@ describe('<%= entityClass %> e2e test', () => {
         }
 
         await create<%= entityClass %>();
-        await <%= entityInstance %>ComponentsPage.waitUntilLoaded();
+        <%= entityInstance %>ComponentsPage.waitUntilLoaded();
         const nbButtonsBeforeCreate = await <%= entityInstance %>ComponentsPage.countDeleteButtons();
         await create<%= entityClass %>();
 
diff --git a/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs b/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs
index b6be4a59d7..1b82537e23 100644
--- a/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs
+++ b/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs
@@ -38,9 +38,6 @@ import <%=packageName%>.<%= mainClass %>;
 <% if (authenticationType === 'uaa') { %>
 import <%=packageName%>.config.SecurityBeanOverrideConfiguration;
 <% } %>
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%=packageName%>.config.TestSecurityConfiguration;
-<%_ } _%>
 import <%=packageName%>.domain.<%= asEntity(entityClass) %>;
 <%_
     var imported = [];
@@ -146,9 +143,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
  * Integration tests for the {@Link <%= entityClass %>Resource} REST controller.
  */
 @RunWith(SpringRunner.class)
-<%_ if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
-<%_ } else if (authenticationType === 'uaa' && applicationType !== 'uaa') { _%>
+<%_ if (authenticationType === 'uaa' && applicationType !== 'uaa') { _%>
 @SpringBootTest(classes = {SecurityBeanOverrideConfiguration.class, <%= mainClass %>.class})
 <%_ } else { _%>
 @SpringBootTest(classes = <%= mainClass %>.class)
diff --git a/generators/server/templates/src/test/java/package/config/TestSecurityConfiguration.java.ejs b/generators/server/templates/src/test/java/package/config/TestSecurityConfiguration.java.ejs
deleted file mode 100644
index fc9f07d818..0000000000
--- a/generators/server/templates/src/test/java/package/config/TestSecurityConfiguration.java.ejs
+++ /dev/null
@@ -1,89 +0,0 @@
-<%#
- Copyright 2013-2019 the original author or authors from the JHipster project.
-
- This file is part of the JHipster project, see https://jhipster.github.io/
- for more information.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--%>
-package <%=packageName%>.config;
-
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService;
-import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
-import org.springframework.security.oauth2.client.registration.ClientRegistration;
-import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
-import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
-import org.springframework.security.oauth2.client.web.AuthenticatedPrincipalOAuth2AuthorizedClientRepository;
-import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
-import org.springframework.security.oauth2.core.AuthorizationGrantType;
-import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
-import org.springframework.security.oauth2.jwt.JwtDecoder;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.mockito.Mockito.mock;
-
-/**
- * This class allows you to run unit and integration tests without an IdP.
- */
-@TestConfiguration
-public class TestSecurityConfiguration {
-    private final ClientRegistration clientRegistration;
-
-    public TestSecurityConfiguration() {
-        this.clientRegistration = clientRegistration().build();
-    }
-
-    @Bean
-    ClientRegistrationRepository clientRegistrationRepository() {
-        return new InMemoryClientRegistrationRepository(clientRegistration);
-    }
-
-    private ClientRegistration.Builder clientRegistration() {
-        Map<String, Object> metadata = new HashMap<>();
-        metadata.put("end_session_endpoint", "https://jhipster.org/logout");
-
-        return ClientRegistration.withRegistrationId("oidc")
-            .redirectUriTemplate("{baseUrl}/{action}/oauth2/code/{registrationId}")
-            .clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
-            .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
-            .scope("read:user")
-            .authorizationUri("https://jhipster.org/login/oauth/authorize")
-            .tokenUri("https://jhipster.org/login/oauth/access_token")
-            .jwkSetUri("https://jhipster.org/oauth/jwk")
-            .userInfoUri("https://api.jhipster.org/user")
-            .providerConfigurationMetadata(metadata)
-            .userNameAttributeName("id")
-            .clientName("Client Name")
-            .clientId("client-id")
-            .clientSecret("client-secret");
-    }
-
-    @Bean
-    JwtDecoder jwtDecoder() {
-        return mock(JwtDecoder.class);
-    }
-
-    @Bean
-    public OAuth2AuthorizedClientService authorizedClientService(ClientRegistrationRepository clientRegistrationRepository) {
-        return new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository);
-    }
-
-    @Bean
-    public OAuth2AuthorizedClientRepository authorizedClientRepository(OAuth2AuthorizedClientService authorizedClientService) {
-        return new AuthenticatedPrincipalOAuth2AuthorizedClientRepository(authorizedClientService);
-    }
-}
diff --git a/generators/server/templates/src/test/java/package/config/timezone/HibernateTimeZoneIT.java.ejs b/generators/server/templates/src/test/java/package/config/timezone/HibernateTimeZoneIT.java.ejs
index 34e447870c..fc7542c730 100644
--- a/generators/server/templates/src/test/java/package/config/timezone/HibernateTimeZoneIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/config/timezone/HibernateTimeZoneIT.java.ejs
@@ -22,9 +22,6 @@ import <%= packageName %>.<%= mainClass %>;
 <%_ if (authenticationType === 'uaa' && applicationType !== 'uaa') { _%>
 import <%= packageName %>.config.SecurityBeanOverrideConfiguration;
 <%_ } _%>
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%= packageName %>.config.TestSecurityConfiguration;
-<%_ } _%>
 import <%= packageName %>.repository.timezone.DateTimeWrapper;
 import <%= packageName %>.repository.timezone.DateTimeWrapperRepository;
 import org.junit.Before;
@@ -49,8 +46,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 @RunWith(SpringRunner.class)
 <%_ if (authenticationType === 'uaa' && applicationType !== 'uaa') { _%>
 @SpringBootTest(classes = {SecurityBeanOverrideConfiguration.class, <%= mainClass %>.class})
-<%_ } else if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
 <%_ } else { _%>
 @SpringBootTest(classes = <%= mainClass %>.class)
 <%_ } _%>
diff --git a/generators/server/templates/src/test/java/package/repository/CustomAuditEventRepositoryIT.java.ejs b/generators/server/templates/src/test/java/package/repository/CustomAuditEventRepositoryIT.java.ejs
index 0de1051b37..5e1f8d8c14 100644
--- a/generators/server/templates/src/test/java/package/repository/CustomAuditEventRepositoryIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/repository/CustomAuditEventRepositoryIT.java.ejs
@@ -20,9 +20,6 @@ package <%=packageName%>.repository;
 
 import <%=packageName%>.<%= mainClass %>;
 import <%=packageName%>.config.Constants;
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%=packageName%>.config.TestSecurityConfiguration;
-<%_ } _%>
 import <%=packageName%>.config.audit.AuditEventConverter;
 import <%=packageName%>.domain.PersistentAuditEvent;
 import org.junit.Before;
@@ -59,14 +56,8 @@ import static <%=packageName%>.repository.CustomAuditEventRepository.EVENT_DATA_
  * Integration tests for {@link CustomAuditEventRepository}.
  */
 @RunWith(SpringRunner.class)
-<%_ if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
-<%_ } else { _%>
-@SpringBootTest(classes = <%= mainClass %>.class)
-<%_ } _%>
-<%_ if (databaseType === 'sql') { _%>
-@Transactional
-<%_ } _%>
+@SpringBootTest(classes = <%= mainClass %>.class)<% if (databaseType === 'sql') { %>
+@Transactional<% } %>
 public class CustomAuditEventRepositoryIT {
 
     @Autowired
diff --git a/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs b/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs
index 8b9cc9e9bc..cc7182b3f8 100644
--- a/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs
@@ -22,9 +22,6 @@ package <%= packageName %>.service;
 import <%= packageName %>.AbstractCassandraTest;
 <%_ } _%>
 import <%= packageName %>.<%= mainClass %>;
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%= packageName %>.config.TestSecurityConfiguration;
-<%_ } _%>
 import <%= packageName %>.config.Constants;
 <%_ if ((databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'couchbase') && authenticationType === 'session' && !reactive) { _%>
 import <%= packageName %>.domain.PersistentToken;
@@ -126,14 +123,8 @@ import static org.mockito.Mockito.when;
  * Integration tests for {@link UserService}.
  */
 @RunWith(SpringRunner.class)
-<%_ if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
-<%_ } else { _%>
-@SpringBootTest(classes = <%= mainClass %>.class)
-<%_ } _%>
-<%_ if (databaseType === 'sql') { _%>
-@Transactional
-<%_ } _%>
+@SpringBootTest(classes = <%= mainClass %>.class)<% if (databaseType === 'sql') { %>
+@Transactional<% } %>
 public class UserServiceIT <% if (databaseType === 'cassandra') { %>extends AbstractCassandraTest <% } %>{
 
     <%_ if ((databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'couchbase') && authenticationType === 'session' && !reactive) { _%>
diff --git a/generators/server/templates/src/test/java/package/service/mapper/UserMapperIT.java.ejs b/generators/server/templates/src/test/java/package/service/mapper/UserMapperIT.java.ejs
index b597f3cd32..c98fb6dedb 100644
--- a/generators/server/templates/src/test/java/package/service/mapper/UserMapperIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/service/mapper/UserMapperIT.java.ejs
@@ -21,9 +21,6 @@ package <%= packageName %>.service.mapper;
 <% if (databaseType === 'cassandra') { %>
 import <%=packageName%>.AbstractCassandraTest;<% } %>
 import <%= packageName %>.<%= mainClass %>;
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%=packageName%>.config.TestSecurityConfiguration;
-<%_ } _%>
 import <%= packageName %>.domain.<%= asEntity('User') %>;
 import <%= packageName %>.service.dto.<%= asDto('User') %>;
 <%_ if (authenticationType !== 'oauth2') { _%>
@@ -47,11 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat;
  * Integration tests for {@link UserMapper}.
  */
 @RunWith(SpringRunner.class)
-<%_ if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
-<%_ } else { _%>
 @SpringBootTest(classes = <%= mainClass %>.class)
-<%_ } _%>
 public class UserMapperIT <% if (databaseType === 'cassandra') { %>extends AbstractCassandraTest <% } %>{
 
     private static final String DEFAULT_LOGIN = "johndoe";
diff --git a/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs
index 7091908be6..62f36f8e3d 100644
--- a/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs
@@ -23,7 +23,6 @@ package <%=packageName%>.web.rest;
 import <%=packageName%>.AbstractCassandraTest;
 <%_ } _%>
 import <%=packageName%>.<%= mainClass %>;
-import <%=packageName%>.config.TestSecurityConfiguration;
 import <%=packageName%>.domain.Authority;
 import <%=packageName%>.domain.<%= asEntity('User') %>;
 import <%=packageName%>.repository.UserRepository;
@@ -59,7 +58,7 @@ import org.springframework.web.context.WebApplicationContext;
  * Integration tests for the {@link AccountResource} REST controller.
  */
 @RunWith(SpringRunner.class)
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
+@SpringBootTest(classes = <%= mainClass %>.class)
 public class AccountResourceIT <% if (databaseType === 'cassandra') { %>extends AbstractCassandraTest <% } %>{
 
     @Autowired
diff --git a/generators/server/templates/src/test/java/package/web/rest/AuditResourceIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/AuditResourceIT.java.ejs
index 7b11c16f44..f6484c47f0 100644
--- a/generators/server/templates/src/test/java/package/web/rest/AuditResourceIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/web/rest/AuditResourceIT.java.ejs
@@ -19,13 +19,9 @@
 package <%=packageName%>.web.rest;
 
 import <%=packageName%>.<%= mainClass %>;
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%=packageName%>.config.TestSecurityConfiguration;
-<%_ } _%>
 import <%=packageName%>.config.audit.AuditEventConverter;
 import <%=packageName%>.domain.PersistentAuditEvent;
 import <%=packageName%>.repository.PersistenceAuditEventRepository;
-
 import <%=packageName%>.service.AuditEventService;
 import org.junit.Before;
 import org.junit.Test;
@@ -56,14 +52,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
  * Integration tests for the {@link AuditResource} REST controller.
  */
 @RunWith(SpringRunner.class)
-<%_ if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
-<%_ } else { _%>
-@SpringBootTest(classes = <%= mainClass %>.class)
-<%_ } _%>
-<%_ if (databaseType === 'sql') { _%>
-@Transactional
-<%_ } _%>
+@SpringBootTest(classes = <%= mainClass %>.class)<% if (databaseType === 'sql') { %>
+@Transactional<% } %>
 public class AuditResourceIT {
 
     private static final String SAMPLE_PRINCIPAL = "SAMPLE_PRINCIPAL";
diff --git a/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerIT.java.ejs
index 5710278e8e..4fe11dc57d 100644
--- a/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerIT.java.ejs
@@ -22,9 +22,6 @@ package <%=packageName%>.web.rest;
 import <%= packageName %>.AbstractCassandraTest;
 <%_ } _%>
 import <%=packageName%>.<%= mainClass %>;
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%=packageName%>.config.TestSecurityConfiguration;
-<%_ } _%>
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -44,11 +41,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
  * Integration tests for the {@link ClientForwardController} REST controller.
  */
 @RunWith(SpringRunner.class)
-<%_ if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
-<%_ } else { _%>
 @SpringBootTest(classes = <%= mainClass %>.class)
-<%_ } _%>
 public class ClientForwardControllerIT <% if (databaseType === 'cassandra') { %>extends AbstractCassandraTest <% } %>{
 
     private MockMvc restMockMvc;
diff --git a/generators/server/templates/src/test/java/package/web/rest/LogoutResourceIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/LogoutResourceIT.java.ejs
index c987bfa981..25b9cb14c6 100644
--- a/generators/server/templates/src/test/java/package/web/rest/LogoutResourceIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/web/rest/LogoutResourceIT.java.ejs
@@ -19,7 +19,6 @@
 package <%=packageName%>.web.rest;
 
 import <%=packageName%>.<%= mainClass %>;
-import <%=packageName%>.config.TestSecurityConfiguration;
 import <%=packageName%>.security.AuthoritiesConstants;
 import org.junit.Before;
 import org.junit.Test;
@@ -54,7 +53,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
  * Integration tests for the {@link LogoutResource} REST controller.
  */
 @RunWith(SpringRunner.class)
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
+@SpringBootTest(classes = <%= mainClass %>.class)
 public class LogoutResourceIT {
 
     @Autowired
diff --git a/generators/server/templates/src/test/java/package/web/rest/LogsResourceIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/LogsResourceIT.java.ejs
index 6a37777205..c583695dc5 100644
--- a/generators/server/templates/src/test/java/package/web/rest/LogsResourceIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/web/rest/LogsResourceIT.java.ejs
@@ -22,9 +22,6 @@ package <%= packageName %>.web.rest;
 import <%= packageName %>.AbstractCassandraTest;
 <%_ } _%>
 import <%= packageName %>.<%= mainClass %>;
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%=packageName%>.config.TestSecurityConfiguration;
-<%_ } _%>
 <%_ if (authenticationType === 'uaa') { _%>
 import <%= packageName %>.config.SecurityBeanOverrideConfiguration;
 <%_ } _%>
@@ -59,8 +56,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 @RunWith(SpringRunner.class)
 <%_ if (authenticationType === 'uaa' && applicationType !== 'uaa') { _%>
 @SpringBootTest(classes = {SecurityBeanOverrideConfiguration.class, <%= mainClass %>.class})
-<%_ } else if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
 <%_ } else { _%>
 @SpringBootTest(classes = <%= mainClass %>.class)
 <%_ } _%>
diff --git a/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs
index 3ced476709..feec5f9c74 100644
--- a/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs
@@ -22,9 +22,6 @@ package <%= packageName %>.web.rest;
 import <%= packageName %>.AbstractCassandraTest;
 <%_ } _%>
 import <%= packageName %>.<%= mainClass %>;
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%=packageName%>.config.TestSecurityConfiguration;
-<%_ } _%>
 <%_ if (reactive) { _%>
 import <%= packageName %>.config.ReactivePageableHandlerMethodArgumentResolver;
 <%_ } _%>
@@ -106,11 +103,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
  * Integration tests for the {@link UserResource} REST controller.
  */
 @RunWith(SpringRunner.class)
-<%_ if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
-<%_ } else { _%>
 @SpringBootTest(classes = <%= mainClass %>.class)
-<%_ } _%>
 public class UserResourceIT <% if (databaseType === 'cassandra') { %>extends AbstractCassandraTest <% } %>{
 
     private static final String DEFAULT_LOGIN = "johndoe";
diff --git a/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs b/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs
index 02894d8889..c871b22982 100644
--- a/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs
+++ b/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs
@@ -25,9 +25,6 @@ import <%= packageName %>.<%= mainClass %>;
 <%_ if (authenticationType === 'uaa') { _%>
 import <%= packageName %>.config.SecurityBeanOverrideConfiguration;
 <%_ } _%>
-<%_ if (authenticationType === 'oauth2') { _%>
-import <%= packageName %>.config.TestSecurityConfiguration;
-<%_ } _%>
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -52,8 +49,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 @RunWith(SpringRunner.class)
 <%_ if (authenticationType === 'uaa' && applicationType !== 'uaa') { _%>
 @SpringBootTest(classes = {SecurityBeanOverrideConfiguration.class, <%= mainClass %>.class})
-<%_ } else if (authenticationType === 'oauth2') { _%>
-@SpringBootTest(classes = {<%= mainClass %>.class, TestSecurityConfiguration.class})
 <%_ } else { _%>
 @SpringBootTest(classes = <%= mainClass %>.class)
 <%_ } _%>
diff --git a/generators/server/templates/src/test/resources/config/application.yml.ejs b/generators/server/templates/src/test/resources/config/application.yml.ejs
index f86fa759df..528fa3d1a5 100644
--- a/generators/server/templates/src/test/resources/config/application.yml.ejs
+++ b/generators/server/templates/src/test/resources/config/application.yml.ejs
@@ -137,14 +137,23 @@ spring:
                 size: 1
     thymeleaf:
         mode: HTML
+
 <%_ if (authenticationType === 'oauth2') { _%>
-    # Allow SecurityConfiguration to initialize w/o specifying an empty issuer-uri is OK
     security:
         oauth2:
             client:
                 provider:
                     oidc:
-                        issuer-uri: http://DO_NOT_CALL:9080/auth/realms/jhipster
+                        issuer-uri: http://localhost:9080/auth/realms/jhipster
+                registration:
+                    oidc:
+                    <%_ if (applicationType === 'microservice') { _%>
+                        client-id: internal
+                        client-secret: internal
+                    <%_ } else { _%>
+                        client-id: web_app
+                        client-secret: web_app
+                    <%_ } _%>
 <%_ } _%>
 
 server:
diff --git a/test/blueprint/scoped-blueprint.spec.js b/test/blueprint/scoped-blueprint.spec.js
deleted file mode 100644
index 1f1f0f3e2f..0000000000
--- a/test/blueprint/scoped-blueprint.spec.js
+++ /dev/null
@@ -1,69 +0,0 @@
-const path = require('path');
-const assert = require('yeoman-assert');
-const helpers = require('yeoman-test');
-const fse = require('fs-extra');
-const expectedFiles = require('../utils/expected-files');
-const getFilesForOptions = require('../utils/utils').getFilesForOptions;
-const angularFiles = require('../../generators/client/files-angular').files;
-
-describe('JHipster application generator with scoped blueprint', () => {
-    describe('generate monolith application with scoped blueprint', () => {
-        before(done => {
-            helpers
-                .run(path.join(__dirname, '../../generators/app'))
-                .inTmpDir(dir => {
-                    // Fake the presence of the blueprint in node_modules
-                    const packagejs = {
-                        name: '@jhipster/generator-jhipster-scoped-blueprint',
-                        version: '9.9.9'
-                    };
-                    const fakeBlueprintModuleDir = path.join(dir, 'node_modules/@jhipster/generator-jhipster-scoped-blueprint');
-                    fse.ensureDirSync(fakeBlueprintModuleDir);
-                    fse.writeJsonSync(path.join(fakeBlueprintModuleDir, 'package.json'), packagejs);
-                })
-                .withOptions({
-                    'from-cli': true,
-                    skipInstall: true,
-                    skipChecks: true,
-                    blueprint: '@jhipster/generator-jhipster-scoped-blueprint'
-                })
-                .withPrompts({
-                    baseName: 'jhipster',
-                    clientFramework: 'angularX',
-                    packageName: 'com.mycompany.myapp',
-                    packageFolder: 'com/mycompany/myapp',
-                    serviceDiscoveryType: false,
-                    authenticationType: 'jwt',
-                    cacheProvider: 'ehcache',
-                    enableHibernateCache: true,
-                    databaseType: 'sql',
-                    devDatabaseType: 'h2Memory',
-                    prodDatabaseType: 'mysql',
-                    enableTranslation: true,
-                    nativeLanguage: 'en',
-                    languages: ['fr']
-                })
-                .on('end', done);
-        });
-
-        it('creates expected default files for server and angularX', () => {
-            assert.file(expectedFiles.common);
-            assert.file(expectedFiles.server);
-            assert.file(
-                getFilesForOptions(angularFiles, {
-                    enableTranslation: true,
-                    serviceDiscoveryType: false,
-                    authenticationType: 'jwt',
-                    testFrameworks: []
-                })
-            );
-        });
-
-        it('blueprint version is saved in .yo-rc.json', () => {
-            assert.fileContent('.yo-rc.json', /"blueprintVersion": "9.9.9"/);
-        });
-        it('blueprint module and version are in package.json', () => {
-            assert.fileContent('package.json', /"@jhipster\/generator-jhipster-scoped-blueprint": "9.9.9"/);
-        });
-    });
-});
diff --git a/test/utils/expected-files.js b/test/utils/expected-files.js
index bbf91ef265..c0b5bd8373 100644
--- a/test/utils/expected-files.js
+++ b/test/utils/expected-files.js
@@ -161,6 +161,7 @@ const expectedFiles = {
         `${SERVER_MAIN_RES_DIR}i18n/messages.properties`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/JhipsterApp.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/aop/logging/LoggingAspect.java`,
+        `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/lazy/LazyInitBeanFactoryPostProcessor.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/package-info.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/ApplicationProperties.java`,
         `${SERVER_MAIN_SRC_DIR}com/mycompany/myapp/config/AsyncConfiguration.java`,