diff --git a/.suite-cli/cli/package.json b/.suite-cli/cli/package.json index a559e7c..cff2e71 100644 --- a/.suite-cli/cli/package.json +++ b/.suite-cli/cli/package.json @@ -1,6 +1,6 @@ { "name": "@microservices-suite/cli", - "version": "3.1.1", + "version": "3.1.2", "description": "This is the CLI tool for running the microservices-suite monorepo. It contains functionalities and tools required for automation and managing the repo across supported platforms. Works on Windows,MacOS and Linux as well as support to some extend other variants like SunOS, IBM AIX, FreeBSD, OpenBSD and more", "main": "cli.js", "repository": "https://github.com/microservices-suite/node-microservices-suite.git", diff --git a/.suite-cli/cli/scripts/assets/dockerComposeContent.asset.js b/.suite-cli/cli/scripts/assets/dockerComposeContent.asset.js index a8f1265..0eaf332 100644 --- a/.suite-cli/cli/scripts/assets/dockerComposeContent.asset.js +++ b/.suite-cli/cli/scripts/assets/dockerComposeContent.asset.js @@ -62,5 +62,53 @@ ${serviceNames.map(service => ` - ${service}`).join('\n')} - '8090:8090' volumes: - ./krakend/:/etc/krakend/ - command: ['run','-d','-c','/etc/krakend/krakend.json']`; + command: ['run','-d','-c','/etc/krakend/krakend.json'] + grafana: + image: grafana/grafana:9.1.2 + ports: + - "3000:3000" + volumes: + - "./sre/grafana/datasources/all.yml:/etc/grafana/provisioning/datasources/all.yml" + - "./sre/grafana/dashboards/all.yml:/etc/grafana/provisioning/dashboards/all.yml" + - "./sre/grafana/krakend:/var/lib/grafana/dashboards/krakend" + influxdb: + image: influxdb:1.8.10 + environment: + - "INFLUXDB_DB=krakend" + - "INFLUXDB_USER=krakend-dev" + - "INFLUXDB_USER_PASSWORD=pas5w0rd" + - "INFLUXDB_ADMIN_USER=admin" + - "INFLUXDB_ADMIN_PASSWORD=supersecretpassword" + ports: + - "8086:8086" + jaeger: + image: jaegertracing/all-in-one:1 + ports: + - "16686:16686" + - "14268:14268" + elasticsearch: + image: elasticsearch:8.4.1 + environment: + - "discovery.type=single-node" + - "xpack.security.enabled=false" + - "xpack.security.transport.ssl.enabled=false" + - "xpack.security.http.ssl.enabled=false" + - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" + ports: + - "19200:9200" + - "9300:9300" + kibana: + image: kibana:8.4.1 + ports: + - "5601:5601" + logstash: + image: logstash:8.4.1 + ports: + - "12201:12201/udp" + - "5044:5044" + environment: + - "xpack.monitoring.elasticsearch.url=http://elasticsearch:9200" + volumes: + - ./sre/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf + command: ["-f", "/usr/share/logstash/pipeline/logstash.conf"]`; }; \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/elasticDashboardJsonContent.asset.js b/.suite-cli/cli/scripts/assets/elasticDashboardJsonContent.asset.js new file mode 100644 index 0000000..fe4b2c2 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/elasticDashboardJsonContent.asset.js @@ -0,0 +1,5 @@ +module.exports = () => ` +{"attributes":{"allowNoIndex":true,"fieldAttrs":"{}","fields":"[]","name":".alerts-security.alerts-default,apm-*-transaction*,auditbeat-*,endgame-*,filebeat-*,logs-*,packetbeat-*,traces-apm*,winlogbeat-*,-*elastic-cloud-logs-*","runtimeFieldMap":"{}","sourceFilters":"[]","timeFieldName":"@timestamp","title":".alerts-security.alerts-default,apm-*-transaction*,auditbeat-*,endgame-*,filebeat-*,logs-*,packetbeat-*,traces-apm*,winlogbeat-*,-*elastic-cloud-logs-*","typeMeta":"{}"},"coreMigrationVersion":"8.4.1","id":"security-solution-default","migrationVersion":{"index-pattern":"8.0.0"},"references":[],"type":"index-pattern","updated_at":"2022-09-13T08:12:52.146Z","version":"WzI5LDFd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"syncTooltips\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":21,\"h\":13,\"i\":\"61c51800-6120-40bb-9e79-0c2cb3a865ad\"},\"panelIndex\":\"61c51800-6120-40bb-9e79-0c2cb3a865ad\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-62c0589c-3e4c-40b4-82cb-d9cd9aad3c45\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"62c0589c-3e4c-40b4-82cb-d9cd9aad3c45\",\"accessors\":[\"92025141-7aec-4950-96d5-a56b72dab244\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"splitAccessor\":\"ada320d9-0ce1-4277-8926-89d31ad1a1d9\",\"xAccessor\":\"46e5208d-c668-4434-badb-ce3c92969db6\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"62c0589c-3e4c-40b4-82cb-d9cd9aad3c45\":{\"columns\":{\"46e5208d-c668-4434-badb-ce3c92969db6\":{\"label\":\"Top 10 messages\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"msg\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"92025141-7aec-4950-96d5-a56b72dab244\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}},\"customLabel\":true},\"92025141-7aec-4950-96d5-a56b72dab244\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}},\"ada320d9-0ce1-4277-8926-89d31ad1a1d9\":{\"label\":\"SCOPE\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"scope\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"92025141-7aec-4950-96d5-a56b72dab244\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}},\"customLabel\":true}},\"columnOrder\":[\"46e5208d-c668-4434-badb-ce3c92969db6\",\"ada320d9-0ce1-4277-8926-89d31ad1a1d9\",\"92025141-7aec-4950-96d5-a56b72dab244\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 10 messages\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":0,\"w\":21,\"h\":13,\"i\":\"14d142f6-9a47-47fe-912a-5a48d4212bcc\"},\"panelIndex\":\"14d142f6-9a47-47fe-912a-5a48d4212bcc\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f\",\"seriesType\":\"bar_stacked\",\"accessors\":[\"d16b154c-351e-42d6-8718-60088e778242\"],\"layerType\":\"data\",\"splitAccessor\":\"01e38aaa-3961-463c-b5d0-7b84ab645125\",\"xAccessor\":\"3fdc7688-5b9e-4ba3-9bc8-c7e8aa392613\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f\":{\"columns\":{\"3fdc7688-5b9e-4ba3-9bc8-c7e8aa392613\":{\"label\":\"Filters\",\"dataType\":\"string\",\"operationType\":\"filters\",\"scale\":\"ordinal\",\"isBucketed\":true,\"params\":{\"filters\":[{\"label\":\"\",\"input\":{\"query\":\"scope : SERVICE\",\"language\":\"kuery\"}}]}},\"d16b154c-351e-42d6-8718-60088e778242\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}},\"01e38aaa-3961-463c-b5d0-7b84ab645125\":{\"label\":\"Top 20 values of context\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"context\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"d16b154c-351e-42d6-8718-60088e778242\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}}},\"columnOrder\":[\"3fdc7688-5b9e-4ba3-9bc8-c7e8aa392613\",\"01e38aaa-3961-463c-b5d0-7b84ab645125\",\"d16b154c-351e-42d6-8718-60088e778242\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top SERVICE messages\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":42,\"y\":0,\"w\":6,\"h\":6,\"i\":\"a5aaa0eb-0580-4970-a92f-f057b57c17aa\"},\"panelIndex\":\"a5aaa0eb-0580-4970-a92f-f057b57c17aa\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsPie\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-5c308554-7dc3-4986-b31e-232c976657a2\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"5c308554-7dc3-4986-b31e-232c976657a2\",\"groups\":[\"aa02addb-82df-4a3c-a052-b6564797c7ad\"],\"metric\":\"1327f462-8a28-4421-9b42-7a25f2cbf07e\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false,\"layerType\":\"data\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"5c308554-7dc3-4986-b31e-232c976657a2\":{\"columns\":{\"aa02addb-82df-4a3c-a052-b6564797c7ad\":{\"label\":\"Top 10 values of statusCode\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"statusCode\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"1327f462-8a28-4421-9b42-7a25f2cbf07e\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"1327f462-8a28-4421-9b42-7a25f2cbf07e\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"aa02addb-82df-4a3c-a052-b6564797c7ad\",\"1327f462-8a28-4421-9b42-7a25f2cbf07e\"],\"incompleteColumns\":{}}}}}}},\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"% of Status Codes\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":42,\"y\":6,\"w\":6,\"h\":7,\"i\":\"7bbec2fb-0ab6-4f6a-8259-cc46f91d5a9b\"},\"panelIndex\":\"7bbec2fb-0ab6-4f6a-8259-cc46f91d5a9b\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsPie\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-73d168b7-3b62-4c83-9f8f-d59ccb1ceea6\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"73d168b7-3b62-4c83-9f8f-d59ccb1ceea6\",\"groups\":[\"d74c9301-1bce-472c-bcf5-3d4f3d69e6ab\"],\"metric\":\"72b1102a-e79c-4240-b82e-d96f2b5312d5\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false,\"layerType\":\"data\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"73d168b7-3b62-4c83-9f8f-d59ccb1ceea6\":{\"columns\":{\"d74c9301-1bce-472c-bcf5-3d4f3d69e6ab\":{\"label\":\"Top 5 values of ip\",\"dataType\":\"ip\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"ip\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"72b1102a-e79c-4240-b82e-d96f2b5312d5\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"72b1102a-e79c-4240-b82e-d96f2b5312d5\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"d74c9301-1bce-472c-bcf5-3d4f3d69e6ab\",\"72b1102a-e79c-4240-b82e-d96f2b5312d5\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 5 IPs\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":13,\"w\":21,\"h\":10,\"i\":\"87bdb6b4-2c78-4491-b812-8a05061da493\"},\"panelIndex\":\"87bdb6b4-2c78-4491-b812-8a05061da493\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-310c919e-6479-4a10-b8b9-f0c8feb69262\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"310c919e-6479-4a10-b8b9-f0c8feb69262\",\"accessors\":[\"dd7f7b4a-c732-41f8-ab18-520a7b5f7b1a\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"a2df1297-1f82-4bc1-a9e5-3657716c8bfe\",\"splitAccessor\":\"c539ed4f-b906-42a1-9036-a401b29ba1c5\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"310c919e-6479-4a10-b8b9-f0c8feb69262\":{\"columns\":{\"a2df1297-1f82-4bc1-a9e5-3657716c8bfe\":{\"label\":\"Filters\",\"dataType\":\"string\",\"operationType\":\"filters\",\"scale\":\"ordinal\",\"isBucketed\":true,\"params\":{\"filters\":[{\"label\":\"\",\"input\":{\"query\":\"scope : ENDPOINT\",\"language\":\"kuery\"}}]}},\"dd7f7b4a-c732-41f8-ab18-520a7b5f7b1a\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}},\"c539ed4f-b906-42a1-9036-a401b29ba1c5\":{\"label\":\"Top 15 values of msg\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"msg\",\"isBucketed\":true,\"params\":{\"size\":15,\"orderBy\":{\"type\":\"column\",\"columnId\":\"dd7f7b4a-c732-41f8-ab18-520a7b5f7b1a\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}}},\"columnOrder\":[\"a2df1297-1f82-4bc1-a9e5-3657716c8bfe\",\"c539ed4f-b906-42a1-9036-a401b29ba1c5\",\"dd7f7b4a-c732-41f8-ab18-520a7b5f7b1a\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top Endpoint messages\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":13,\"w\":21,\"h\":10,\"i\":\"3adf3d59-f407-49f8-866d-01868cd2b422\"},\"panelIndex\":\"3adf3d59-f407-49f8-866d-01868cd2b422\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-6bb18b1d-e479-4493-84d0-3e03ae5680af\"}],\"state\":{\"visualization\":{\"layerId\":\"6bb18b1d-e479-4493-84d0-3e03ae5680af\",\"layerType\":\"data\",\"columns\":[{\"isTransposed\":false,\"columnId\":\"afd3e931-1327-4fba-9578-2ec874d60746\",\"width\":169.5},{\"isTransposed\":false,\"columnId\":\"6de0fe8f-c00e-4131-b503-56ab6748c258\",\"width\":316.3333333333333},{\"isTransposed\":false,\"columnId\":\"0f3195ad-4a49-4c86-bd53-f959e375fb47\",\"width\":201.83333333333334},{\"columnId\":\"866cd177-31d6-467a-a54e-1dbe2cddc4d9\",\"isTransposed\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"6bb18b1d-e479-4493-84d0-3e03ae5680af\":{\"columns\":{\"afd3e931-1327-4fba-9578-2ec874d60746\":{\"label\":\"Top 5 values of scope\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"scope\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"866cd177-31d6-467a-a54e-1dbe2cddc4d9\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"6de0fe8f-c00e-4131-b503-56ab6748c258\":{\"label\":\"Top 100 values of msg\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"msg\",\"isBucketed\":true,\"params\":{\"size\":100,\"orderBy\":{\"type\":\"column\",\"columnId\":\"866cd177-31d6-467a-a54e-1dbe2cddc4d9\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"0f3195ad-4a49-4c86-bd53-f959e375fb47\":{\"label\":\"Top 10 values of context\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"context\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"866cd177-31d6-467a-a54e-1dbe2cddc4d9\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"866cd177-31d6-467a-a54e-1dbe2cddc4d9\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"afd3e931-1327-4fba-9578-2ec874d60746\",\"0f3195ad-4a49-4c86-bd53-f959e375fb47\",\"6de0fe8f-c00e-4131-b503-56ab6748c258\",\"866cd177-31d6-467a-a54e-1dbe2cddc4d9\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 100 log messages\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":42,\"y\":13,\"w\":5,\"h\":10,\"i\":\"f69f88a6-ecca-4d78-955b-73c919f93368\"},\"panelIndex\":\"f69f88a6-ecca-4d78-955b-73c919f93368\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-23379a89-f323-4aed-9a31-697065d9d765\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"23379a89-f323-4aed-9a31-697065d9d765\",\"accessor\":\"4a7fa1f5-f9b9-4a4d-bf04-156305695c13\",\"layerType\":\"data\",\"colorMode\":\"None\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"23379a89-f323-4aed-9a31-697065d9d765\":{\"columns\":{\"4a7fa1f5-f9b9-4a4d-bf04-156305695c13\":{\"label\":\"Average response time\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"4a7fa1f5-f9b9-4a4d-bf04-156305695c13\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Current response time\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":23,\"w\":24,\"h\":10,\"i\":\"fd9092c9-08bd-4e55-b7ac-489f201212e6\"},\"panelIndex\":\"fd9092c9-08bd-4e55-b7ac-489f201212e6\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area\",\"layers\":[{\"layerId\":\"c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7\",\"seriesType\":\"area\",\"xAccessor\":\"2310c8c9-6cfb-467b-9774-f30727e17502\",\"splitAccessor\":\"fca1c672-0435-40cb-9470-d2436aa29e2b\",\"accessors\":[\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7\":{\"columns\":{\"fca1c672-0435-40cb-9470-d2436aa29e2b\":{\"label\":\"Top 3 values of url\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"2310c8c9-6cfb-467b-9774-f30727e17502\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\":{\"label\":\"Average of duration\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"fca1c672-0435-40cb-9470-d2436aa29e2b\",\"2310c8c9-6cfb-467b-9774-f30727e17502\",\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Response time (average)\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":23,\"w\":22,\"h\":22,\"i\":\"ce03539a-a246-442b-b6ff-6f0ba127100a\"},\"panelIndex\":\"ce03539a-a246-442b-b6ff-6f0ba127100a\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-312ab185-e6dc-4954-b768-b4a32c4b98ba\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"312ab185-e6dc-4954-b768-b4a32c4b98ba\",\"layerType\":\"data\",\"columns\":[{\"isTransposed\":false,\"columnId\":\"af6e980a-feb3-441f-bf4d-a220d5868339\"},{\"isTransposed\":false,\"columnId\":\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\"},{\"isTransposed\":false,\"columnId\":\"20e57cae-8a85-4c97-bf10-1d009b294264\",\"hidden\":false},{\"columnId\":\"05804846-0833-4aa1-acf5-5a3d7df9573b\",\"isTransposed\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"312ab185-e6dc-4954-b768-b4a32c4b98ba\":{\"columns\":{\"af6e980a-feb3-441f-bf4d-a220d5868339\":{\"label\":\"Top 50 values of url\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url\",\"isBucketed\":true,\"params\":{\"size\":50,\"orderBy\":{\"type\":\"column\",\"columnId\":\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}},\"20e57cae-8a85-4c97-bf10-1d009b294264\":{\"label\":\"Percentile of 200 codes\",\"dataType\":\"number\",\"operationType\":\"percentile_rank\",\"sourceField\":\"statusCode\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"value\":200},\"customLabel\":true},\"05804846-0833-4aa1-acf5-5a3d7df9573b\":{\"label\":\"Average of duration\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"af6e980a-feb3-441f-bf4d-a220d5868339\",\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\",\"20e57cae-8a85-4c97-bf10-1d009b294264\",\"05804846-0833-4aa1-acf5-5a3d7df9573b\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"API hits by endpoint\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":33,\"w\":24,\"h\":12,\"i\":\"6f0757c3-f695-41b3-a455-bcf86da79406\"},\"panelIndex\":\"6f0757c3-f695-41b3-a455-bcf86da79406\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-248cdf95-161c-4de1-84a1-170fcbae975d\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"248cdf95-161c-4de1-84a1-170fcbae975d\",\"accessors\":[\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"7ec17b55-e226-4971-bfd9-72b4505d7b8f\",\"splitAccessor\":\"be435127-fcaf-4a6d-a2dc-b175ff4a236c\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"248cdf95-161c-4de1-84a1-170fcbae975d\":{\"columns\":{\"7ec17b55-e226-4971-bfd9-72b4505d7b8f\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}},\"be435127-fcaf-4a6d-a2dc-b175ff4a236c\":{\"label\":\"Top 10 values of url\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}}},\"columnOrder\":[\"be435127-fcaf-4a6d-a2dc-b175ff4a236c\",\"7ec17b55-e226-4971-bfd9-72b4505d7b8f\",\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\"],\"incompleteColumns\":{}}}}}}},\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"Top 10 requests over time\"}]","timeRestore":false,"title":"KrakenD Application Log","version":1},"coreMigrationVersion":"8.4.1","id":"7b3ca1f0-3343-11ed-b2ac-1b9e6ebd5701","migrationVersion":{"dashboard":"8.4.0"},"references":[{"id":"security-solution-default","name":"61c51800-6120-40bb-9e79-0c2cb3a865ad:indexpattern-datasource-layer-62c0589c-3e4c-40b4-82cb-d9cd9aad3c45","type":"index-pattern"},{"id":"security-solution-default","name":"14d142f6-9a47-47fe-912a-5a48d4212bcc:indexpattern-datasource-layer-7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f","type":"index-pattern"},{"id":"security-solution-default","name":"a5aaa0eb-0580-4970-a92f-f057b57c17aa:indexpattern-datasource-layer-5c308554-7dc3-4986-b31e-232c976657a2","type":"index-pattern"},{"id":"security-solution-default","name":"7bbec2fb-0ab6-4f6a-8259-cc46f91d5a9b:indexpattern-datasource-layer-73d168b7-3b62-4c83-9f8f-d59ccb1ceea6","type":"index-pattern"},{"id":"security-solution-default","name":"87bdb6b4-2c78-4491-b812-8a05061da493:indexpattern-datasource-layer-310c919e-6479-4a10-b8b9-f0c8feb69262","type":"index-pattern"},{"id":"security-solution-default","name":"3adf3d59-f407-49f8-866d-01868cd2b422:indexpattern-datasource-layer-6bb18b1d-e479-4493-84d0-3e03ae5680af","type":"index-pattern"},{"id":"security-solution-default","name":"f69f88a6-ecca-4d78-955b-73c919f93368:indexpattern-datasource-layer-23379a89-f323-4aed-9a31-697065d9d765","type":"index-pattern"},{"id":"security-solution-default","name":"fd9092c9-08bd-4e55-b7ac-489f201212e6:indexpattern-datasource-layer-c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7","type":"index-pattern"},{"id":"security-solution-default","name":"ce03539a-a246-442b-b6ff-6f0ba127100a:indexpattern-datasource-layer-312ab185-e6dc-4954-b768-b4a32c4b98ba","type":"index-pattern"},{"id":"security-solution-default","name":"6f0757c3-f695-41b3-a455-bcf86da79406:indexpattern-datasource-layer-248cdf95-161c-4de1-84a1-170fcbae975d","type":"index-pattern"}],"type":"dashboard","updated_at":"2022-09-13T09:07:24.175Z","version":"WzEyOTMsMV0="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"syncTooltips\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":21,\"h\":13,\"i\":\"61c51800-6120-40bb-9e79-0c2cb3a865ad\"},\"panelIndex\":\"61c51800-6120-40bb-9e79-0c2cb3a865ad\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-62c0589c-3e4c-40b4-82cb-d9cd9aad3c45\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"62c0589c-3e4c-40b4-82cb-d9cd9aad3c45\",\"accessors\":[\"44dbb541-6d8b-4c4d-841c-040d2abbcaeb\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"b195d83d-4051-48b3-82b5-31e22d06655e\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"62c0589c-3e4c-40b4-82cb-d9cd9aad3c45\":{\"columns\":{\"b195d83d-4051-48b3-82b5-31e22d06655e\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"44dbb541-6d8b-4c4d-841c-040d2abbcaeb\":{\"label\":\"Hits\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"b195d83d-4051-48b3-82b5-31e22d06655e\",\"44dbb541-6d8b-4c4d-841c-040d2abbcaeb\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"API hits\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":0,\"w\":21,\"h\":13,\"i\":\"14d142f6-9a47-47fe-912a-5a48d4212bcc\"},\"panelIndex\":\"14d142f6-9a47-47fe-912a-5a48d4212bcc\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f\",\"seriesType\":\"bar_stacked\",\"xAccessor\":\"1febc61b-de7d-4b9f-bc3e-a0f6b360b967\",\"splitAccessor\":\"eb953731-b64b-4699-9168-1bcfb7e800c3\",\"accessors\":[\"f7ae01a4-60b9-4492-b8fd-dbc3a2a13d27\"],\"layerType\":\"data\",\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"}}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f\":{\"columns\":{\"1febc61b-de7d-4b9f-bc3e-a0f6b360b967\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"f7ae01a4-60b9-4492-b8fd-dbc3a2a13d27\":{\"label\":\"Count of statusCode\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"statusCode\",\"params\":{\"emptyAsNull\":true}},\"eb953731-b64b-4699-9168-1bcfb7e800c3\":{\"label\":\"Top status codes\",\"dataType\":\"number\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"statusCode\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"f7ae01a4-60b9-4492-b8fd-dbc3a2a13d27\"},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}},\"customLabel\":true}},\"columnOrder\":[\"1febc61b-de7d-4b9f-bc3e-a0f6b360b967\",\"eb953731-b64b-4699-9168-1bcfb7e800c3\",\"f7ae01a4-60b9-4492-b8fd-dbc3a2a13d27\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Status code distribution over time\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":42,\"y\":0,\"w\":6,\"h\":6,\"i\":\"a5aaa0eb-0580-4970-a92f-f057b57c17aa\"},\"panelIndex\":\"a5aaa0eb-0580-4970-a92f-f057b57c17aa\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsPie\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-5c308554-7dc3-4986-b31e-232c976657a2\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"5c308554-7dc3-4986-b31e-232c976657a2\",\"groups\":[\"aa02addb-82df-4a3c-a052-b6564797c7ad\"],\"metric\":\"1327f462-8a28-4421-9b42-7a25f2cbf07e\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false,\"layerType\":\"data\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"5c308554-7dc3-4986-b31e-232c976657a2\":{\"columns\":{\"aa02addb-82df-4a3c-a052-b6564797c7ad\":{\"label\":\"Top 10 values of statusCode\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"statusCode\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"1327f462-8a28-4421-9b42-7a25f2cbf07e\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"1327f462-8a28-4421-9b42-7a25f2cbf07e\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"aa02addb-82df-4a3c-a052-b6564797c7ad\",\"1327f462-8a28-4421-9b42-7a25f2cbf07e\"],\"incompleteColumns\":{}}}}}}},\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"% of Status Codes\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":42,\"y\":6,\"w\":6,\"h\":7,\"i\":\"7bbec2fb-0ab6-4f6a-8259-cc46f91d5a9b\"},\"panelIndex\":\"7bbec2fb-0ab6-4f6a-8259-cc46f91d5a9b\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsPie\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-73d168b7-3b62-4c83-9f8f-d59ccb1ceea6\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"shape\":\"donut\",\"layers\":[{\"layerId\":\"73d168b7-3b62-4c83-9f8f-d59ccb1ceea6\",\"groups\":[\"d74c9301-1bce-472c-bcf5-3d4f3d69e6ab\"],\"metric\":\"72b1102a-e79c-4240-b82e-d96f2b5312d5\",\"numberDisplay\":\"percent\",\"categoryDisplay\":\"default\",\"legendDisplay\":\"default\",\"nestedLegend\":false,\"layerType\":\"data\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"73d168b7-3b62-4c83-9f8f-d59ccb1ceea6\":{\"columns\":{\"d74c9301-1bce-472c-bcf5-3d4f3d69e6ab\":{\"label\":\"Top 5 values of ip\",\"dataType\":\"ip\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"ip\",\"isBucketed\":true,\"params\":{\"size\":5,\"orderBy\":{\"type\":\"column\",\"columnId\":\"72b1102a-e79c-4240-b82e-d96f2b5312d5\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"72b1102a-e79c-4240-b82e-d96f2b5312d5\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"d74c9301-1bce-472c-bcf5-3d4f3d69e6ab\",\"72b1102a-e79c-4240-b82e-d96f2b5312d5\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Top 5 IPs\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":13,\"w\":21,\"h\":9,\"i\":\"87bdb6b4-2c78-4491-b812-8a05061da493\"},\"panelIndex\":\"87bdb6b4-2c78-4491-b812-8a05061da493\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-310c919e-6479-4a10-b8b9-f0c8feb69262\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"line\",\"layers\":[{\"layerId\":\"310c919e-6479-4a10-b8b9-f0c8feb69262\",\"accessors\":[\"96958bf4-e4ac-4a00-92a0-48b8ea3eece9\"],\"position\":\"top\",\"seriesType\":\"line\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"90f99851-cd6e-44eb-9fde-8ab5ef8bc9a9\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"310c919e-6479-4a10-b8b9-f0c8feb69262\":{\"columns\":{\"90f99851-cd6e-44eb-9fde-8ab5ef8bc9a9\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"96958bf4-e4ac-4a00-92a0-48b8ea3eece9\":{\"label\":\"Average of duration\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"90f99851-cd6e-44eb-9fde-8ab5ef8bc9a9\",\"96958bf4-e4ac-4a00-92a0-48b8ea3eece9\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Response time\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":21,\"y\":13,\"w\":21,\"h\":9,\"i\":\"3adf3d59-f407-49f8-866d-01868cd2b422\"},\"panelIndex\":\"3adf3d59-f407-49f8-866d-01868cd2b422\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-6bb18b1d-e479-4493-84d0-3e03ae5680af\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"6bb18b1d-e479-4493-84d0-3e03ae5680af\",\"layerType\":\"data\",\"columns\":[{\"columnId\":\"854a31ce-d958-4835-a5cc-7db421c7f84b\"},{\"columnId\":\"e419d9c5-416c-4efa-aec9-2497fe86c7b9\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"6bb18b1d-e479-4493-84d0-3e03ae5680af\":{\"columns\":{\"854a31ce-d958-4835-a5cc-7db421c7f84b\":{\"label\":\"Top 10 values of url\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"e419d9c5-416c-4efa-aec9-2497fe86c7b9\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"e419d9c5-416c-4efa-aec9-2497fe86c7b9\":{\"label\":\"Maximum of duration\",\"dataType\":\"number\",\"operationType\":\"max\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"854a31ce-d958-4835-a5cc-7db421c7f84b\",\"e419d9c5-416c-4efa-aec9-2497fe86c7b9\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Worst response times\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":42,\"y\":13,\"w\":6,\"h\":9,\"i\":\"f69f88a6-ecca-4d78-955b-73c919f93368\"},\"panelIndex\":\"f69f88a6-ecca-4d78-955b-73c919f93368\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsMetric\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-23379a89-f323-4aed-9a31-697065d9d765\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"23379a89-f323-4aed-9a31-697065d9d765\",\"accessor\":\"4a7fa1f5-f9b9-4a4d-bf04-156305695c13\",\"layerType\":\"data\",\"colorMode\":\"None\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"23379a89-f323-4aed-9a31-697065d9d765\":{\"columns\":{\"4a7fa1f5-f9b9-4a4d-bf04-156305695c13\":{\"label\":\"Average response time\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"4a7fa1f5-f9b9-4a4d-bf04-156305695c13\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Current response time\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":22,\"w\":24,\"h\":14,\"i\":\"fd9092c9-08bd-4e55-b7ac-489f201212e6\"},\"panelIndex\":\"fd9092c9-08bd-4e55-b7ac-489f201212e6\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area\",\"layers\":[{\"layerId\":\"c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7\",\"seriesType\":\"area\",\"xAccessor\":\"2310c8c9-6cfb-467b-9774-f30727e17502\",\"splitAccessor\":\"fca1c672-0435-40cb-9470-d2436aa29e2b\",\"accessors\":[\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7\":{\"columns\":{\"fca1c672-0435-40cb-9470-d2436aa29e2b\":{\"label\":\"Top 3 values of url\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url\",\"isBucketed\":true,\"params\":{\"size\":3,\"orderBy\":{\"type\":\"column\",\"columnId\":\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"2310c8c9-6cfb-467b-9774-f30727e17502\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\":{\"label\":\"Average of duration\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"fca1c672-0435-40cb-9470-d2436aa29e2b\",\"2310c8c9-6cfb-467b-9774-f30727e17502\",\"8f66020e-98a4-40a1-8c3f-98aac6aa3b3a\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Response time (average)\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":22,\"w\":24,\"h\":32,\"i\":\"ce03539a-a246-442b-b6ff-6f0ba127100a\"},\"panelIndex\":\"ce03539a-a246-442b-b6ff-6f0ba127100a\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-312ab185-e6dc-4954-b768-b4a32c4b98ba\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"312ab185-e6dc-4954-b768-b4a32c4b98ba\",\"layerType\":\"data\",\"columns\":[{\"isTransposed\":false,\"columnId\":\"af6e980a-feb3-441f-bf4d-a220d5868339\"},{\"isTransposed\":false,\"columnId\":\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\"},{\"isTransposed\":false,\"columnId\":\"20e57cae-8a85-4c97-bf10-1d009b294264\",\"hidden\":false},{\"columnId\":\"05804846-0833-4aa1-acf5-5a3d7df9573b\",\"isTransposed\":false}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"312ab185-e6dc-4954-b768-b4a32c4b98ba\":{\"columns\":{\"af6e980a-feb3-441f-bf4d-a220d5868339\":{\"label\":\"Top 50 values of url\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url\",\"isBucketed\":true,\"params\":{\"size\":50,\"orderBy\":{\"type\":\"column\",\"columnId\":\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}},\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}},\"20e57cae-8a85-4c97-bf10-1d009b294264\":{\"label\":\"Percentile of 200 codes\",\"dataType\":\"number\",\"operationType\":\"percentile_rank\",\"sourceField\":\"statusCode\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"value\":200},\"customLabel\":true},\"05804846-0833-4aa1-acf5-5a3d7df9573b\":{\"label\":\"Average of duration\",\"dataType\":\"number\",\"operationType\":\"average\",\"sourceField\":\"duration\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"af6e980a-feb3-441f-bf4d-a220d5868339\",\"9f597c76-47cd-4080-9bbd-9e3d94f6c5ae\",\"20e57cae-8a85-4c97-bf10-1d009b294264\",\"05804846-0833-4aa1-acf5-5a3d7df9573b\"],\"incompleteColumns\":{}}}}}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"API hits by endpoint\"},{\"version\":\"8.4.1\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":36,\"w\":24,\"h\":18,\"i\":\"6f0757c3-f695-41b3-a455-bcf86da79406\"},\"panelIndex\":\"6f0757c3-f695-41b3-a455-bcf86da79406\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"security-solution-default\",\"name\":\"indexpattern-datasource-layer-248cdf95-161c-4de1-84a1-170fcbae975d\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"248cdf95-161c-4de1-84a1-170fcbae975d\",\"accessors\":[\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"7ec17b55-e226-4971-bfd9-72b4505d7b8f\",\"splitAccessor\":\"be435127-fcaf-4a6d-a2dc-b175ff4a236c\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"indexpattern\":{\"layers\":{\"248cdf95-161c-4de1-84a1-170fcbae975d\":{\"columns\":{\"7ec17b55-e226-4971-bfd9-72b4505d7b8f\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}},\"be435127-fcaf-4a6d-a2dc-b175ff4a236c\":{\"label\":\"Top 10 values of url\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"url\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"column\",\"columnId\":\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"}}}},\"columnOrder\":[\"be435127-fcaf-4a6d-a2dc-b175ff4a236c\",\"7ec17b55-e226-4971-bfd9-72b4505d7b8f\",\"aa2e565f-9c9b-4448-a818-94dcc24a7e47\"],\"incompleteColumns\":{}}}}}}},\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"Top 10 requests over time\"}]","timeRestore":false,"title":"KrakenD Access Log","version":1},"coreMigrationVersion":"8.4.1","id":"0fced160-333c-11ed-b2ac-1b9e6ebd5701","migrationVersion":{"dashboard":"8.4.0"},"references":[{"id":"security-solution-default","name":"61c51800-6120-40bb-9e79-0c2cb3a865ad:indexpattern-datasource-layer-62c0589c-3e4c-40b4-82cb-d9cd9aad3c45","type":"index-pattern"},{"id":"security-solution-default","name":"14d142f6-9a47-47fe-912a-5a48d4212bcc:indexpattern-datasource-layer-7d16ac75-e86f-47ff-a746-2bf0b9ea6a0f","type":"index-pattern"},{"id":"security-solution-default","name":"a5aaa0eb-0580-4970-a92f-f057b57c17aa:indexpattern-datasource-layer-5c308554-7dc3-4986-b31e-232c976657a2","type":"index-pattern"},{"id":"security-solution-default","name":"7bbec2fb-0ab6-4f6a-8259-cc46f91d5a9b:indexpattern-datasource-layer-73d168b7-3b62-4c83-9f8f-d59ccb1ceea6","type":"index-pattern"},{"id":"security-solution-default","name":"87bdb6b4-2c78-4491-b812-8a05061da493:indexpattern-datasource-layer-310c919e-6479-4a10-b8b9-f0c8feb69262","type":"index-pattern"},{"id":"security-solution-default","name":"3adf3d59-f407-49f8-866d-01868cd2b422:indexpattern-datasource-layer-6bb18b1d-e479-4493-84d0-3e03ae5680af","type":"index-pattern"},{"id":"security-solution-default","name":"f69f88a6-ecca-4d78-955b-73c919f93368:indexpattern-datasource-layer-23379a89-f323-4aed-9a31-697065d9d765","type":"index-pattern"},{"id":"security-solution-default","name":"fd9092c9-08bd-4e55-b7ac-489f201212e6:indexpattern-datasource-layer-c7d7d3a0-dcbd-4ddb-b949-50b2c2ebb9f7","type":"index-pattern"},{"id":"security-solution-default","name":"ce03539a-a246-442b-b6ff-6f0ba127100a:indexpattern-datasource-layer-312ab185-e6dc-4954-b768-b4a32c4b98ba","type":"index-pattern"},{"id":"security-solution-default","name":"6f0757c3-f695-41b3-a455-bcf86da79406:indexpattern-datasource-layer-248cdf95-161c-4de1-84a1-170fcbae975d","type":"index-pattern"}],"type":"dashboard","updated_at":"2022-09-13T08:14:17.462Z","version":"WzY5LDFd"} +{"excludedObjects":[],"excludedObjectsCount":0,"exportedCount":3,"missingRefCount":0,"missingReferences":[]}` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/grafanaDashboardYamlContent.asset.js b/.suite-cli/cli/scripts/assets/grafanaDashboardYamlContent.asset.js new file mode 100644 index 0000000..0ed7458 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/grafanaDashboardYamlContent.asset.js @@ -0,0 +1,12 @@ +module.exports = () =>` +apiVersion: 1 + +providers: +- name: 'default' + orgId: 1 + folder: '' + type: file + disableDeletion: false + updateIntervalSeconds: 60 + options: + path: /var/lib/grafana/dashboards/krakend` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/grafanaDatasourcesYamlContent.asset.js b/.suite-cli/cli/scripts/assets/grafanaDatasourcesYamlContent.asset.js new file mode 100644 index 0000000..d1c510d --- /dev/null +++ b/.suite-cli/cli/scripts/assets/grafanaDatasourcesYamlContent.asset.js @@ -0,0 +1,16 @@ +module.exports = () =>` +apiVersion: 1 + +datasources: +- access: 'proxy' + editable: true + is_default: true + name: 'influx' + org_id: 1 + type: 'influxdb' + url: 'http://influxdb:8086' + version: 1 + user: krakend-dev + password: pas5w0rd + database: krakend +` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/grafanaKrakendDashboardJsonContent.asset.js b/.suite-cli/cli/scripts/assets/grafanaKrakendDashboardJsonContent.asset.js new file mode 100644 index 0000000..be177b3 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/grafanaKrakendDashboardJsonContent.asset.js @@ -0,0 +1,6976 @@ +module.exports = () =>` +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": 5722, + "graphTooltip": 0, + "iteration": 1621272128938, + "links": [], + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "short", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 0 + }, + "hideTimeOverride": false, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "router", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "direction", + "operator": "=", + "value": "in" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Router Requests", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "total" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "short", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 0 + }, + "hideTimeOverride": false, + "id": 61, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "layer", + "operator": "=", + "value": "pipe" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Proxy Requests", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "total" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "short", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 0 + }, + "hideTimeOverride": false, + "id": 70, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "layer", + "operator": "=", + "value": "backend" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Backend Requests", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "total" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "ns", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 0 + }, + "hideTimeOverride": false, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "router.response-time", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Avg Response Time", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "ns", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 0 + }, + "hideTimeOverride": false, + "id": 68, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "router.response-time", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "stddev" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Response Time stddev", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "ns", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 15, + "y": 0 + }, + "hideTimeOverride": false, + "id": 67, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "router.response-time", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "max" + ], + "type": "field" + }, + { + "params": [], + "type": "max" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Max Response Time", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "max" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "decbytes", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 18, + "y": 0 + }, + "hideTimeOverride": false, + "id": 69, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.Alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Allocated Mem (per host)", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 0 + }, + "hideTimeOverride": false, + "id": 64, + "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": "50%", + "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": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "NumGoroutine" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": "", + "timeFrom": null, + "title": "Goroutines (per host)", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 30, + "panels": [], + "title": "Router", + "type": "row" + }, + { + "columns": [ + { + "$$hashKey": "object:972", + "text": "Avg", + "value": "avg" + }, + { + "$$hashKey": "object:973", + "text": "Min", + "value": "min" + }, + { + "$$hashKey": "object:974", + "text": "Max", + "value": "max" + }, + { + "$$hashKey": "object:975", + "text": "Current", + "value": "current" + } + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 5 + }, + "id": 77, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "alias": "$tag_status $tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "status" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "responses", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"count\") FROM \"responses\" WHERE (\"host\" =~ /^$host$/) AND $timeFilter GROUP BY time($resolution), \"name\", \"status\" fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Endpoint Throughput (per $resolution)", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "columns": [ + { + "$$hashKey": "object:3783", + "text": "Avg", + "value": "avg" + }, + { + "$$hashKey": "object:3784", + "text": "Min", + "value": "min" + }, + { + "$$hashKey": "object:3785", + "text": "Max", + "value": "max" + }, + { + "$$hashKey": "object:3786", + "text": "Current", + "value": "current" + } + ], + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 5 + }, + "id": 78, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "$$hashKey": "object:5896", + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "$$hashKey": "object:5897", + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "ms" + } + ], + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "router.response-time", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Endpoint Response Time (per $resolution)", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "open", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "router", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "direction", + "operator": "=", + "value": "in" + } + ] + }, + { + "alias": "closed", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "router", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "direction", + "operator": "=", + "value": "out" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Avg Connections per minute", + "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": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 14 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_status", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "status" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "responses", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Response Distribution", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "router.response-time", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Response Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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 + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "timeseries", + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 23 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 52, + "legend": { + "show": false + }, + "links": [], + "reverseYBuckets": false, + "targets": [ + { + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "router.response-time", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Response Time HeatMap", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "ns", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "router.response-size", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Response Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "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 + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "timeseries", + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 32 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 53, + "legend": { + "show": false + }, + "links": [], + "reverseYBuckets": false, + "targets": [ + { + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "router.response-size", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Response Size HeatMap", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "decbytes", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "\${DS_INFLUX}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "open", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "router", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "total" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "direction", + "operator": "=", + "value": "in" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + }, + { + "alias": "close", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "router", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "total" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "direction", + "operator": "=", + "value": "out" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Router connections", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_status", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "status" + ], + "type": "tag" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "responses", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Router response", + "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 + } + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 20, + "panels": [], + "title": "Proxy", + "type": "row" + }, + { + "columns": [ + { + "$$hashKey": "object:1699", + "text": "Avg", + "value": "avg" + }, + { + "$$hashKey": "object:1700", + "text": "Min", + "value": "min" + }, + { + "$$hashKey": "object:1701", + "text": "Max", + "value": "max" + }, + { + "$$hashKey": "object:1702", + "text": "Total", + "value": "total" + }, + { + "$$hashKey": "object:1703", + "text": "Current", + "value": "current" + } + ], + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 51 + }, + "id": 72, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"count\") FROM \"requests\" WHERE (\"layer\" = 'pipe') AND $timeFilter GROUP BY \"name\" fill(null)", + "queryType": "randomWalk", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Pipe Throughput (per $resolution)", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "columns": [ + { + "$$hashKey": "object:4233", + "text": "Avg", + "value": "avg" + }, + { + "$$hashKey": "object:4234", + "text": "Min", + "value": "min" + }, + { + "$$hashKey": "object:4235", + "text": "Max", + "value": "max" + }, + { + "$$hashKey": "object:4236", + "text": "Current", + "value": "current" + } + ], + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 51 + }, + "id": 74, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "$$hashKey": "object:5690", + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "$$hashKey": "object:5691", + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "ms" + } + ], + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "/1000000" + ], + "type": "math" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Pipe Response Time (per $resolution)", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 60 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Proxy Requests", + "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": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 60 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Proxy response distribution (per $resolution)", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 69 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "error", + "operator": "=", + "value": "false" + }, + { + "condition": "AND", + "key": "complete", + "operator": "=", + "value": "true" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Proxy Timers (ok)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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 + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "timeseries", + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 69 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 55, + "legend": { + "show": false + }, + "links": [], + "reverseYBuckets": false, + "targets": [ + { + "alias": "", + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "complete", + "operator": "=", + "value": "true" + }, + { + "condition": "AND", + "key": "error", + "operator": "=", + "value": "false" + } + ] + } + ], + "title": "OK Request HeatMap", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "ns", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 78 + }, + "hiddenSeries": false, + "id": 15, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "complete", + "operator": "=", + "value": "false" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Proxy Timers (incomplete)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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 + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "timeseries", + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 78 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 56, + "legend": { + "show": false + }, + "links": [], + "reverseYBuckets": false, + "targets": [ + { + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "pipe" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "complete", + "operator": "=", + "value": "false" + } + ] + } + ], + "title": "Incomplete Request HeatMap", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": "", + "yAxis": { + "decimals": null, + "format": "ns", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 87 + }, + "id": 36, + "panels": [], + "title": "Backend", + "type": "row" + }, + { + "columns": [ + { + "$$hashKey": "object:796", + "text": "Avg", + "value": "avg" + }, + { + "$$hashKey": "object:797", + "text": "Min", + "value": "min" + }, + { + "$$hashKey": "object:798", + "text": "Max", + "value": "max" + }, + { + "$$hashKey": "object:799", + "text": "Total", + "value": "total" + }, + { + "$$hashKey": "object:800", + "text": "Current", + "value": "current" + } + ], + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 88 + }, + "id": 73, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"count\") FROM \"requests\" WHERE (\"layer\" = 'backend') AND $timeFilter GROUP BY \"name\" fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Backend Throughput (per $resolution)", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "columns": [ + { + "text": "Avg", + "value": "avg" + }, + { + "text": "Min", + "value": "min" + }, + { + "text": "Max", + "value": "max" + }, + { + "text": "Current", + "value": "current" + } + ], + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 88 + }, + "id": 75, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "$$hashKey": "object:6014", + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "$$hashKey": "object:6015", + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "ms" + } + ], + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + " / 1000000" + ], + "type": "math" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "title": "Backend Response Time (per $resolution)", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 97 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "0" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Backend Requests", + "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": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 97 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "c: $tag_complete, e: $tag_error", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "complete" + ], + "type": "tag" + }, + { + "params": [ + "error" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "count" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Backend response distribution (per $resolution)", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 106 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Backend Timers (ok)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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 + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "timeseries", + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 106 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 57, + "legend": { + "show": false + }, + "links": [], + "reverseYBuckets": false, + "targets": [ + { + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "error", + "operator": "=", + "value": "false" + }, + { + "condition": "AND", + "key": "complete", + "operator": "=", + "value": "true" + } + ] + } + ], + "title": "OK Request HeatMap", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "ns", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 115 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_name", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "complete", + "operator": "=", + "value": "false" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Backend Timers (incomplete)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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 + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "timeseries", + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 115 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 58, + "legend": { + "show": false + }, + "links": [], + "reverseYBuckets": false, + "targets": [ + { + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "requests", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "layer", + "operator": "=", + "value": "backend" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$host$/" + }, + { + "condition": "AND", + "key": "complete", + "operator": "=", + "value": "false" + } + ] + } + ], + "title": "Incomplete Request HeatMap", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "ns", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 124 + }, + "id": 47, + "panels": [], + "title": "System", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 125 + }, + "hiddenSeries": false, + "id": 49, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "NumGoroutine" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Goroutines", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 125 + }, + "hiddenSeries": false, + "id": 50, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "NumThread" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Threads", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 134 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/executions/", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col $tag_host", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "host" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "debug", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "GCStats.PauseTotal" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "pause" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "GCStats.NumGC" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "executions" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "GC Total", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 134 + }, + "hiddenSeries": false, + "id": 66, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/executions/", + "yaxis": 2 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col $tag_host", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "host" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "debug", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "GCStats.PauseTotal" + ], + "type": "field" + }, + { + "params": [], + "type": "spread" + }, + { + "params": [ + "pause" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "GCStats.NumGC" + ], + "type": "field" + }, + { + "params": [], + "type": "spread" + }, + { + "params": [ + "executions" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "GC Spread", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 134 + }, + "hiddenSeries": false, + "id": 38, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "service.debug.GCStats.Pause", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT max(\"max\") AS \"max\" FROM \"service.debug.GCStats.Pause\" WHERE (\"host\" =~ /^$host$/) AND $timeFilter GROUP BY time($resolution) fill(null)", + "queryType": "randomWalk", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "max" + ], + "type": "field" + }, + { + "params": [], + "type": "max" + }, + { + "params": [ + "max" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "min" + ], + "type": "field" + }, + { + "params": [], + "type": "min" + }, + { + "params": [ + "min" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "mean" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "mean" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "GC Pause", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ns", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 143 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "sum", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.Alloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Allocated Mem", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 143 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.Sys" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "Sys" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.HeapSys" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "HeapSys" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.StackSys" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "StackSys" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.MCacheSys" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "MCacheSys" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.MSpanSys" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "MSpanSys" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sys (bytes obtained from system)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 152 + }, + "hiddenSeries": false, + "id": 45, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.StackInuse" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "StackInUse" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.StackSys" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "StackSys" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Stack Management", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 152 + }, + "hiddenSeries": false, + "id": 80, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.HeapInuse" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "HeapInuse" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.HeapSys" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "HeapSys" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Heap Management", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "description": "HeapIdle minus HeapReleased estimates the amount of memory that could be returned to the OS, but is being retained by the runtime so it can grow the heap without requesting more memory from the OS. If this difference is significantly larger than the heap size, it indicates there was a recent transient spike in live heap size.", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 161 + }, + "hiddenSeries": false, + "id": 79, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.HeapIdle" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "HeapIdle" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.HeapReleased" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "HeapReleased" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Idle Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "description": "HeapInuse minus HeapAlloc estimates the amount of memory that has been dedicated to particular size classes, but is not currently being used. This is an upper bound on fragmentation, but in general this memory can be reused efficiently.", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 161 + }, + "hiddenSeries": false, + "id": 81, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.HeapAlloc" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "HeapAlloc" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.HeapInuse" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "HeapInuse" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Heap Alloc vs InUse", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 170 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "sum", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "host" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.Lookups" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Pointer Lookups", + "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": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "influx", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 170 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "groupBy": [ + { + "params": [ + "$resolution" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "runtime", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "MemStats.Mallocs" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + }, + { + "params": [ + "MALLOCS" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "MemStats.Frees" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + }, + { + "params": [ + "FREE" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$host$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Management", + "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 + } + } + ], + "refresh": "1m", + "schemaVersion": 26, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "\${DS_INFLUX}", + "definition": "", + "error": null, + "hide": 0, + "includeAll": true, + "label": null, + "multi": true, + "name": "host", + "options": [], + "query": "SHOW TAG VALUES WITH KEY = \"host\"", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "auto": true, + "auto_count": 30, + "auto_min": "1m", + "current": { + "selected": false, + "text": "10m", + "value": "10m" + }, + "error": null, + "hide": 0, + "label": null, + "name": "resolution", + "options": [ + { + "selected": false, + "text": "auto", + "value": "$__auto_interval_resolution" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "2m", + "value": "2m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": true, + "text": "10m", + "value": "10m" + }, + { + "selected": false, + "text": "30m", + "value": "30m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "12h", + "value": "12h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + }, + { + "selected": false, + "text": "7d", + "value": "7d" + }, + { + "selected": false, + "text": "14d", + "value": "14d" + }, + { + "selected": false, + "text": "30d", + "value": "30d" + } + ], + "query": "1m,2m,5m,10m,30m,1h,6h,12h,1d,7d,14d,30d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "current": { + "text": "influx", + "value": "influx" + }, + "error": null, + "hide": 0, + "label": null, + "name": "DS_INFLUX", + "options": [ + { + "selected": true, + "text": "influx", + "value": "influx" + } + ], + "query": "influx", + "skipUrlSync": false, + "type": "constant" + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "KrakenD", + "uid": "I9FkyxWik", + "version": 1 +}` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/index.js b/.suite-cli/cli/scripts/assets/index.js index 0d0c698..da2675d 100644 --- a/.suite-cli/cli/scripts/assets/index.js +++ b/.suite-cli/cli/scripts/assets/index.js @@ -67,5 +67,21 @@ module.exports.k8sIngressContent = require('./k8sIngressContent.asset'); module.exports.k8sLoadBalancerContent = require('./k8sLoadBalancerContent.asset'); module.exports.k8sNodePortContent = require('./k8sNodePortContent.asset'); module.exports.k8sSecretContent = require('./k8sSecretContent.asset'); +module.exports.sreTreeContent = require('./sreTreeContent.asset'); +module.exports.logstashConfContent = require('./logstashConfContent.asset'); +module.exports.grafanaDashboardYamlContent = require('./grafanaDashboardYamlContent.asset'); +module.exports.grafanaDatasourcesYamlContent = require('./grafanaDatasourcesYamlContent.asset'); +module.exports.grafanaKrakendDashboardJsonContent = require('./grafanaKrakendDashboardJsonContent.asset'); +module.exports.krakenFlexibleConfigContent = require('./krakenFlexibleConfigContent.asset'); +module.exports.krakenJsonContent = require('./krakenJsonContent.asset'); +module.exports.krakendPartialsExtraConfContent = require('./krakendPartialsExtraConfContent.asset'); +module.exports.krakendPartialsInputHeadersContent = require('./krakendPartialsInputHeadersContent.asset'); +module.exports.krakendPartialsRateLimitBackendContent = require('./krakendPartialsRateLimitBackendContent.asset'); +module.exports.krakendSettingsProdEnvJsonContent = require('./krakendSettingsProdEnvJsonContent.asset'); +module.exports.krakendSettingsProdLoopExampleJsonContent = require('./krakendSettingsProdLoopExampleJsonContent.asset'); +module.exports.krakendSettingsDevEnvJsonContent = require('./krakendSettingsDevEnvJsonContent.asset'); +module.exports.krakendSettingsDevLoopExampleJsonContent = require('./krakendSettingsDevLoopExampleJsonContent.asset'); +module.exports.krakendTemplatesContent = require('./krakendTemplatesContent.asset'); +module.exports.elasticDashboardJsonContent = require('./elasticDashboardJsonContent.asset'); diff --git a/.suite-cli/cli/scripts/assets/krakenFlexibleConfigContent.asset.js b/.suite-cli/cli/scripts/assets/krakenFlexibleConfigContent.asset.js new file mode 100644 index 0000000..5831395 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakenFlexibleConfigContent.asset.js @@ -0,0 +1,27 @@ +module.exports = () => ` +{ + "$schema": "https://www.krakend.io/schema/v3.json", + "version": 3, + "name": "Sample Gateway", + "port": {{ .env.port }}, + "timeout": "30s", + "cache_ttl": "300s", + "extra_config": {{ include "extra_config.tmpl" }}, + "endpoints": [ + {{ template "sample_template.tmpl" . }}, + + {{ range $idx, $endpoint := .loop_example.dummy }} + {{ if $idx }},{{ end }} + { + "endpoint": "{{ $endpoint }}", + "backend": [ + { + "host": [ "http://localhost:8080" ], + "url_pattern": "/__debug{{ $endpoint }}" + } + ] + } + {{ end }} + ] +} +` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakenJsonContent.asset.js b/.suite-cli/cli/scripts/assets/krakenJsonContent.asset.js new file mode 100644 index 0000000..1fda7db --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakenJsonContent.asset.js @@ -0,0 +1,479 @@ +module.exports = ()=>` +{ + "$schema": "https://www.krakend.io/schema/v3.json", + "version": 3, + "name": "KrakenD Enterprise API Gateway", + "port": 8080, + "host": [ + "http://fake_api" + ], + "timeout": "3000ms", + "cache_ttl": "300s", + "endpoints": [ + { + "@comment": "Feature: Aggregation + Basic transformation (filtering & mapping) + grouping", + "endpoint": "/git/{user}", + "backend": [ + { + "host": [ + "https://api.github.com" + ], + "url_pattern": "/users/{user}", + "allow": [ + "avatar_url", + "name", + "company", + "blog", + "location", + "mail", + "hireable", + "followers", + "public_repos", + "public_gists" + ], + "mapping": { + "blog": "website" + }, + "group": "user" + }, + { + "host": [ + "https://api.github.com" + ], + "url_pattern": "/users/{user}/repos", + "mapping": { + "collection": "repos" + }, + "is_collection": true + } + ] + }, + { + "@comment": "Feature: Aggregation & Transformation with collections", + "endpoint": "/cryptos/{currency}", + "backend": [ + { + "host": [ + "https://api.coingecko.com" + ], + "url_pattern": "/api/v3/coins/markets?vs_currency={currency}&ids=bitcoin%2Cethereum&order=market_cap_desc&per_page=100&page=1&sparkline=false", + "encoding": "safejson", + "extra_config": { + "proxy": { + "flatmap_filter": [ + { + "type": "move", + "args": [ + "collection", + "coins" + ] + }, + { + "type": "del", + "args": [ + "coins.*.ath_change_percentage", + "coins.*.ath_date", + "coins.*.atl", + "coins.*.atl_change_percentage", + "coins.*.atl_date", + "coins.*.circulating_supply", + "coins.*.fully_diluted_valuation", + "coins.*.high_24h", + "coins.*.fully_diluted_valuation", + "coins.*.low_24h", + "coins.*.market_cap_change_24h", + "coins.*.market_cap_change_percentage_24h", + "coins.*.market_cap_rank", + "coins.*.max_supply", + "coins.*.price_change_24h", + "coins.*.price_change_percentage_24h", + "coins.*.roi", + "coins.*.total_supply", + "coins.*.total_volume" + ] + } + ] + } + } + }, + { + "host": [ + "https://api.coingecko.com" + ], + "url_pattern": "/api/v3/global", + "allow": [ + "total_market_cap.btc", + "total_market_cap.eth", + "total_volume.btc", + "total_volume.eth", + "market_cap_percentage.btc", + "market_cap_percentage.eth", + "updated_at" + ], + "target": "data", + "group": "market" + } + ] + }, + { + "@comment": "Feature: Aggregation + backend rate limiting + endpoint rate limiting", + "endpoint": "/shop", + "backend": [ + { + "url_pattern": "/shop/campaigns.json", + "allow": [ + "campaigns" + ] + }, + { + "url_pattern": "/shop/products.json", + "allow": [ + "products" + ], + "extra_config": { + "qos/ratelimit/proxy": { + "max_rate": 1, + "capacity": 1 + } + } + } + ], + "extra_config": { + "qos/ratelimit/router": { + "max_rate": 2 + } + } + }, + { + "@comment": "Feature: Backend cache", + "endpoint": "/market/cached", + "backend": [ + { + "host": [ + "https://api.coingecko.com" + ], + "url_pattern": "/api/v3/coins/markets?vs_currency=eur&ids=bitcoin%2Cethereum&order=market_cap_desc&per_page=100&page=1&sparkline=false", + "encoding": "safejson", + "mapping": { + "collection": "coins" + }, + "extra_config": { + "qos/http-cache": { + "shared": true + } + } + } + ] + }, + { + "@comment": "Feature: GraphQL to REST", + "endpoint": "/starwars_films/{movie_id}", + "backend": [ + { + "host": [ + "https://swapi-graphql.netlify.app/" + ], + "url_pattern": "/.netlify/functions/index", + "target": "data.film", + "extra_config": { + "backend/graphql": { + "type": "query", + "query": "query Query ($movie_id: ID!) {\nfilm (filmID: $movie_id) {\nid\nepisodeID\ntitle\ndirector\nreleaseDate\nspeciesConnection {\nspecies {\nname\nclassification\nhomeworld {\nname\n}\n}\n}\n}\n}", + "variables": { + "movie_id": "{movie_id}" + } + } + } + } + ] + }, + { + "@comment": "Feature: Concurrent calls - Not enabled", + "endpoint": "/market/simple", + "backend": [ + { + "host": [ + "https://api.coingecko.com" + ], + "url_pattern": "/api/v3/coins/markets?vs_currency=eur&ids=bitcoin%2Cethereum&order=market_cap_desc&per_page=100&page=1&sparkline=false", + "encoding": "safejson", + "mapping": { + "collection": "coins" + } + } + ] + }, + { + "@comment": "Feature: Concurrent calls - Enabled", + "endpoint": "/market/concurrent", + "concurrent_calls": 3, + "backend": [ + { + "host": [ + "https://api.coingecko.com" + ], + "url_pattern": "/api/v3/coins/markets?vs_currency=eur&ids=bitcoin%2Cethereum&order=market_cap_desc&per_page=100&page=1&sparkline=false", + "encoding": "safejson", + "mapping": { + "collection": "coins" + } + } + ] + }, + { + "@comment": "Feature: Sequential calls, using values from 1st call response into 2nd call request", + "endpoint": "/sequential", + "backend": [ + { + "url_pattern": "/hotels/1.json", + "allow": [ + "destination_id" + ] + }, + { + "url_pattern": "/destinations/{resp0_destination_id}.json" + } + ], + "extra_config": { + "proxy": { + "sequential": true + } + } + }, + { + "@comment": "Feature: A failing request from a non-existent backend", + "endpoint": "/fail", + "backend": [ + { + "url_pattern": "/user/1.json", + "group": "user" + }, + { + "host": [ + "http://fake_url_that_should_not_resolve.tld" + ], + "url_pattern": "/", + "group": "none" + } + ] + }, + { + "@comment": "Feature: A public endpoint that requires no authentication", + "endpoint": "/public", + "backend": [ + { + "url_pattern": "/hotels/1.json" + } + ] + }, + { + "@comment": "Feature: Authorization based on JWT (using Auth0)", + "endpoint": "/private/auth0", + "backend": [ + { + "url_pattern": "/user/1.json" + } + ], + "extra_config": { + "auth/validator": { + "alg": "RS256", + "audience": [ + "http://api.example.com" + ], + "roles_key": "http://api.example.com/custom/roles", + "roles": [ + "user", + "admin" + ], + "jwk_url": "https://albert-test.auth0.com/.well-known/jwks.json" + } + } + }, + { + "@comment": "Feature: Authorization based on JWT (using KrakenD JOSE signer)", + "endpoint": "/private/custom", + "backend": [ + { + "url_pattern": "/user/1.json" + } + ], + "extra_config": { + "auth/validator": { + "alg": "HS256", + "audience": [ + "http://api.example.com" + ], + "roles_key": "roles", + "issuer": "https://krakend.io", + "roles": [ + "role_a", + "role_c" + ], + "jwk_url": "http://fake_api/jwk/symmetric.json", + "disable_jwk_security": true + } + } + }, + { + "@comment": "Feature: JWT signing, as described at https://www.krakend.io/docs/authorization/jwt-signing/", + "endpoint": "/token", + "backend": [ + { + "url_pattern": "/token.json" + } + ], + "extra_config": { + "auth/signer": { + "alg": "HS256", + "kid": "sim2", + "keys_to_sign": [ + "access_token", + "refresh_token" + ], + "jwk_url": "http://fake_api/jwk/symmetric.json", + "disable_jwk_security": true + } + } + }, + { + "@comment": "Feature: Only POST method allowed", + "endpoint": "/post", + "method": "POST", + "backend": [ + { + "url_pattern": "/__debug/post" + } + ] + }, + { + "@comment": "Feature: Mocked response", + "endpoint": "/mocked-response", + "method": "GET", + "output_encoding": "json", + "backend": [ + { + "host": [ + "http://unexistent_backend" + ], + "url_pattern": "/" + } + ], + "extra_config": { + "proxy": { + "static": { + "data": { + "an_integer": 123, + "an_array": [ + "arr1", + "arr2" + ], + "an_object": { + "obj": "obj1" + } + }, + "strategy": "always" + } + } + } + } + ], + "sequential_start": true, + "async_agent": [ + { + "name": "async-agent-demo", + "backend": [ + { + "host": [ + "http://127.0.0.1:8080" + ], + "url_pattern": "/__debug/async-agent-demo", + "method": "POST" + } + ], + "consumer": { + "topic": "*.bar", + "workers": 20 + }, + "connection": { + "max_retries": 10, + "backoff_strategy": "exponential-jitter" + }, + "extra_config": { + "async/amqp": { + "name": "krakend", + "host": "amqp://guest:guest@rabbitmq:5672/", + "exchange": "foo", + "prefetch_count": 40, + "auto_ack": true + } + } + } + ], + "extra_config": { + "telemetry/metrics": { + "collection_time": "30s", + "listen_address": ":8090" + }, + "telemetry/influx": { + "address": "http://influxdb:8086", + "ttl": "25s", + "buffer_size": 100, + "username": "krakend-dev", + "password": "pas5w0rd" + }, + "telemetry/logging": { + "level": "DEBUG", + "prefix": "[KRAKEND]", + "syslog": false, + "stdout": true + }, + "telemetry/gelf": { + "address": "logstash:12201", + "enable_tcp": false + }, + "telemetry/opencensus": { + "sample_rate": 100, + "reporting_period": 1, + "enabled_layers": { + "backend": true, + "router": true + }, + "exporters": { + "jaeger": { + "endpoint": "http://jaeger:14268/api/traces", + "service_name": "krakend" + } + } + }, + "security/cors": { + "allow_origins": [ + "*" + ], + "allow_methods": [ + "POST", + "GET" + ], + "allow_headers": [ + "Origin", + "Authorization", + "Content-Type" + ], + "expose_headers": [ + "Content-Length" + ], + "max_age": "12h" + }, + "auth/revoker": { + "N": 10000000, + "P": 0.0000001, + "hash_name": "optimal", + "TTL": 1500, + "port": 1234, + "token_keys": [ + "jti" + ] + } + } +} + +` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendPartialsExtraConfContent.asset.js b/.suite-cli/cli/scripts/assets/krakendPartialsExtraConfContent.asset.js new file mode 100644 index 0000000..8abf65c --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendPartialsExtraConfContent.asset.js @@ -0,0 +1,56 @@ +module.exports = () =>` +{ + "security/cors": { + "allow_origins": [ + "*" + ], + "allow_methods": [ + "POST", + "GET" + ], + "allow_headers": [ + "Origin", + "Authorization", + "Content-Type" + ], + "expose_headers": [ + "Content-Length" + ], + "max_age": "12h" + }, + "telemetry/gelf": { + "address": "logstash:12201" + }, + "telemetry/logging": { + "level": "DEBUG", + "prefix": "[KRAKEND]", + "syslog": false, + "stdout": true + }, + "telemetry/metrics": { + "collection_time": "60s", + "listen_address": ":8090" + }, + "telemetry/influx": { + "address": "http://influxdb:8086", + "ttl": "25s", + "buffer_size": 0, + "username": "krakend-dev", + "password": "pas5w0rd" + }, + "telemetry/opencensus": { + "sample_rate": 100, + "reporting_period": 1, + "enabled_layers": { + "backend": true, + "router": true + }, + "exporters": { + "jaeger": { + "endpoint": "http://jaeger:14268/api/traces", + "serviceName": "krakend" + } + } + } +} +` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendPartialsInputHeadersContent.asset.js b/.suite-cli/cli/scripts/assets/krakendPartialsInputHeadersContent.asset.js new file mode 100644 index 0000000..b04a1f1 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendPartialsInputHeadersContent.asset.js @@ -0,0 +1,5 @@ +module.exports = () => ` +"input_headers": [ + "Content-Type", + "ClientId" + ]` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendPartialsRateLimitBackendContent.asset.js b/.suite-cli/cli/scripts/assets/krakendPartialsRateLimitBackendContent.asset.js new file mode 100644 index 0000000..b34e416 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendPartialsRateLimitBackendContent.asset.js @@ -0,0 +1,5 @@ +module.exports = () =>` +"qos/ratelimit/proxy": { + "max_rate": 100, + "capacity": 100 +}` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendSettingsDevEnvJsonContent.asset.js b/.suite-cli/cli/scripts/assets/krakendSettingsDevEnvJsonContent.asset.js new file mode 100644 index 0000000..969efc6 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendSettingsDevEnvJsonContent.asset.js @@ -0,0 +1,13 @@ +module.exports = () => ` +{ + "port": 8080, + "host_member": "http://member", + "host_logistics": "http://logistics", + "host_payment": "http://payment", + "host_order": "http://order", + "host_case": "http://case", + "host_channel": "http://channel", + "host_ticket": "http://ticket", + "security": "https://keycloak/auth/realms/default/protocol/openid-connect/certs", + "name": "DEV" +}` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendSettingsDevLoopExampleJsonContent.asset.js b/.suite-cli/cli/scripts/assets/krakendSettingsDevLoopExampleJsonContent.asset.js new file mode 100644 index 0000000..549267a --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendSettingsDevLoopExampleJsonContent.asset.js @@ -0,0 +1,8 @@ +module.exports = () => ` +{ + "dummy": [ + "/a", + "/b", + "/c" + ] +}` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendSettingsProdEnvJsonContent.asset.js b/.suite-cli/cli/scripts/assets/krakendSettingsProdEnvJsonContent.asset.js new file mode 100644 index 0000000..17e35a9 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendSettingsProdEnvJsonContent.asset.js @@ -0,0 +1,13 @@ +module.exports = () => ` +{ + "port": 8080, + "host_member": "http://member.production-host.com", + "host_logistics": "http://logistics.production-host.com", + "host_payment": "http://payment.production-host.com", + "host_order": "http://order.production-host.com", + "host_case": "http://case.production-host.com", + "host_channel": "http://channel.production-host.com", + "host_ticket": "http://ticket.production-host.com", + "security": "https://keycloak/auth/realms/default/protocol/openid-connect/certs", + "name": "PROD" +}` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendSettingsProdLoopExampleJsonContent.asset.js b/.suite-cli/cli/scripts/assets/krakendSettingsProdLoopExampleJsonContent.asset.js new file mode 100644 index 0000000..087aeaf --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendSettingsProdLoopExampleJsonContent.asset.js @@ -0,0 +1,8 @@ +module.exports = () => ` +{ + "dummy": [ + "/d", + "/e", + "/f" + ] +}` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/krakendTemplatesContent.asset.js b/.suite-cli/cli/scripts/assets/krakendTemplatesContent.asset.js new file mode 100644 index 0000000..1a91a56 --- /dev/null +++ b/.suite-cli/cli/scripts/assets/krakendTemplatesContent.asset.js @@ -0,0 +1,42 @@ +module.exports = () => ` +{ + "endpoint": "/admin/users", + {{ include "input_headers.tmpl"}}, + "backend": [ + { + "url_pattern": "/users", + "extra_config": { + {{ include "rate_limit_backend.tmpl"}} + }, + "host": ["{{ .env.host_case }}"] + } + ], + "extra_config": { + "auth/validator": { + "alg": "RS256", + "jwk_url": "{{ .env.security }}" + } + } + }, + { + "endpoint": "/admin/devices", + "output_encoding": "json", + "input_query_strings":["*"], + {{ include "input_headers.tmpl"}}, + "backend": [ + { + "url_pattern": "/devices", + "encoding": "json", + "extra_config": { + {{ include "rate_limit_backend.tmpl"}} + }, + "host": ["{{ .env.host_case }}"] + } + ], + "extra_config": { + "auth/validator": { + "alg": "RS256", + "jwk_url": "{{ .env.security }}" + } + } + }` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/logstashConfContent.asset.js b/.suite-cli/cli/scripts/assets/logstashConfContent.asset.js new file mode 100644 index 0000000..94220ac --- /dev/null +++ b/.suite-cli/cli/scripts/assets/logstashConfContent.asset.js @@ -0,0 +1,38 @@ +module.exports = () =>` +input { + gelf { + port => 12201 + } +} + +filter { + # Grok expression matches several formats (EE and CE): + #[GIN] 2022/09/09 - 08:33:51 | 200 | 732.753µs | 172.20.0.1 | GET "/sequential" + #[KRAKEND] 2022/09/09 - 08:35:25.813 [AccessLog] | 200 | 92.944122ms | 172.20.0.1 | GET /market/simple + #[KRAKEND][SERVICE: AsyncAgent][AMQP][async-agent-demo] Starting the consumer + grok { + match => { "message" => '(\[%{WORD}\] %{DATA}%{SPACE}-%{SPACE}%{DATA}%{SPACE}(\[AccessLog\]%{SPACE})?\| %{NUMBER:statusCode} \|%{SPACE}%{NUMBER:duration}(m|µ|n|u)?s%{SPACE}\|%{SPACE}%{DATA:ip}%{SPACE}\|%{SPACE}%{WORD:verb}%{SPACE}"?(?[^"]+)"?)?((\[KRAKEND\])?\[%{WORD:scope}(: (?[^\]]+)(\]\[%{DATA:sublevel1})?(\]\[%{DATA:sublevel2})?)?\] %{GREEDYDATA:msg})?'} + } + + if [host] and ![host][name] { + mutate { + rename => { "[host]" => "[host][name]" } + } + } + mutate { + convert => { + "statusCode" => "integer" + "duration" => "float" + } +} +} + +output { + elasticsearch { + hosts => ["http://elasticsearch:9200"] + } + stdout { + codec => rubydebug + } +} +` \ No newline at end of file diff --git a/.suite-cli/cli/scripts/assets/sreTreeContent.asset.js b/.suite-cli/cli/scripts/assets/sreTreeContent.asset.js new file mode 100644 index 0000000..4d5d71b --- /dev/null +++ b/.suite-cli/cli/scripts/assets/sreTreeContent.asset.js @@ -0,0 +1,32 @@ +module.exports = () => ( + [ + { + directory: 'elastic', + subdirectories: [] + }, + { + directory: 'grafana', + subdirectories: [ + 'dashboards', + 'datasources', + 'krakend' + ] + }, + { + directory: 'krakend', + subdirectories: [ + 'partials', + 'settings', + 'templates' + ] + }, + { + directory: 'logstash', + subdirectories: [] + }, + { + directory: 'logstash', + subdirectories: [] + } + ] +) \ No newline at end of file diff --git a/.suite-cli/cli/scripts/scripts.module.js b/.suite-cli/cli/scripts/scripts.module.js index c6c0308..eca9267 100644 --- a/.suite-cli/cli/scripts/scripts.module.js +++ b/.suite-cli/cli/scripts/scripts.module.js @@ -1531,10 +1531,61 @@ const generateK8sApp = ({ namespace, app_name, k8s_directory, projectName, servi }) ) } +const injectSREConfigs = ({ project_root }) => { + const directories = assets.sreTreeContent() + directories.forEach((dir) => { + for (const dir_ of dir.subdirectories) { + const current_dir = `${project_root}/docker/sre/${dir.directory}/${dir_}` + mkdirSync(current_dir, { recursive: true }); + switch (`${dir.directory}/${dir_}`) { + + case 'grafana/dashboards': + writeFile(join(current_dir, 'all.yaml'), assets.grafanaDashboardYamlContent()); + break; + + case 'grafana/datasources': + writeFile(join(current_dir, 'all.yaml'), assets.grafanaDatasourcesYamlContent()); + break; + + case 'grafana/krakend': + writeFile(join(current_dir, 'dashboard.json'), assets.grafanaKrakendDashboardJsonContent()); + break; + + case 'krakend/partials': + writeFile(join(current_dir, 'extra_config.tmpl'), assets.krakendPartialsExtraConfContent()); + writeFile(join(current_dir, 'input_headers.tmpl'), assets.krakendPartialsInputHeadersContent()); + writeFile(join(current_dir, 'rate_limit_backend.tmpl'), assets.krakendPartialsRateLimitBackendContent()); + break; + + case 'krakend/settings': + mkdirSync(join(current_dir, 'dev'), { recursive: true }); + mkdirSync(join(current_dir, 'prod'), { recursive: true }); + writeFile(join(current_dir, 'dev/env.json'), assets.krakendSettingsDevEnvJsonContent()); + writeFile(join(current_dir, 'prod/env.json'), assets.krakendSettingsProdEnvJsonContent()); + writeFile(join(current_dir, 'dev/loop_example.json'), assets.krakendSettingsDevLoopExampleJsonContent()); + writeFile(join(current_dir, 'prod/loop_example.json'), assets.krakendSettingsProdLoopExampleJsonContent()); + break; + + case 'krakend/templates': + writeFile(join(current_dir, 'sample_template.tmpl'), assets.krakendTemplatesContent()); + break; + } + + } + + }); + mkdirSync(`${project_root}/docker/sre/elastic`, { recursive: true }); + mkdirSync(`${project_root}/docker/sre/logstash`, { recursive: true }); + writeFile(join(`${project_root}/docker/sre/elastic`, 'dashboard.ndjson'), assets.elasticDashboardJsonContent()); + writeFile(join(`${project_root}/docker/sre/logstash`, 'logstash.conf'), assets.elasticDashboardJsonContent()); + writeFile(join(`${project_root}/docker/sre/krakend`, 'krakend-flexible-config.tmpl'), assets.krakenFlexibleConfigContent()); + writeFile(join(`${project_root}/docker/sre/krakend`, 'krakend.json'), assets.krakenJsonContent()); +} const scaffoldApp = ({ answers }) => { const { webserver, projectName, services } = readFileContent({ currentDir: cwd() }); const project_root = generateRootPath({ currentDir: cwd() }); const app_directory = join(project_root, 'docker/apps', answers.app_name); + const sre_directory = join(project_root, 'docker/sre'); const k8s_directory = join(project_root, `k8s/ns/${answers?.namespace || 'default'}`, answers.app_name); const webserver_dir = join(app_directory, webserver); @@ -1543,6 +1594,10 @@ const scaffoldApp = ({ answers }) => { if (existsSync(k8s_directory)) { rmSync(k8s_directory, { recursive: true }); + } + if (!existsSync(sre_directory)) { + injectSREConfigs({ project_root }); + } const ingress_directory = join(project_root, `k8s/ingress`); const broker_directory = join(project_root, `k8s/broker`); diff --git a/k8s/ns/default/app/combo.yaml b/k8s/ns/default/app/combo.yaml new file mode 100644 index 0000000..5a78e83 --- /dev/null +++ b/k8s/ns/default/app/combo.yaml @@ -0,0 +1,98 @@ + +# Kubernetes Configuration for app + +# Deployment for payment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: payment +spec: + selector: + matchLabels: + app: payment + template: + metadata: + labels: + app: payment + spec: + containers: + - name: payment + image: microservices-suite/payment:latest + resources: + limits: + memory: "128Mi" + cpu: "500m" + ports: + - containerPort: 9002 +--- + +# Service for payment (ClusterIP) +apiVersion: v1 +kind: Service +metadata: + name: payment +spec: + type: ClusterIP + selector: + app: payment + ports: + - port: 9002 + targetPort: 9002 + +--- + +# Service for payment (LoadBalancer) +apiVersion: v1 +kind: Service +metadata: + name: payment +spec: + type: LoadBalancer + selector: + app: payment + ports: + - port: 9002 + targetPort: 9002 + +--- + +# Service for payment (NodePort) +apiVersion: v1 +kind: Service +metadata: + name: payment +spec: + type: NodePort + selector: + app: payment + ports: + - port: 9002 + targetPort: 9002 + +--- + + +# Ingress for app +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: microservices-suite + labels: + name: microservices-suite +spec: + rules: + - host: app.com + http: + paths: + + - pathType: Prefix + path: "/" + backend: + service: + name: payment + port: + number: 9002 + +--- + +# Add more configurations below if needed diff --git a/k8s/ns/default/app/payment/configMap.yaml b/k8s/ns/default/app/payment/configMap.yaml new file mode 100644 index 0000000..f826802 --- /dev/null +++ b/k8s/ns/default/app/payment/configMap.yaml @@ -0,0 +1,10 @@ + +apiVersion: v1 +kind: ConfigMap +metadata: + name: payment +data: + PORT: '9002' + DATABASE_URL: mongodb://mongodb:27017/microservices-suite_payment_prod_db + EXCHANGE: 'microservices-suite/k8s/default/app' + AMQP_HOST: amqp://rabbitmq:5672 diff --git a/k8s/ns/default/app/payment/db/clusterIp.yaml b/k8s/ns/default/app/payment/db/clusterIp.yaml new file mode 100644 index 0000000..c2a866f --- /dev/null +++ b/k8s/ns/default/app/payment/db/clusterIp.yaml @@ -0,0 +1,12 @@ + +apiVersion: v1 +kind: Service +metadata: + name: mongodb +spec: + selector: + app: mongodb + ports: + - name: mongodb + port: 27017 + targetPort: 27017 diff --git a/k8s/ns/default/app/payment/db/deployment.yaml b/k8s/ns/default/app/payment/db/deployment.yaml new file mode 100644 index 0000000..ad4b625 --- /dev/null +++ b/k8s/ns/default/app/payment/db/deployment.yaml @@ -0,0 +1,23 @@ + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mongodb +spec: + selector: + matchLabels: + app: mongodb + template: + metadata: + labels: + app: mongodb + spec: + containers: + - name: mongodb + image: mongo + resources: + limits: + memory: "128Mi" + cpu: "500m" + ports: + - containerPort: 27017 diff --git a/k8s/ns/default/app/payment/db/loadBalancer.yaml b/k8s/ns/default/app/payment/db/loadBalancer.yaml new file mode 100644 index 0000000..a618991 --- /dev/null +++ b/k8s/ns/default/app/payment/db/loadBalancer.yaml @@ -0,0 +1,14 @@ + +apiVersion: v1 +kind: Service +metadata: + name: mongodb +spec: + type: LoadBalancer + selector: + app: mongodb + ports: + - name: mongodb + port: 27017 + targetPort: 27017 + nodePort: 30003 diff --git a/k8s/ns/default/app/payment/db/nodePort.yaml b/k8s/ns/default/app/payment/db/nodePort.yaml new file mode 100644 index 0000000..f5db46e --- /dev/null +++ b/k8s/ns/default/app/payment/db/nodePort.yaml @@ -0,0 +1,14 @@ + +apiVersion: v1 +kind: Service +metadata: + name: mongodb +spec: + type: NodePort + selector: + app: mongodb + ports: + - name: mongodb + port: 27017 + targetPort: 27017 + nodePort: 30004 diff --git a/k8s/ns/default/app/payment/secret.yaml b/k8s/ns/default/app/payment/secret.yaml new file mode 100644 index 0000000..8dd6d57 --- /dev/null +++ b/k8s/ns/default/app/payment/secret.yaml @@ -0,0 +1,8 @@ + +apiVersion: v1 +kind: Secret +metadata: + name: payment +type: Opaque +data: + password: somepassword diff --git a/k8s/ns/default/app/payment/server/clusterIp.yaml b/k8s/ns/default/app/payment/server/clusterIp.yaml new file mode 100644 index 0000000..7d81aa8 --- /dev/null +++ b/k8s/ns/default/app/payment/server/clusterIp.yaml @@ -0,0 +1,12 @@ + +apiVersion: v1 +kind: Service +metadata: + name: payment +spec: + selector: + app: payment + ports: + - name: payment + port: 9002 + targetPort: 9002 diff --git a/k8s/ns/default/app/payment/server/deployment.yaml b/k8s/ns/default/app/payment/server/deployment.yaml new file mode 100644 index 0000000..a0d0bd3 --- /dev/null +++ b/k8s/ns/default/app/payment/server/deployment.yaml @@ -0,0 +1,23 @@ + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: payment +spec: + selector: + matchLabels: + app: payment + template: + metadata: + labels: + app: payment + spec: + containers: + - name: payment + image: microservices-suite/payment:latest + resources: + limits: + memory: "128Mi" + cpu: "500m" + ports: + - containerPort: 9002 diff --git a/k8s/ns/default/app/payment/server/loadBalancer.yaml b/k8s/ns/default/app/payment/server/loadBalancer.yaml new file mode 100644 index 0000000..791c2b7 --- /dev/null +++ b/k8s/ns/default/app/payment/server/loadBalancer.yaml @@ -0,0 +1,14 @@ + +apiVersion: v1 +kind: Service +metadata: + name: payment +spec: + type: LoadBalancer + selector: + app: payment + ports: + - name: payment + port: 9002 + targetPort: 9002 + nodePort: 30013 diff --git a/k8s/ns/default/app/payment/server/nodePort.yaml b/k8s/ns/default/app/payment/server/nodePort.yaml new file mode 100644 index 0000000..24d4e9e --- /dev/null +++ b/k8s/ns/default/app/payment/server/nodePort.yaml @@ -0,0 +1,14 @@ + +apiVersion: v1 +kind: Service +metadata: + name: payment +spec: + type: NodePort + selector: + app: payment + ports: + - name: payment + port: 9002 + targetPort: 9002 + nodePort: 30014 diff --git a/yarn.lock b/yarn.lock index e479fbf..f2e558a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -62,7 +62,7 @@ lodash "^4.17.21" "@microservices-suite/cli@file:/Users/nathan3/Desktop/PracticeEnv/node-microservices-suite/.suite-cli/cli": - version "3.0.1" + version "3.1.2" resolved "file:.suite-cli/cli" dependencies: chalk "4.1.2"