From 0e6453c62fec7aac711ea247b797ba6a374806db Mon Sep 17 00:00:00 2001 From: "al_hardy@live.com.au" Date: Sat, 22 Apr 2017 21:34:31 +1000 Subject: [PATCH 01/35] appveyor settings sync --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index ce4e07e..dd82292 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -11,7 +11,7 @@ environment: GitOwner: secure: n6W5JZ7Q/xfZC7b2k3+ORA== GitPassword: - secure: G1CZ0EzJTYjH60jzYYaitkieeslue7VdeeVW4vYS+msXQ9gSCf7KstBKEbXdI+W2 + secure: fHangGPAk14u3V1eP3kg5EdekQoKdOsKC0F/A1mvh9IODHCZ92FGjfWb0U2aQ8bu build_script: - ps: .\build.ps1 -Target AppVeyor test: off From 2746e351092c5939fcc5775609507ec75652afe6 Mon Sep 17 00:00:00 2001 From: Allan Hardy Date: Sun, 30 Apr 2017 14:09:28 +1000 Subject: [PATCH 02/35] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eebaf91..be978e5 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ The repo contains InfluxDB extension packages to [App Metrics](https://github.co ![Grafana/InfluxDB Generic Web Dashboard Demo](https://github.com/alhardy/AppMetrics.DocFx/blob/master/images/generic_grafana_dashboard_demo.gif) -> Grab the dashboard [here](https://github.com/alhardy/AppMetrics.Extensions.InfluxDB/blob/dev/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json) +> Grab the dashboard [here](https://grafana.com/dashboards/2125) #### Grafana/InfluxDB OAuth2 Client Monitoring on a Web API ![Grafana/InfluxDB Generic OAuth2 Web Dashboard Demo](https://github.com/alhardy/AppMetrics.DocFx/blob/master/images/generic_grafana_oauth2_dashboard_demo.gif) -> Grab the dashboard [here](https://github.com/alhardy/AppMetrics.Extensions.InfluxDB/blob/dev/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWebOAuth2.json) +> Grab the dashboard [here](https://grafana.com/dashboards/2137) ### Grafana/InfluxDB Web Application Setup From 45159c98316c6bf09c6389b54647c14bf9334f25 Mon Sep 17 00:00:00 2001 From: Allan Hardy Date: Sun, 30 Apr 2017 14:22:24 +1000 Subject: [PATCH 03/35] Update README.md --- README.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index be978e5..f81cc6f 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,20 @@ -# App Metrics InfluxDB Extensions +# App Metrics InfluxDB Extensions App Metrics +[![Official Site](https://img.shields.io/badge/site-appmetrics-blue.svg?style=flat-square)](http://app-metrics.io/reporting/influxdb.html) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](https://opensource.org/licenses/Apache-2.0) -[![Official Site](https://img.shields.io/badge/site-appmetrics-blue.svg)](https://alhardy.github.io/app-metrics-docs/getting-started/intro.html) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Coverage Status](https://coveralls.io/repos/github/alhardy/AppMetrics.Extensions.InfluxDB/badge.svg?branch=master)](https://coveralls.io/github/alhardy/AppMetrics.Extensions.InfluxDB?branch=master) +## What is it? -|AppVeyor|Travis| -|:--------:|:--------:| -|[![Build status](https://ci.appveyor.com/api/projects/status/cdda6bfu3bput7h3?svg=true)](https://ci.appveyor.com/project/alhardy/appmetrics-extensions-influxdb/branch/master)|[![Build status](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB.svg?branch=master)](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB?branch=master)| +The repo contains InfluxDB extension packages to [App Metrics](https://github.com/alhardy/AppMetrics). -|Package|Dev Release|Pre-Release|Latest Release| -|------|:--------:|:--------:|:--------:| -|App.Metrics.Extensions.Reporting.InfluxDB|[![MyGet Status](https://img.shields.io/myget/alhardy/v/App.Metrics.Extensions.Reporting.InfluxDB.svg)](https://www.myget.org/feed/alhardy/package/nuget/App.Metrics.Extensions.Reporting.InfluxDB)|[![NuGet Status](https://img.shields.io/nuget/vpre/App.Metrics.Extensions.Reporting.InfluxDB.svg)](https://www.nuget.org/packages/App.Metrics.Extensions.Reporting.InfluxDB/)|[![NuGet Status](https://img.shields.io/nuget/v/App.Metrics.Extensions.Reporting.InfluxDB.svg)](https://www.nuget.org/packages/App.Metrics.Extensions.Reporting.InfluxDB/) +## Latest Builds, Packages & Repo Stats -## What is it? +|Branch|AppVeyor|Travis|Coverage| +|------|:--------:|:--------:|:--------:| +|dev|[![AppVeyor](https://img.shields.io/appveyor/ci/alhardy/appmetrics-extensions-influxdb/dev.svg?style=flat-square&label=appveyor%20build)](https://ci.appveyor.com/project/alhardy/appmetrics-extensions-influxdb/branch/dev)|[![Travis](https://img.shields.io/travis/alhardy/AppMetrics.Extensions.InfluxDB/dev.svg?style=flat-square&label=travis%20build)](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB)|[![Coveralls](https://img.shields.io/coveralls/alhardy/AppMetrics/dev.svg?style=flat-square)](https://coveralls.io/github/alhardy/AppMetrics.Extensions.InfluxDB?branch=dev) +|master|[![AppVeyor](https://img.shields.io/appveyor/ci/alhardy/appmetrics-extensions-influxdb/master.svg?style=flat-square&label=appveyor%20build)](https://ci.appveyor.com/project/alhardy/appmetrics-extensions-influxdb/branch/master)| [![Travis](https://img.shields.io/travis/alhardy/AppMetrics.Extensions.InfluxDB/master.svg?style=flat-square&label=travis%20build)](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB)| [![Coveralls](https://img.shields.io/coveralls/alhardy/AppMetrics.Extensions.InfluxDB/master.svg?style=flat-square)](https://coveralls.io/github/alhardy/AppMetrics.Extensions.InfluxDB?branch=master)| -The repo contains InfluxDB extension packages to [App Metrics](https://github.com/alhardy/AppMetrics). +|Package|Dev Release|PreRelease|Latest Release| +|------|:--------:|:--------:|:--------:| +|App.Metrics.Extensions.Reporting.InfluxDB|[![MyGet Status](https://img.shields.io/myget/alhardy/v/App.Metrics.Extensions.Reporting.InfluxDB.svg?style=flat-square)](https://www.myget.org/feed/alhardy/package/nuget/App.Metrics.Extensions.Reporting.InfluxDB)|[![NuGet Status](https://img.shields.io/nuget/vpre/App.Metrics.Extensions.Reporting.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Extensions.Reporting.InfluxDB/)|[![NuGet Status](https://img.shields.io/nuget/v/App.Metrics.Extensions.Reporting.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Extensions.Reporting.InfluxDB/) #### Grafana/InfluxDB Web Monitoring From a4c7de4da4162d605cf94f115eaed1f6dffc0826 Mon Sep 17 00:00:00 2001 From: Allan Hardy Date: Sun, 30 Apr 2017 14:30:34 +1000 Subject: [PATCH 04/35] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f81cc6f..b1eddb6 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The repo contains InfluxDB extension packages to [App Metrics](https://github.co |Branch|AppVeyor|Travis|Coverage| |------|:--------:|:--------:|:--------:| -|dev|[![AppVeyor](https://img.shields.io/appveyor/ci/alhardy/appmetrics-extensions-influxdb/dev.svg?style=flat-square&label=appveyor%20build)](https://ci.appveyor.com/project/alhardy/appmetrics-extensions-influxdb/branch/dev)|[![Travis](https://img.shields.io/travis/alhardy/AppMetrics.Extensions.InfluxDB/dev.svg?style=flat-square&label=travis%20build)](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB)|[![Coveralls](https://img.shields.io/coveralls/alhardy/AppMetrics/dev.svg?style=flat-square)](https://coveralls.io/github/alhardy/AppMetrics.Extensions.InfluxDB?branch=dev) +|dev|[![AppVeyor](https://img.shields.io/appveyor/ci/alhardy/appmetrics-extensions-influxdb/dev.svg?style=flat-square&label=appveyor%20build)](https://ci.appveyor.com/project/alhardy/appmetrics-extensions-influxdb/branch/dev)|[![Travis](https://img.shields.io/travis/alhardy/AppMetrics.Extensions.InfluxDB/dev.svg?style=flat-square&label=travis%20build)](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB)|[![Coveralls](https://img.shields.io/coveralls/alhardy/AppMetrics.Extensions.InfluxDB/dev.svg?style=flat-square)](https://coveralls.io/github/alhardy/AppMetrics.Extensions.InfluxDB?branch=dev) |master|[![AppVeyor](https://img.shields.io/appveyor/ci/alhardy/appmetrics-extensions-influxdb/master.svg?style=flat-square&label=appveyor%20build)](https://ci.appveyor.com/project/alhardy/appmetrics-extensions-influxdb/branch/master)| [![Travis](https://img.shields.io/travis/alhardy/AppMetrics.Extensions.InfluxDB/master.svg?style=flat-square&label=travis%20build)](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB)| [![Coveralls](https://img.shields.io/coveralls/alhardy/AppMetrics.Extensions.InfluxDB/master.svg?style=flat-square)](https://coveralls.io/github/alhardy/AppMetrics.Extensions.InfluxDB?branch=master)| |Package|Dev Release|PreRelease|Latest Release| From 3aa8d0963bb612f80326d9f5953499922d5c525f Mon Sep 17 00:00:00 2001 From: alhardy Date: Mon, 1 May 2017 21:34:49 +1000 Subject: [PATCH 05/35] build, package details update and minor updates in sandbox project --- build.cake | 2 +- .../App.Metrics.InfluxDB.Sandbox.csproj | 2 +- sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs | 7 ++++++- .../App.Metrics.Extensions.Reporting.InfluxDB.csproj | 6 +++--- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/build.cake b/build.cake index ad36274..a021f7c 100644 --- a/build.cake +++ b/build.cake @@ -20,7 +20,7 @@ var coverWith = HasArgument("CoverWith") ? Argument("CoverWith") : EnvironmentVariable("CoverWith") != null ? EnvironmentVariable("CoverWith") : "OpenCover"; // None, DotCover, OpenCover var skipReSharperCodeInspect = Argument("SkipCodeInspect", false) || !IsRunningOnWindows(); var preReleaseSuffix = HasArgument("PreReleaseSuffix") ? Argument("PreReleaseSuffix") : - (AppVeyor.IsRunningOnAppVeyor && EnvironmentVariable("PreReleaseSuffix") == null) ? null : + (AppVeyor.IsRunningOnAppVeyor && EnvironmentVariable("PreReleaseSuffix") == null || AppVeyor.Environment.Repository.Tag.IsTag) ? null : EnvironmentVariable("PreReleaseSuffix") != null ? EnvironmentVariable("PreReleaseSuffix") : "ci"; var buildNumber = HasArgument("BuildNumber") ? Argument("BuildNumber") : AppVeyor.IsRunningOnAppVeyor ? AppVeyor.Environment.Build.Number : diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index 909b4f4..c234e1b 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,7 +9,7 @@ - + diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs index 7254d2a..5869a70 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs @@ -74,7 +74,12 @@ public void ConfigureServices(IServiceCollection services) options => { options.WithGlobalTags( - (globalTags, info) => { globalTags.Add("app", info.EntryAssemblyName); }); + (globalTags, info) => + { + globalTags.Add("app", info.EntryAssemblyName); + globalTags.Add("server", info.MachineName); + globalTags.Add("version", info.EntryAssemblyVersion); + }); }). AddJsonSerialization(). AddReporting( diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 486d608..0c8d103 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -14,9 +14,9 @@ App.Metrics.Extensions.Reporting.InfluxDB App.Metrics.Extensions.Reporting.InfluxDB Metrics;Monitoring;Instrumentation;Reporting;InfluxDB - https://alhardy.github.io/app-metrics-docs/logo.png - https://alhardy.github.io/app-metrics-docs/getting-started/reporting/index.html#influxdb-reporter - https://github.com/alhardy/AppMetrics.Reporting/blob/master/LICENSE + http://app-metrics.io/logo.png + http://app-metrics.io/reporting/influxdb.html + https://github.com/alhardy/AppMetrics.Extensions.InfluxDB/blob/master/LICENSE git git://github.com/alhardy/AppMetrics.Extensions.InfluxDB false From fdb6ff9806cbc1d6f5ad186348bd4c822c177fa8 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sat, 6 May 2017 22:54:56 +1000 Subject: [PATCH 06/35] updating readme and updating app metrics pacakges in sandbox project --- README.md | 6 ++++-- .../App.Metrics.InfluxDB.Sandbox.csproj | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b1eddb6..b999b19 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,13 @@ The repo contains InfluxDB extension packages to [App Metrics](https://github.co - Download and install [InfluxDB](https://docs.influxdata.com/influxdb/v1.2/introduction/installation/). *Runs well on Windows using* `Bash on Windows on Ubuntu` - Create a new [InfluxDB Database](https://docs.influxdata.com/influxdb/v1.2/introduction/getting_started/). *Keep note of this for configuring the InfluxDB reporter in your web application and configuring the InfluxDB Datasource in Grafana* -- Download and install [Grafana](https://grafana.com/grafana/download), then create a new [InfluxDB Datasource](http://docs.grafana.org/features/datasources/influxdb/) pointing the the Database just created and import App.Metrics [web dashboard](https://github.com/alhardy/AppMetrics.Extensions.InfluxDB/blob/dev/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json) +- Download and install [Grafana](https://grafana.com/grafana/download), then create a new [InfluxDB Datasource](http://docs.grafana.org/features/datasources/influxdb/) pointing the the Database just created and [import](http://docs.grafana.org/reference/export_import/#importing-a-dashboard) App.Metrics [web dashboard](https://grafana.com/dashboards/2125) - Drop in the `App.Metrics.Extensions.Mvc` and `App.Metrics.Extensions.Reporting.InfluxDB` nuget packages into your web application. -- Add [App.Metrics configuration](https://alhardy.github.io/app-metrics-docs/getting-started/fundamentals/middleware-configuration.html) to the `Startup.cs` of your web application, including the [InfluxDB reporter configuration](https://alhardy.github.io/app-metrics-docs/getting-started/reporting/index.html#influxdb-reporter). *You might want to check out the [Sandbox](https://github.com/alhardy/AppMetrics/tree/1.0.0/sandbox/App.Metrics.Sandbox) or [Sample](https://github.com/alhardy/AppMetrics.Samples) projects if you get stuck* +- Add [App.Metrics configuration](https://alhardy.github.io/app-metrics-docs/getting-started/fundamentals/middleware-configuration.html) to the `Startup.cs` of your web application, including the [InfluxDB reporter configuration](http://app-metrics.io/reporting/influxdb.html). *You might want to check out the [Sandbox](https://github.com/alhardy/AppMetrics.Extensions.InfluxDB/tree/master/sandbox/App.Metrics.InfluxDB.Sandbox) project if you get stuck* - Run your app and Grafana at visit `http://localhost:3000` +**There is also a more detailed step-by-step guide [here](https://al-hardy.blog/2017/04/28/asp-net-core-monitoring-with-influxdb-grafana/)** + ## How to build [AppVeyor](https://ci.appveyor.com/project/alhardy/appmetrics-extensions-influxdb/branch/master) and [Travis CI](https://travis-ci.org/alhardy/AppMetrics.Extensions.InfluxDB) builds are triggered on commits and PRs to `dev` and `master` branches. diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index c234e1b..4edf47c 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,9 +9,9 @@ - + - + From 50dc2a99a363e8ae4124fda9657dcafb6086ef77 Mon Sep 17 00:00:00 2001 From: Vinh Vo Date: Wed, 17 May 2017 11:11:41 +0700 Subject: [PATCH 07/35] log with exception --- .../Client/DefaultLineProtocolClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs index 2a16bd9..2b5ab55 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs @@ -98,7 +98,7 @@ public async Task WriteAsync( catch (Exception ex) { Interlocked.Increment(ref _failureAttempts); - _logger.LogError(LoggingEvents.InfluxDbWriteError, "Failed to write to InfluxDB", ex); + _logger.LogError(LoggingEvents.InfluxDbWriteError, ex, "Failed to write to InfluxDB"); return new LineProtocolWriteResult(false, ex.ToString()); } } @@ -153,4 +153,4 @@ private bool NeedToBackoff() return false; } } -} \ No newline at end of file +} From 3d0889c1f168fa9937545cd378828a4655758041 Mon Sep 17 00:00:00 2001 From: alhardy Date: Fri, 19 May 2017 23:47:11 +1000 Subject: [PATCH 08/35] #7 updating grafana web dashboard to include exception tracking - requires app metrics 1.2.0 --- ...p.Metrics.Sandbox-InfluxDB-GenericWeb.json | 5257 +++++++++-------- 1 file changed, 2756 insertions(+), 2501 deletions(-) diff --git a/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json b/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json index e726f1f..d73cd5a 100644 --- a/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json +++ b/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json @@ -1,2589 +1,2844 @@ { - "id": 16, - "title": "App.Metrics.Sandbox - InfluxDB - Generic Web", - "tags": [ - "influxdb" - ], - "style": "dark", - "timezone": "browser", - "editable": true, - "sharedCrosshair": true, - "hideControls": false, - "time": { - "from": "now-15m", - "to": "now" + "__inputs": [], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "4.2.0" }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] + { + "type": "panel", + "id": "grafana-piechart-panel", + "name": "Pie Chart", + "version": "1.1.4" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" }, - "templating": { - "list": [ + { + "type": "panel", + "id": "singlestat", + "name": "Singlestat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 1, + "hideControls": false, + "id": null, + "links": [], + "refresh": "5s", + "rows": [ + { + "collapse": true, + "height": "250", + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "format": "rpm", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 8, + "interval": "", + "links": [], + "mappingType": 1, + "mappingTypes": [ { - "allValue": null, - "current": { - "text": "stage", - "value": "stage" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "environment", - "options": [], - "query": "SHOW TAG VALUES WITH KEY = \"env\"", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": null, - "tagsQuery": null, - "type": "query" + "name": "value to text", + "value": 1 }, { - "allValue": null, - "current": { - "value": [ - "App.Metrics.Sandbox" + "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" + } + ], + "span": 2, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" ], - "text": "App.Metrics.Sandbox" + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "application", - "options": [], - "query": "SHOW TAG VALUES WITH KEY = \"app\"", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": null, - "tagsQuery": null, - "type": "query" + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + } + ] + } + ], + "thresholds": "", + "title": "Throughput", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "$datasource", + "decimals": 4, + "editable": true, + "error": false, + "format": "percent", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 6, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 }, { - "current": { - "text": "AppMetricsSandbox", - "value": "AppMetricsSandbox" + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "", + "text": "", + "to": "" + } + ], + "span": 2, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "application.httprequests__one_minute_error_percentage_rate", + "policy": "default", + "query": "SELECT \"value\" FROM \"application.httprequests__percentage_error_requests\" WHERE $timeFilter", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [], - "query": "influxdb", - "refresh": 1, - "regex": "", - "type": "datasource" + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "thresholds": "", + "title": "Error %", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "0%", + "value": "null" + } + ], + "valueName": "current" + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 2, + "id": 13, + "interval": "$summarize", + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__active", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Active Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "30s", - "value": "30s" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": { + "application.httprequests__apdex.last": "#6ED0E0" + }, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "", + "id": 7, + "interval": "$summarize", + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 3, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, - "hide": 0, - "label": null, - "name": "summarize", - "options": [ - { - "text": "5s", - "value": "5s", - "selected": false - }, - { - "text": "10s", - "value": "10s", - "selected": false - }, - { - "text": "30s", - "value": "30s", - "selected": true - }, - { - "text": "1m", - "value": "1m", - "selected": false - }, - { - "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", - "selected": false - } - ], - "query": "5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d", - "refresh": 2, - "type": "interval" + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__apdex", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "score" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + } + ] } - ] - }, - "annotations": { - "list": [] - }, - "refresh": "5s", - "schemaVersion": 13, - "version": 50, - "links": [], - "gnetId": null, - "rows": [ + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "lt", + "value": 0.5 + }, + { + "colorMode": "warning", + "fill": true, + "line": true, + "op": "gt", + "value": 0.5 + }, + { + "colorMode": "ok", + "fill": true, + "line": true, + "op": "gt", + "value": 0.75 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Apdex score", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "apdex", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, { - "title": "Overview", - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 1, + "interval": "$summarize", + "legend": { + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" ], - "datasource": "$datasource", - "editable": true, - "error": false, - "format": "rpm", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "id": 8, - "interval": "", - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "1 min rate" ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } + "type": "alias" + } + ], + [ + { + "params": [ + "rate5m" ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "5 min rate" ], - "thresholds": "", - "title": "Throughput", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } + "type": "alias" + } + ], + [ + { + "params": [ + "rate15m" ], - "valueName": "current" + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "15 min rate" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Throughput", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "rpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 2, + "interval": "$summarize", + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th Percentile" ], - "datasource": "$datasource", - "decimals": 4, - "editable": true, - "error": false, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "id": 6, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } + "type": "alias" + } + ], + [ + { + "params": [ + "p98" ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "", - "text": "", - "to": "" - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "98th Percentile" ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [], - "measurement": "application.httprequests__one_minute_error_percentage_rate", - "policy": "default", - "query": "SELECT \"value\" FROM \"application.httprequests__percentage_error_requests\" WHERE $timeFilter", - "rawQuery": false, - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } + "type": "alias" + } + ], + [ + { + "params": [ + "p99" ], - "thresholds": "", - "title": "Error %", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0%", - "value": "null" - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "99th Percentile" ], - "valueName": "current" + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" }, { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 2, - "id": 13, - "interval": "$summarize", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__active", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Response Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "", + "id": 9, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__one_minute_error_percentage_rate", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Active Requests", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Error Rate %", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "decimals": 2, + "editable": true, + "error": false, + "fill": 1, + "height": "250px", + "id": 3, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, { - "aliasColors": { - "application.httprequests__apdex.last": "#6ED0E0" - }, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "", - "id": 7, - "interval": "$summarize", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 3, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__apdex", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "score" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__error_rate", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "lt", - "value": 0.5 - }, - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 0.5 - }, - { - "colorMode": "ok", - "fill": true, - "line": true, - "op": "gt", - "value": 0.75 - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "1min rate" ], - "timeFrom": null, - "timeShift": null, - "title": "Apdex score", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "apdex", - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] + "type": "alias" + } + ], + [ + { + "params": [ + "rate5m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "5min rate" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "rate15m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "15min rate" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" }, { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 1, - "interval": "$summarize", - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "1 min rate" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate5m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "5 min rate" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate15m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "15 min rate" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Error Rate", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "rpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": {}, + "cacheTimeout": null, + "combine": { + "label": "Others", + "threshold": 0 + }, + "datasource": "$datasource", + "editable": true, + "error": false, + "fontSize": "80%", + "format": "percent", + "height": "250px", + "id": 4, + "interval": "", + "legend": { + "percentage": true, + "show": true, + "sort": null, + "sortDesc": null, + "values": true + }, + "legendType": "Right side", + "links": [], + "maxDataPoints": 3, + "nullPointMode": "connected", + "pieType": "pie", + "span": 5, + "strokeWidth": 1, + "targets": [ + { + "alias": "$tag_http_status_code", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "http_status_code" + ], + "type": "tag" + } + ], + "measurement": "application.httprequests__errors", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Throughput", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "rpm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" }, { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 2, - "interval": "$summarize", - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th Percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p98" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "98th Percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p99" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "99th Percentile" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Response Time", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + } + ] + } + ], + "title": "Errors", + "type": "grafana-piechart-panel", + "valueName": "current" + }, + { + "columns": [ + { + "text": "Total", + "value": "total" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": true, + "fontSize": "100%", + "id": 24, + "interval": "", + "links": [], + "pageSize": 20, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 7, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 0, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "none" + } + ], + "targets": [ + { + "alias": "$tag_exception", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "", - "id": 9, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": false, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__one_minute_error_percentage_rate", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } + "params": [ + "exception" + ], + "type": "tag" + } + ], + "measurement": "application.httprequests__exceptions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Error Rate %", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" }, { - "aliasColors": {}, - "cacheTimeout": null, - "combine": { - "label": "Others", - "threshold": 0 - }, - "datasource": "$datasource", - "editable": true, - "error": false, - "fontSize": "80%", - "format": "percent", - "height": "250px", - "id": 4, - "interval": "", - "legend": { - "percentage": true, - "show": true, - "sort": null, - "sortDesc": null, - "values": true - }, - "legendType": "Right side", - "links": [], - "maxDataPoints": 3, - "nullPointMode": "connected", - "pieType": "pie", - "span": 3, - "strokeWidth": 1, - "targets": [ - { - "alias": "$tag_http_status_code", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "http_status_code" - ], - "type": "tag" - } - ], - "measurement": "application.httprequests__errors", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "title": "Errors", - "type": "grafana-piechart-panel", - "valueName": "current" + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "title": "Uncaught Exceptions Thrown", + "transform": "timeseries_aggregations", + "type": "table" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Overview", + "titleSize": "h6" + }, + { + "collapse": true, + "height": "300", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 16, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" }, { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": 2, - "editable": true, - "error": false, - "fill": 1, - "height": "250px", - "id": 3, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 5, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__error_rate", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "1min rate" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate5m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "5min rate" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate15m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "15min rate" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Error Rate", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "rpm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" } - ], - "showTitle": true, - "titleSize": "h6", - "height": "250", - "repeat": null, - "repeatRowId": null, - "repeatIteration": null, - "collapse": true + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Throughput / Endpoint", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "transparent": false, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "rpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] }, { - "title": "Endpoints", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 16, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Throughput / Endpoint", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "rpm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 17, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 17, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th Percentile" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Response Time / Endpoint", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + "params": [ + "route" + ], + "type": "tag" }, { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "fontSize": "100%", - "id": 10, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "span": 4, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "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" - } + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" ], - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th Percentile" ], - "title": "Response Times / Endpoint", - "transform": "timeseries_aggregations", - "type": "table" + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" }, { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "fontSize": "100%", - "id": 11, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": null, - "desc": false - }, - "span": 4, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 0, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "percent" - } - ], - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__one_minute_error_percentage_rate_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "title": "Error Request Percentage / Endpoint", - "transform": "timeseries_aggregations", - "type": "table" + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Response Time / Endpoint", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 10, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "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_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" }, { - "columns": [ - { - "text": "Current", - "value": "current" - } + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" ], - "datasource": "$datasource", - "editable": true, - "error": false, - "fontSize": "100%", - "id": 12, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": null, - "desc": false - }, - "span": 4, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "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": "rpm" - } + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "title": "Response Times / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 12, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "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": "rpm" + } + ], + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" ], - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "title": "Throughput / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 11, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": null, + "desc": false + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 0, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "percent" + } + ], + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__one_minute_error_percentage_rate_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" ], - "title": "Throughput / Endpoint", - "transform": "timeseries_aggregations", - "type": "table" + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" } - ], - "showTitle": true, - "titleSize": "h6", - "height": "300", - "repeat": null, - "repeatRowId": null, - "repeatIteration": null, - "collapse": true + ] + } + ], + "title": "Error Request Percentage / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" }, { - "title": "Health", - "panels": [ - { - "columns": [ - { - "text": "Current", - "value": "current" - } + "columns": [ + { + "text": "Total", + "value": "total" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 25, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 0, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "none" + } + ], + "targets": [ + { + "alias": "$tag_route [$tag_exception]", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "exception" + ], + "type": "tag" + } + ], + "measurement": "application.httprequests__exceptions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" ], - "datasource": "$datasource", - "editable": true, - "error": false, - "fontSize": "100%", - "hideTimeOverride": true, - "id": 22, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "span": 9, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "colorMode": "row", - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 1, - "pattern": "/.*/", - "thresholds": [ - "0.5", - "1" - ], - "type": "number", - "unit": "short" - } + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "title": "Uncaught Exceptions Thrown / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Endpoints", + "titleSize": "h6" + }, + { + "collapse": true, + "height": "250", + "panels": [ + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "hideTimeOverride": true, + "id": 22, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "span": 9, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": "row", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 1, + "pattern": "/.*/", + "thresholds": [ + "0.5", + "1" + ], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "alias": "$tag_health_check_name", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "health_check_name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.health__results", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" ], - "targets": [ - { - "alias": "$tag_health_check_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "health_check_name" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.health__results", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "timeFrom": null, + "title": "Results", + "transform": "timeseries_aggregations", + "transparent": true, + "type": "table" + }, + { + "cacheTimeout": null, + "colorBackground": true, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "hideTimeOverride": true, + "id": 19, + "interval": null, + "links": [ + { + "type": "dashboard" + } + ], + "mappingType": 2, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "0", + "text": "Unhealthy", + "to": "0.49" + }, + { + "from": "0.5", + "text": "Degraded", + "to": "0.9" + }, + { + "from": "1.0", + "text": "Healthy", + "to": "2.0" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.health__score", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" ], - "timeFrom": "$health_duration", - "title": "Results", - "transform": "timeseries_aggregations", - "transparent": true, - "type": "table", - "interval": "" + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + } + ] + } + ], + "thresholds": "0.5,1", + "timeFrom": null, + "title": "", + "transparent": true, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "Unhealthy", + "value": "0" + }, + { + "op": "=", + "text": "Degraded", + "value": "0.5" + }, + { + "op": "=", + "text": "Healthy", + "value": "1.0" + } + ], + "valueName": "current" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Health", + "titleSize": "h6" + }, + { + "collapse": true, + "height": "300", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "id": 14, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, { - "cacheTimeout": null, - "colorBackground": true, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__post_size", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" ], - "datasource": "$datasource", - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "hideTimeOverride": true, - "id": 19, - "interval": null, - "links": [ - { - "type": "dashboard" - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th percentile" ], - "mappingType": 2, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } + "type": "alias" + } + ], + [ + { + "params": [ + "p98" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "98th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p99" ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "0", - "text": "Unhealthy", - "to": "0.49" - }, - { - "from": "0.5", - "text": "Degraded", - "to": "0.9" - }, - { - "from": "1.0", - "text": "Healthy", - "to": "2.0" - } + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "99th percentile" ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.health__score", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } + "type": "alias" + } + ], + [ + { + "params": [ + "last" ], - "thresholds": "0.5,1", - "timeFrom": "$health_duration", - "title": "", - "transparent": true, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "Unhealthy", - "value": "0" - }, - { - "op": "=", - "text": "Degraded", - "value": "0.5" - }, - { - "op": "=", - "text": "Healthy", - "value": "1.0" - } + "type": "field" + }, + { + "params": [], + "type": "median" + }, + { + "params": [ + "median" ], - "valueName": "current" + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" } - ], - "showTitle": true, - "titleSize": "h6", - "height": "250", - "repeat": null, - "repeatRowId": null, - "repeatIteration": null, - "collapse": false + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Post Request Size", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "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 + } + ] }, { - "title": "PUT & POST Request Size", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "id": 14, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__post_size", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p98" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "98th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p99" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "99th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "last" - ], - "type": "field" - }, - { - "params": [], - "type": "median" - }, - { - "params": [ - "median" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Post Request Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "id": 15, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "id": 15, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__put_size", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p98" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "98th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p99" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "99th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "median" - ], - "type": "field" - }, - { - "params": [], - "type": "median" - }, - { - "params": [ - "median" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__put_size", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Put Request Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p98" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "98th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p99" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "99th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "median" + ], + "type": "field" + }, + { + "params": [], + "type": "median" + }, + { + "params": [ + "median" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" } - ], - "showTitle": true, - "titleSize": "h6", - "height": "300", - "repeat": null, - "repeatRowId": null, - "repeatIteration": null, - "collapse": true + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Put Request Size", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "PUT & POST Request Size", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "influxdb" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "$datasource", + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "environment", + "options": [], + "query": "SHOW TAG VALUES WITH KEY = \"env\"", + "refresh": 1, + "regex": "", + "sort": 1, + "tagValuesQuery": null, + "tags": [], + "tagsQuery": null, + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "$datasource", + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "application", + "options": [], + "query": "SHOW TAG VALUES WITH KEY = \"app\"", + "refresh": 1, + "regex": "", + "sort": 1, + "tagValuesQuery": null, + "tags": [], + "tagsQuery": null, + "type": "query", + "useTags": false + }, + { + "current": { + "text": "AppMetricsSandbox", + "value": "AppMetricsSandbox" + }, + "hide": 0, + "label": null, + "name": "datasource", + "options": [], + "query": "influxdb", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "auto": false, + "auto_count": 30, + "auto_min": "10s", + "current": { + "text": "5s", + "value": "5s" + }, + "hide": 0, + "label": null, + "name": "summarize", + "options": [ + { + "selected": true, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "10s", + "value": "10s" + }, + { + "selected": false, + "text": "30s", + "value": "30s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "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": "5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d", + "refresh": 2, + "type": "interval" + }, + { + "allValue": null, + "current": {}, + "datasource": "$datasource", + "hide": 0, + "includeAll": true, + "label": null, + "multi": true, + "name": "server", + "options": [], + "query": "SHOW TAG VALUES WITH KEY = \"server\"", + "refresh": 1, + "regex": "", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" ] + }, + "timezone": "browser", + "title": "App Metrics - Web Monitoring - InfluxDB", + "version": 18 } \ No newline at end of file From 8f88c47ad3385361f24a37565cf13b77a5d26241 Mon Sep 17 00:00:00 2001 From: alhardy Date: Thu, 25 May 2017 23:48:33 +1000 Subject: [PATCH 09/35] #8 updating app.metrics to latest alpha applying report running changes --- .../App.Metrics.InfluxDB.Sandbox.csproj | 7 +-- .../App.Metrics.InfluxDB.Sandbox/Startup.cs | 4 +- ...trics.Extensions.Reporting.InfluxDB.csproj | 4 +- .../Client/LineProtocolPayloadBuilder.cs | 35 +++++++++---- .../InfluxDbReporterProvider.cs | 6 +-- .../InfluxDbReporterSettings.cs | 1 + .../InfluxDbReporterTests.cs | 49 +++++++++---------- 7 files changed, 62 insertions(+), 44 deletions(-) diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index 4edf47c..34b31ad 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,10 +9,11 @@ - + - - + + + diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs index 5869a70..32e5536 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs @@ -81,7 +81,9 @@ public void ConfigureServices(IServiceCollection services) globalTags.Add("version", info.EntryAssemblyVersion); }); }). - AddJsonSerialization(). + AddJsonMetricsSerialization(). + AddAsciiHealthSerialization(). + AddAsciiMetricsTextSerialization(). AddReporting( factory => { diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 0c8d103..94fb8cb 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -25,7 +25,7 @@ false ..\..\AppMetrics.ruleset full - 1.1.0 + 1.2.0 @@ -49,7 +49,7 @@ - + All diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayloadBuilder.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayloadBuilder.cs index d832b29..5bc4b92 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayloadBuilder.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayloadBuilder.cs @@ -2,9 +2,11 @@ // Copyright (c) Allan Hardy. All rights reserved. // +using System; using System.Collections.Generic; using System.IO; using System.Linq; +using App.Metrics.Reporting; using App.Metrics.Reporting.Abstractions; using App.Metrics.Tagging; @@ -12,34 +14,49 @@ namespace App.Metrics.Extensions.Reporting.InfluxDB.Client { public class LineProtocolPayloadBuilder : IMetricPayloadBuilder { + private readonly Func _metricNameFormatter; private LineProtocolPayload _payload; - public void Clear() { _payload = null; } - - public void Init() + public LineProtocolPayloadBuilder(MetricValueDataKeys dataKeys, Func metricNameFormatter) { - _payload = new LineProtocolPayload(); + DataKeys = dataKeys; + _metricNameFormatter = metricNameFormatter; } - public void Pack(string name, object value, MetricTags tags) + /// + public MetricValueDataKeys DataKeys { get; } + + /// + public void Clear() { _payload = null; } + + /// + public void Init() { _payload = new LineProtocolPayload(); } + + /// + public void Pack(string context, string name, object value, MetricTags tags) { - _payload.Add(new LineProtocolPoint(name, new Dictionary { { "value", value } }, tags)); + var measurement = _metricNameFormatter(context, name); + _payload.Add(new LineProtocolPoint(measurement, new Dictionary { { "value", value } }, tags)); } + /// public void Pack( + string context, string name, IEnumerable columns, IEnumerable values, MetricTags tags) { - var fields = columns.Zip(values, (column, data) => new { column, data }) - .ToDictionary(pair => pair.column, pair => pair.data); + var fields = columns.Zip(values, (column, data) => new { column, data }).ToDictionary(pair => pair.column, pair => pair.data); - _payload.Add(new LineProtocolPoint(name, fields, tags)); + var measurement = _metricNameFormatter(context, name); + _payload.Add(new LineProtocolPoint(measurement, fields, tags)); } + /// public LineProtocolPayload Payload() { return _payload; } + /// public string PayloadFormatted() { var result = new StringWriter(); diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs index 8cc6b74..c7d0026 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs @@ -36,7 +36,7 @@ public IMetricReporter CreateMetricReporter(string name, ILoggerFactory loggerFa loggerFactory, _settings.InfluxDbSettings, _settings.HttpPolicy); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); return new ReportRunner( async p => @@ -47,9 +47,7 @@ public IMetricReporter CreateMetricReporter(string name, ILoggerFactory loggerFa payloadBuilder, _settings.ReportInterval, name, - loggerFactory, - _settings.MetricNameFormatter, - _settings.DataKeys); + loggerFactory); } } } \ No newline at end of file diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs index 0bb1d11..88a7e28 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs @@ -29,6 +29,7 @@ public InfluxDBReporterSettings() MetricNameFormatter = (metricContext, metricName) => metricContext.IsMissing() ? $"{metricName}".Replace(' ', '_').ToLowerInvariant() : $"{metricContext}__{metricName}".Replace(' ', '_').ToLowerInvariant(); + DataKeys = new MetricValueDataKeys(); } /// diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs index 5684556..e969681 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs @@ -31,6 +31,8 @@ public class InfluxDbReporterTests private const string MultidimensionalMetricNameSuffix = "|host:server1,env:staging"; private readonly IReservoir _defaultReservoir = new DefaultForwardDecayingReservoir(); private readonly MetricTags _tags = new MetricTags(new[] { "host", "env" }, new[] { "server1", "staging" }); + private readonly InfluxDBReporterSettings _settings = new InfluxDBReporterSettings(); + [Fact] public void can_clear_payload() @@ -46,7 +48,7 @@ public void can_clear_payload() Unit.None, TimeUnit.Milliseconds, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -72,7 +74,7 @@ public void can_report_apdex() ConstantValue.Provider(gauge.Value), MetricTags.Empty, false); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -92,7 +94,7 @@ public void can_report_apdex__when_multidimensional() ConstantValue.Provider(gauge.Value), _tags, resetOnReporting: false); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -114,7 +116,7 @@ public void can_report_apdex_with_tags() ConstantValue.Provider(gauge.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" }), false); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -136,7 +138,7 @@ public void can_report_apdex_with_tags_when_multidimensional() ConstantValue.Provider(gauge.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue")), resetOnReporting: false); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -160,7 +162,7 @@ public void can_report_counter_with_items() ConstantValue.Provider(counter.Value), Unit.None, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -184,7 +186,7 @@ public void can_report_counter_with_items_and_tags() ConstantValue.Provider(counter.Value), Unit.None, new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -209,7 +211,7 @@ public void can_report_counter_with_items_tags_when_multidimensional() ConstantValue.Provider(counter.Value), Unit.None, MetricTags.Concat(_tags, counterTags)); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -234,7 +236,7 @@ public void can_report_counter_with_items_with_option_not_to_report_percentage() Unit.None, MetricTags.Empty, reportItemPercentages: false); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -257,7 +259,7 @@ public void can_report_counters() ConstantValue.Provider(counter.Value), Unit.None, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -277,7 +279,7 @@ public void can_report_counters__when_multidimensional() ConstantValue.Provider(counter.Value), Unit.None, _tags); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -296,7 +298,7 @@ public void can_report_gauges() ConstantValue.Provider(gauge.Value), Unit.None, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -315,7 +317,7 @@ public void can_report_gauges__when_multidimensional() ConstantValue.Provider(gauge.Value), Unit.None, _tags); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -335,7 +337,7 @@ public void can_report_histograms() ConstantValue.Provider(histogram.Value), Unit.None, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -358,7 +360,7 @@ public void can_report_histograms_when_multidimensional() ConstantValue.Provider(histogram.Value), Unit.None, _tags); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -383,7 +385,7 @@ public void can_report_meters() Unit.None, TimeUnit.Milliseconds, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -405,7 +407,7 @@ public void can_report_meters_when_multidimensional() Unit.None, TimeUnit.Milliseconds, _tags); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -430,7 +432,7 @@ public void can_report_meters_with_items() Unit.None, TimeUnit.Milliseconds, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -456,7 +458,7 @@ public void can_report_meters_with_items_tags_when_multidimensional() Unit.None, TimeUnit.Milliseconds, _tags); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -482,7 +484,7 @@ public void can_report_timers() TimeUnit.Milliseconds, TimeUnit.Milliseconds, MetricTags.Empty); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -508,7 +510,7 @@ public void can_report_timers__when_multidimensional() TimeUnit.Milliseconds, TimeUnit.Milliseconds, _tags); - var payloadBuilder = new LineProtocolPayloadBuilder(); + var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); @@ -549,16 +551,13 @@ private static IMetricReporter CreateReporter(IMetricPayloadBuilder( p => AppMetricsTaskCache.SuccessTask, payloadBuilder, reportInterval, "InfluxDB Reporter", - loggerFactory, - settings.MetricNameFormatter, - settings.DataKeys); + loggerFactory); } } } \ No newline at end of file From 2410c5d58444692c92d35bd7bbf889b399d3c11b Mon Sep 17 00:00:00 2001 From: alhardy Date: Thu, 25 May 2017 23:49:47 +1000 Subject: [PATCH 10/35] adding alpha version suffix --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index dd82292..2bcbfcc 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ image: Visual Studio 2017 environment: COVERALLS_REPO_TOKEN: secure: jE+uYnSDVrBExOFkaPPHpJeKfHxVuS+lYvS+8BlcKBTSioz25h+rBq3RxMGl9JBd - PreReleaseSuffix: stable + PreReleaseSuffix: alpha DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true DOTNET_CLI_TELEMETRY_OPTOUT: true GitUser: From 2aa9210007820ec835538e38ad9853c17feae4a2 Mon Sep 17 00:00:00 2001 From: alhardy Date: Fri, 26 May 2017 20:57:18 +1000 Subject: [PATCH 11/35] #8 seperating influxdb formatting from reporter --- AppMetrics.Extensions.InfluxDB.sln | 22 +++++++- build.cake | 8 +-- build/common.props | 31 +++++++++++ ...trics.Extensions.Reporting.InfluxDB.csproj | 31 ++++------- .../Client/DefaultLineProtocolClient.cs | 1 + .../Client/ILineProtocolClient.cs | 1 + .../InfluxDbReporterProvider.cs | 1 + .../App.Metrics.Formatters.InfluxDB.csproj | 47 +++++++++++++++++ .../LineProtocolMetricsResponseWriter.cs | 30 +++++++++++ .../LineProtocolTextResponseWriter.cs | 30 +++++++++++ .../MetricsHostExtensions.cs | 51 +++++++++++++++++++ .../Properties/AssemblyInfo.cs | 26 ++++++++++ .../App.Metrics.Formatting.InfluxDB.csproj | 42 +++++++++++++++ .../LineProtocolPayload.cs | 2 +- .../LineProtocolPayloadBuilder.cs | 20 ++++++-- .../LineProtocolPoint.cs | 2 +- .../LineProtocolSyntax.cs | 2 +- .../Properties/AssemblyInfo.cs | 29 +++++++++++ .../Client/LineProtocolClientTests.cs | 1 + .../Client/LineProtocolPayloadTests.cs | 1 + .../Client/LineProtocolPointTests.cs | 1 + .../Client/LineProtocolSyntaxTests.cs | 1 + .../InfluxDbReporterTests.cs | 1 + 23 files changed, 348 insertions(+), 33 deletions(-) create mode 100644 build/common.props create mode 100644 src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj create mode 100644 src/App.Metrics.Formatters.InfluxDB/LineProtocolMetricsResponseWriter.cs create mode 100644 src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs create mode 100644 src/App.Metrics.Formatters.InfluxDB/MetricsHostExtensions.cs create mode 100644 src/App.Metrics.Formatters.InfluxDB/Properties/AssemblyInfo.cs create mode 100644 src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj rename src/{App.Metrics.Extensions.Reporting.InfluxDB/Client => App.Metrics.Formatting.InfluxDB}/LineProtocolPayload.cs (93%) rename src/{App.Metrics.Extensions.Reporting.InfluxDB/Client => App.Metrics.Formatting.InfluxDB}/LineProtocolPayloadBuilder.cs (74%) rename src/{App.Metrics.Extensions.Reporting.InfluxDB/Client => App.Metrics.Formatting.InfluxDB}/LineProtocolPoint.cs (97%) rename src/{App.Metrics.Extensions.Reporting.InfluxDB/Client => App.Metrics.Formatting.InfluxDB}/LineProtocolSyntax.cs (98%) create mode 100644 src/App.Metrics.Formatting.InfluxDB/Properties/AssemblyInfo.cs diff --git a/AppMetrics.Extensions.InfluxDB.sln b/AppMetrics.Extensions.InfluxDB.sln index 700be71..adb0afc 100644 --- a/AppMetrics.Extensions.InfluxDB.sln +++ b/AppMetrics.Extensions.InfluxDB.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26228.12 +VisualStudioVersion = 15.0.26403.7 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2D805782-756E-4C98-B22E-F502BEE95318}" EndProject @@ -48,6 +48,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sandbox", "sandbox", "{B0E3 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "App.Metrics.InfluxDB.Sandbox", "sandbox\App.Metrics.InfluxDB.Sandbox\App.Metrics.InfluxDB.Sandbox.csproj", "{4D15C49F-F4DC-4631-B8FA-1D307C461227}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "App.Metrics.Formatters.InfluxDB", "src\App.Metrics.Formatters.InfluxDB\App.Metrics.Formatters.InfluxDB.csproj", "{5ACC61B5-8285-4798-A215-B7677A59EA22}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "App.Metrics.Formatting.InfluxDB", "src\App.Metrics.Formatting.InfluxDB\App.Metrics.Formatting.InfluxDB.csproj", "{A1659468-1D7F-4DAB-8487-4E14DC9D92BB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{28CE67A4-2662-43AA-B42E-B3C8F33DF31B}" + ProjectSection(SolutionItems) = preProject + build\common.props = build\common.props + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -66,6 +75,14 @@ Global {4D15C49F-F4DC-4631-B8FA-1D307C461227}.Debug|Any CPU.Build.0 = Debug|Any CPU {4D15C49F-F4DC-4631-B8FA-1D307C461227}.Release|Any CPU.ActiveCfg = Release|Any CPU {4D15C49F-F4DC-4631-B8FA-1D307C461227}.Release|Any CPU.Build.0 = Release|Any CPU + {5ACC61B5-8285-4798-A215-B7677A59EA22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5ACC61B5-8285-4798-A215-B7677A59EA22}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5ACC61B5-8285-4798-A215-B7677A59EA22}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5ACC61B5-8285-4798-A215-B7677A59EA22}.Release|Any CPU.Build.0 = Release|Any CPU + {A1659468-1D7F-4DAB-8487-4E14DC9D92BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1659468-1D7F-4DAB-8487-4E14DC9D92BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1659468-1D7F-4DAB-8487-4E14DC9D92BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1659468-1D7F-4DAB-8487-4E14DC9D92BB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -78,5 +95,8 @@ Global {5BC3B2AF-AFC7-4C92-BD1E-D347E83B2497} = {31A4DDB1-952E-4EED-96EF-29C669279A86} {44E50731-4AE5-456F-A84C-CE3C4C977097} = {5BC3B2AF-AFC7-4C92-BD1E-D347E83B2497} {4D15C49F-F4DC-4631-B8FA-1D307C461227} = {B0E330F2-942D-47DC-940D-692E01459A06} + {5ACC61B5-8285-4798-A215-B7677A59EA22} = {2D805782-756E-4C98-B22E-F502BEE95318} + {A1659468-1D7F-4DAB-8487-4E14DC9D92BB} = {2D805782-756E-4C98-B22E-F502BEE95318} + {28CE67A4-2662-43AA-B42E-B3C8F33DF31B} = {31A4DDB1-952E-4EED-96EF-29C669279A86} EndGlobalSection EndGlobal diff --git a/build.cake b/build.cake index a021f7c..0f5ef41 100644 --- a/build.cake +++ b/build.cake @@ -9,6 +9,7 @@ #tool "nuget:?package=JetBrains.ReSharper.CommandLineTools" #tool "nuget:?package=coveralls.io" #tool "nuget:?package=gitreleasemanager" +#tool "nuget:?package=ReportGenerator" ////////////////////////////////////////////////////////////////////// // ARGUMENTS @@ -32,12 +33,11 @@ var gitPassword = HasArgument("GitPassword") ? Argument("GitPassword ////////////////////////////////////////////////////////////////////// // DEFINE FILES & DIRECTORIES ////////////////////////////////////////////////////////////////////// -var packDirs = new [] { Directory("./src/App.Metrics.Extensions.Reporting.InfluxDB") }; +var packDirs = new [] { Directory("./src/App.Metrics.Extensions.Reporting.InfluxDB"), Directory("./src/App.Metrics.Formatters.InfluxDB"), Directory("./src/App.Metrics.Formatting.InfluxDB") }; var artifactsDir = (DirectoryPath) Directory("./artifacts"); var testResultsDir = (DirectoryPath) artifactsDir.Combine("test-results"); var coverageResultsDir = (DirectoryPath) artifactsDir.Combine("coverage"); var reSharperReportsDir = (DirectoryPath) artifactsDir.Combine("resharper-reports"); -var testCoverageOutputFilePath = coverageResultsDir.CombineWithFilePath("coverage.xml"); var testOCoverageOutputFilePath = coverageResultsDir.CombineWithFilePath("openCoverCoverage.xml"); var htmlCoverageReport = coverageResultsDir.FullPath + "/coverage.html"; var mergedCoverageSnapshots = coverageResultsDir.FullPath + "/coverage.dcvr"; @@ -231,7 +231,7 @@ Task("RunTests") }); Task("HtmlCoverageReport") - .WithCriteria(() => FileExists(testCoverageOutputFilePath) && coverWith != "None" && IsRunningOnWindows()) + .WithCriteria(() => FileExists(testOCoverageOutputFilePath) && coverWith != "None" && IsRunningOnWindows()) .IsDependentOn("RunTests") .Does(() => { @@ -246,7 +246,7 @@ Task("HtmlCoverageReport") } else if (coverWith == "OpenCover") { - ReportGenerator(testCoverageOutputFilePath, coverageResultsDir); + ReportGenerator(testOCoverageOutputFilePath, coverageResultsDir); } }); diff --git a/build/common.props b/build/common.props new file mode 100644 index 0000000..b34a66a --- /dev/null +++ b/build/common.props @@ -0,0 +1,31 @@ + + + Allan Hardy 2016 + Allan Hardy + $(NoWarn);1701;1702;1705;CS1591;CS1570 + true + true + http://app-metrics.io/logo.png + http://app-metrics.io/reporting/influxdb.html + https://github.com/alhardy/AppMetrics.Extensions.InfluxDB/blob/master/LICENSE + git + git://github.com/alhardy/AppMetrics.Extensions.InfluxDB + false + false + false + false + ..\..\AppMetrics.ruleset + full + + + + + + + + + All + + + + \ No newline at end of file diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 94fb8cb..4d445dc 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -2,29 +2,15 @@ + + - Provides InfluxDB reporting capability to App Metrics - Allan Hardy 2016 - App.Metrics.Extensions.Reporting.InfluxDB - Allan Hardy - netstandard1.6;net452 - $(NoWarn);CS1591 - true - true + Provides InfluxDB reporting capability to App Metrics + App.Metrics.Extensions.Reporting.InfluxDB + netstandard1.6;net452 App.Metrics.Extensions.Reporting.InfluxDB App.Metrics.Extensions.Reporting.InfluxDB - Metrics;Monitoring;Instrumentation;Reporting;InfluxDB - http://app-metrics.io/logo.png - http://app-metrics.io/reporting/influxdb.html - https://github.com/alhardy/AppMetrics.Extensions.InfluxDB/blob/master/LICENSE - git - git://github.com/alhardy/AppMetrics.Extensions.InfluxDB - false - false - false - false - ..\..\AppMetrics.ruleset - full + Metrics;Monitoring;Instrumentation;Reporting;InfluxDB 1.2.0 @@ -50,7 +36,6 @@ - All @@ -65,4 +50,8 @@ + + + + diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs index 2b5ab55..33aecd3 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/DefaultLineProtocolClient.cs @@ -9,6 +9,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using App.Metrics.Formatting.InfluxDB; using Microsoft.Extensions.Logging; namespace App.Metrics.Extensions.Reporting.InfluxDB.Client diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/ILineProtocolClient.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/ILineProtocolClient.cs index 54e392d..364dc43 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/ILineProtocolClient.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/ILineProtocolClient.cs @@ -4,6 +4,7 @@ using System.Threading; using System.Threading.Tasks; +using App.Metrics.Formatting.InfluxDB; namespace App.Metrics.Extensions.Reporting.InfluxDB.Client { diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs index c7d0026..9ede2af 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterProvider.cs @@ -6,6 +6,7 @@ using App.Metrics.Abstractions.Filtering; using App.Metrics.Abstractions.Reporting; using App.Metrics.Extensions.Reporting.InfluxDB.Client; +using App.Metrics.Formatting.InfluxDB; using App.Metrics.Internal; using App.Metrics.Reporting; using Microsoft.Extensions.Logging; diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj new file mode 100644 index 0000000..80569e1 --- /dev/null +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -0,0 +1,47 @@ + + + + + + + + App Metrics Middleware Response Formatter. Allows metrics data to be formatted in InfluxDB formats e.g. Line Protocol + App.Metrics.Formatters.InfluxDB + netstandard1.6;net461 + App.Metrics.Formatters.InfluxDB + App.Metrics.Formatters.InfluxDB + Metrics;Monitoring;Instrumentation + 1.0.0 + + + + bin\Release\netstandard1.6\App.Metrics.Formatters.InfluxDB.xml + + + + bin\Debug\netstandard1.6\App.Metrics.Formatters.InfluxDB.xml + + + + bin\Release\net461\App.Metrics.Formatters.InfluxDB.xml + + + + bin\Debug\net461\App.Metrics.Formatters.InfluxDB.xml + + + + + + + + + + + + + + + + + diff --git a/src/App.Metrics.Formatters.InfluxDB/LineProtocolMetricsResponseWriter.cs b/src/App.Metrics.Formatters.InfluxDB/LineProtocolMetricsResponseWriter.cs new file mode 100644 index 0000000..00fea90 --- /dev/null +++ b/src/App.Metrics.Formatters.InfluxDB/LineProtocolMetricsResponseWriter.cs @@ -0,0 +1,30 @@ +// +// Copyright (c) Allan Hardy. All rights reserved. +// + +using System.Threading; +using System.Threading.Tasks; +using App.Metrics.Core; +using App.Metrics.Extensions.Middleware.Abstractions; +using App.Metrics.Formatting; +using App.Metrics.Formatting.InfluxDB; +using Microsoft.AspNetCore.Http; + +namespace App.Metrics.Formatters.InfluxDB +{ + public class LineProtocolMetricsResponseWriter : IMetricsResponseWriter + { + /// + public string ContentType => "application/vnd.app.metrics.v1.metrics.influxdb; influx=lineprotocol-1.2.x;"; + + public Task WriteAsync(HttpContext context, MetricsDataValueSource metricsData, CancellationToken token = default(CancellationToken)) + { + var payloadBuilder = new LineProtocolPayloadBuilder(); + + var formatter = new MetricDataValueSourceFormatter(); + formatter.Build(metricsData, payloadBuilder); + + return context.Response.WriteAsync(payloadBuilder.PayloadFormatted(), token); + } + } +} \ No newline at end of file diff --git a/src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs b/src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs new file mode 100644 index 0000000..5f35e7a --- /dev/null +++ b/src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs @@ -0,0 +1,30 @@ +// +// Copyright (c) Allan Hardy. All rights reserved. +// + +using System.Threading; +using System.Threading.Tasks; +using App.Metrics.Core; +using App.Metrics.Extensions.Middleware.Abstractions; +using App.Metrics.Formatting; +using App.Metrics.Formatting.InfluxDB; +using Microsoft.AspNetCore.Http; + +namespace App.Metrics.Formatters.InfluxDB +{ + public class LineProtocolTextResponseWriter : IMetricsTextResponseWriter + { + /// + public string ContentType => "text/plain"; + + public Task WriteAsync(HttpContext context, MetricsDataValueSource metricsData, CancellationToken token = default(CancellationToken)) + { + var payloadBuilder = new LineProtocolPayloadBuilder(); + + var builder = new MetricDataValueSourceFormatter(); + builder.Build(metricsData, payloadBuilder); + + return context.Response.WriteAsync(payloadBuilder.PayloadFormatted(), token); + } + } +} \ No newline at end of file diff --git a/src/App.Metrics.Formatters.InfluxDB/MetricsHostExtensions.cs b/src/App.Metrics.Formatters.InfluxDB/MetricsHostExtensions.cs new file mode 100644 index 0000000..1920128 --- /dev/null +++ b/src/App.Metrics.Formatters.InfluxDB/MetricsHostExtensions.cs @@ -0,0 +1,51 @@ +// +// Copyright (c) Allan Hardy. All rights reserved. +// + +using App.Metrics.Extensions.Middleware.Abstractions; +using App.Metrics.Formatters.InfluxDB; +using Microsoft.Extensions.DependencyInjection.Extensions; + +// ReSharper disable CheckNamespace +namespace Microsoft.Extensions.DependencyInjection + // ReSharper restore CheckNamespace +{ + public static class MetricsHostExtensions + { + /// + /// Enables InfluxDB's Line Protocol serialization on the metric endpoint's response + /// + /// The metrics host builder. + /// The metrics host builder + public static IMetricsHostBuilder AddInfluxDBLineProtocolMetricsSerialization(this IMetricsHostBuilder host) + { + host.Services.Replace(ServiceDescriptor.Transient()); + + return host; + } + + /// + /// Enables InfluxDB's Line Protocol serialization on the metric endpoint's response + /// + /// The metrics host builder. + /// The metrics host builder + public static IMetricsHostBuilder AddInfluxDBLineProtocolMetricsTextSerialization(this IMetricsHostBuilder host) + { + host.Services.Replace(ServiceDescriptor.Transient()); + + return host; + } + + /// + /// Enables InfluxDB's Line Protocol serialization on the metrics and metrics-text responses + /// + /// The metrics host builder. + /// The metrics host builder + public static IMetricsHostBuilder AddInfluxDBLineProtocolSerialization(this IMetricsHostBuilder host) + { + host.AddInfluxDBLineProtocolMetricsSerialization(); + host.AddInfluxDBLineProtocolMetricsTextSerialization(); + return host; + } + } +} \ No newline at end of file diff --git a/src/App.Metrics.Formatters.InfluxDB/Properties/AssemblyInfo.cs b/src/App.Metrics.Formatters.InfluxDB/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..50b6999 --- /dev/null +++ b/src/App.Metrics.Formatters.InfluxDB/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +// +// Copyright (c) Allan Hardy. All rights reserved. +// + +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyProduct("App.Metrics")] +[assembly: AssemblyCompany("Allan Hardy.")] +[assembly: NeutralResourcesLanguage("en-us")] +[assembly: AssemblyCopyright("© Allan Hardy. All rights reserved.")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("b73add1d-af23-4a70-898c-dfadbf0bcb63")] \ No newline at end of file diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj new file mode 100644 index 0000000..784a50f --- /dev/null +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -0,0 +1,42 @@ + + + + + + + + App Metrics Formatting, formatting metrics data to InfluxDB formats e.g. Line Protocol + App.Metrics.Formatting.InfluxDB + netstandard1.6;net452 + App.Metrics.Formatting.InfluxDB + App.Metrics.Formatting.InfluxDB + Metrics;Monitoring;Instrumentation + 1.0.0 + + + + bin\Release\netstandard1.6\App.Metrics.Formatting.InfluxDB.xml + + + + bin\Debug\netstandard1.6\App.Metrics.Formatting.InfluxDB.xml + + + + bin\Release\net452\App.Metrics.Formatting.InfluxDB.xml + + + + bin\Debug\net452\App.Metrics.Formatting.InfluxDB.xml + + + + + + + + + + + + diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayload.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayload.cs similarity index 93% rename from src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayload.cs rename to src/App.Metrics.Formatting.InfluxDB/LineProtocolPayload.cs index 8c22e53..8b8c003 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayload.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayload.cs @@ -6,7 +6,7 @@ using System.IO; using System.Linq; -namespace App.Metrics.Extensions.Reporting.InfluxDB.Client +namespace App.Metrics.Formatting.InfluxDB { public class LineProtocolPayload { diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayloadBuilder.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs similarity index 74% rename from src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayloadBuilder.cs rename to src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs index 5bc4b92..a96782d 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPayloadBuilder.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs @@ -10,17 +10,29 @@ using App.Metrics.Reporting.Abstractions; using App.Metrics.Tagging; -namespace App.Metrics.Extensions.Reporting.InfluxDB.Client +namespace App.Metrics.Formatting.InfluxDB { public class LineProtocolPayloadBuilder : IMetricPayloadBuilder { private readonly Func _metricNameFormatter; private LineProtocolPayload _payload; - public LineProtocolPayloadBuilder(MetricValueDataKeys dataKeys, Func metricNameFormatter) + public LineProtocolPayloadBuilder(MetricValueDataKeys dataKeys = null, Func metricNameFormatter = null) { - DataKeys = dataKeys; - _metricNameFormatter = metricNameFormatter; + _payload = new LineProtocolPayload(); + + DataKeys = dataKeys ?? new MetricValueDataKeys(); + + if (metricNameFormatter == null) + { + _metricNameFormatter = (metricContext, metricName) => string.IsNullOrWhiteSpace(metricContext) + ? $"{metricName}".Replace(' ', '_').ToLowerInvariant() + : $"{metricContext}__{metricName}".Replace(' ', '_').ToLowerInvariant(); + } + else + { + _metricNameFormatter = metricNameFormatter; + } } /// diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPoint.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs similarity index 97% rename from src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPoint.cs rename to src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs index 05b49a3..fa8d4b3 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolPoint.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs @@ -8,7 +8,7 @@ using System.Linq; using App.Metrics.Tagging; -namespace App.Metrics.Extensions.Reporting.InfluxDB.Client +namespace App.Metrics.Formatting.InfluxDB { public class LineProtocolPoint { diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolSyntax.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolSyntax.cs similarity index 98% rename from src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolSyntax.cs rename to src/App.Metrics.Formatting.InfluxDB/LineProtocolSyntax.cs index bff6e35..4e2a383 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/Client/LineProtocolSyntax.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolSyntax.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Globalization; -namespace App.Metrics.Extensions.Reporting.InfluxDB.Client +namespace App.Metrics.Formatting.InfluxDB { internal class LineProtocolSyntax { diff --git a/src/App.Metrics.Formatting.InfluxDB/Properties/AssemblyInfo.cs b/src/App.Metrics.Formatting.InfluxDB/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ad11201 --- /dev/null +++ b/src/App.Metrics.Formatting.InfluxDB/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +// +// Copyright (c) Allan Hardy. All rights reserved. +// + +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyProduct("App.Metrics")] +[assembly: AssemblyCompany("Allan Hardy.")] +[assembly: NeutralResourcesLanguage("en-us")] +[assembly: AssemblyCopyright("© Allan Hardy. All rights reserved.")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("bd365222-0a97-41cb-bf9e-f9336a50a56f")] + +[assembly: InternalsVisibleTo("App.Metrics.Extensions.Reporting.InfluxDB.Facts")] \ No newline at end of file diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolClientTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolClientTests.cs index e27f39a..968d104 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolClientTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolClientTests.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using App.Metrics.Extensions.Reporting.InfluxDB; using App.Metrics.Extensions.Reporting.InfluxDB.Client; +using App.Metrics.Formatting.InfluxDB; using App.Metrics.Tagging; using FluentAssertions; using Microsoft.Extensions.Logging; diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPayloadTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPayloadTests.cs index 6407e24..6c867e7 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPayloadTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPayloadTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.IO; using App.Metrics.Extensions.Reporting.InfluxDB.Client; +using App.Metrics.Formatting.InfluxDB; using App.Metrics.Tagging; using FluentAssertions; using Xunit; diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs index f844d0a..fcbd55a 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.IO; using App.Metrics.Extensions.Reporting.InfluxDB.Client; +using App.Metrics.Formatting.InfluxDB; using App.Metrics.Tagging; using FluentAssertions; using Xunit; diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolSyntaxTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolSyntaxTests.cs index 5f90ea5..2f3740d 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolSyntaxTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolSyntaxTests.cs @@ -3,6 +3,7 @@ using System; using App.Metrics.Extensions.Reporting.InfluxDB.Client; +using App.Metrics.Formatting.InfluxDB; using FluentAssertions; using Xunit; diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs index e969681..1f99aa5 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs @@ -10,6 +10,7 @@ using App.Metrics.Core; using App.Metrics.Counter; using App.Metrics.Extensions.Reporting.InfluxDB.Client; +using App.Metrics.Formatting.InfluxDB; using App.Metrics.Gauge; using App.Metrics.Histogram; using App.Metrics.Infrastructure; From fa68c9df5b11e5f6e53dccaa88950241da799f98 Mon Sep 17 00:00:00 2001 From: alhardy Date: Fri, 26 May 2017 21:06:39 +1000 Subject: [PATCH 12/35] #8 use line protocol output on metrics-text endpoint in sandbox project --- .../App.Metrics.InfluxDB.Sandbox.csproj | 1 + sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index 34b31ad..131cf82 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -25,6 +25,7 @@ + diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs index 32e5536..9656533 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs @@ -83,7 +83,7 @@ public void ConfigureServices(IServiceCollection services) }). AddJsonMetricsSerialization(). AddAsciiHealthSerialization(). - AddAsciiMetricsTextSerialization(). + AddInfluxDBLineProtocolMetricsTextSerialization(). AddReporting( factory => { From f527b6fc16315668d5263449b40aeb41b07fd93e Mon Sep 17 00:00:00 2001 From: alhardy Date: Fri, 26 May 2017 22:40:05 +1000 Subject: [PATCH 13/35] #8 tidy up --- .../App.Metrics.InfluxDB.Sandbox/Startup.cs | 2 +- .../InfluxDbReporterSettings.cs | 5 ++--- .../App.Metrics.Formatters.InfluxDB.csproj | 2 +- .../LineProtocolTextResponseWriter.cs | 3 ++- .../App.Metrics.Formatting.InfluxDB.csproj | 2 +- .../Constants.cs | 19 +++++++++++++++++++ .../LineProtocolPayloadBuilder.cs | 12 +----------- 7 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 src/App.Metrics.Formatting.InfluxDB/Constants.cs diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs index 9656533..0056874 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs @@ -81,8 +81,8 @@ public void ConfigureServices(IServiceCollection services) globalTags.Add("version", info.EntryAssemblyVersion); }); }). - AddJsonMetricsSerialization(). AddAsciiHealthSerialization(). + AddInfluxDBLineProtocolMetricsSerialization(). AddInfluxDBLineProtocolMetricsTextSerialization(). AddReporting( factory => diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs index 88a7e28..0871fe8 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/InfluxDbReporterSettings.cs @@ -6,6 +6,7 @@ using App.Metrics.Abstractions.Reporting; using App.Metrics.Extensions.Reporting.InfluxDB.Client; using App.Metrics.Reporting; +using InfluxDBConstants = App.Metrics.Formatting.InfluxDB.Constants.InfluxDBDefaults; namespace App.Metrics.Extensions.Reporting.InfluxDB { @@ -26,9 +27,7 @@ public InfluxDBReporterSettings() Timeout = Constants.DefaultTimeout }; ReportInterval = TimeSpan.FromSeconds(5); - MetricNameFormatter = (metricContext, metricName) => metricContext.IsMissing() - ? $"{metricName}".Replace(' ', '_').ToLowerInvariant() - : $"{metricContext}__{metricName}".Replace(' ', '_').ToLowerInvariant(); + MetricNameFormatter = InfluxDBConstants.MetricNameFormatter; DataKeys = new MetricValueDataKeys(); } diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index 80569e1..127cd93 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -10,7 +10,7 @@ netstandard1.6;net461 App.Metrics.Formatters.InfluxDB App.Metrics.Formatters.InfluxDB - Metrics;Monitoring;Instrumentation + Metrics;Monitoring;Instrumentation;InfluxDB 1.0.0 diff --git a/src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs b/src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs index 5f35e7a..131beb8 100644 --- a/src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs +++ b/src/App.Metrics.Formatters.InfluxDB/LineProtocolTextResponseWriter.cs @@ -15,8 +15,9 @@ namespace App.Metrics.Formatters.InfluxDB public class LineProtocolTextResponseWriter : IMetricsTextResponseWriter { /// - public string ContentType => "text/plain"; + public string ContentType => "text/plain; app.metrics=vnd.app.metrics.v1.metrics.influxdb; influx=lineprotocol-1.2.x;"; + /// public Task WriteAsync(HttpContext context, MetricsDataValueSource metricsData, CancellationToken token = default(CancellationToken)) { var payloadBuilder = new LineProtocolPayloadBuilder(); diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index 784a50f..a90b110 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -10,7 +10,7 @@ netstandard1.6;net452 App.Metrics.Formatting.InfluxDB App.Metrics.Formatting.InfluxDB - Metrics;Monitoring;Instrumentation + Metrics;Monitoring;Instrumentation;InfluxDB 1.0.0 diff --git a/src/App.Metrics.Formatting.InfluxDB/Constants.cs b/src/App.Metrics.Formatting.InfluxDB/Constants.cs new file mode 100644 index 0000000..0390c05 --- /dev/null +++ b/src/App.Metrics.Formatting.InfluxDB/Constants.cs @@ -0,0 +1,19 @@ +// +// Copyright (c) Allan Hardy. All rights reserved. +// + +using System; + +namespace App.Metrics.Formatting.InfluxDB +{ + public static class Constants + { + public class InfluxDBDefaults + { + public static readonly Func MetricNameFormatter = + (metricContext, metricName) => string.IsNullOrWhiteSpace(metricContext) + ? $"{metricName}".Replace(' ', '_').ToLowerInvariant() + : $"{metricContext}__{metricName}".Replace(' ', '_').ToLowerInvariant(); + } + } +} \ No newline at end of file diff --git a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs index a96782d..43fece5 100644 --- a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs @@ -22,17 +22,7 @@ public LineProtocolPayloadBuilder(MetricValueDataKeys dataKeys = null, Func string.IsNullOrWhiteSpace(metricContext) - ? $"{metricName}".Replace(' ', '_').ToLowerInvariant() - : $"{metricContext}__{metricName}".Replace(' ', '_').ToLowerInvariant(); - } - else - { - _metricNameFormatter = metricNameFormatter; - } + _metricNameFormatter = metricNameFormatter ?? Constants.InfluxDBDefaults.MetricNameFormatter; } /// From 2321c469fcbe944c5cc78b778f82a977a33330c4 Mon Sep 17 00:00:00 2001 From: alhardy Date: Fri, 26 May 2017 23:34:18 +1000 Subject: [PATCH 14/35] #9 upgrating grafana web dashbaord to include server variable filtering all metrics --- ...p.Metrics.Sandbox-InfluxDB-GenericWeb.json | 5614 +++++++++-------- 1 file changed, 2855 insertions(+), 2759 deletions(-) diff --git a/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json b/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json index d73cd5a..f73f51e 100644 --- a/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json +++ b/visualization/grafana-dashbaords/App.Metrics.Sandbox-InfluxDB-GenericWeb.json @@ -1,2844 +1,2940 @@ { - "__inputs": [], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "4.2.0" + "annotations": { + "list": [] }, - { - "type": "panel", - "id": "grafana-piechart-panel", - "name": "Pie Chart", - "version": "1.1.4" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "" - }, - { - "type": "panel", - "id": "table", - "name": "Table", - "version": "" - } - ], - "annotations": { - "list": [] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 1, - "hideControls": false, - "id": null, - "links": [], - "refresh": "5s", - "rows": [ - { - "collapse": true, - "height": "250", - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "format": "rpm", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "id": 8, - "interval": "", - "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" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "thresholds": "", - "title": "Throughput", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "decimals": 4, - "editable": true, - "error": false, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "id": 6, - "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": "", - "text": "", - "to": "" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [], - "measurement": "application.httprequests__one_minute_error_percentage_rate", - "policy": "default", - "query": "SELECT \"value\" FROM \"application.httprequests__percentage_error_requests\" WHERE $timeFilter", - "rawQuery": false, - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": "", - "title": "Error %", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0%", - "value": "null" - } - ], - "valueName": "current" - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 2, - "id": 13, - "interval": "$summarize", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__active", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Active Requests", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] - }, - { - "aliasColors": { - "application.httprequests__apdex.last": "#6ED0E0" - }, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "", - "id": 7, - "interval": "$summarize", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 3, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__apdex", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "score" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "lt", - "value": 0.5 - }, - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 0.5 - }, - { - "colorMode": "ok", - "fill": true, - "line": true, - "op": "gt", - "value": 0.75 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Apdex score", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "apdex", - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, + "editable": true, + "gnetId": null, + "graphTooltip": 1, + "hideControls": false, + "id": 8, + "links": [], + "refresh": "5s", + "rows": [ { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 1, - "interval": "$summarize", - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "1 min rate" + "collapse": true, + "height": "250", + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate5m" + "datasource": "$datasource", + "editable": true, + "error": false, + "format": "rpm", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 8, + "interval": "", + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "5 min rate" + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate15m" + "span": 2, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "15 min rate" + "thresholds": "", + "title": "Throughput", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Throughput", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "rpm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 2, - "interval": "$summarize", - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" + "valueName": "current" }, { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th Percentile" + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" ], - "type": "alias" - } - ], - [ - { - "params": [ - "p98" + "datasource": "$datasource", + "decimals": 4, + "editable": true, + "error": false, + "format": "percent", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 6, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "98th Percentile" + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "", + "text": "", + "to": "" + } ], - "type": "alias" - } - ], - [ - { - "params": [ - "p99" + "span": 2, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "application.httprequests__one_minute_error_percentage_rate", + "policy": "default", + "query": "SELECT \"value\" FROM \"application.httprequests__percentage_error_requests\" WHERE $timeFilter", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "99th Percentile" + "thresholds": "", + "title": "Error %", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "0%", + "value": "null" + } ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Response Time", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "", - "id": 9, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": false, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" + "valueName": "current" }, { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__one_minute_error_percentage_rate", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 2, + "id": 13, + "interval": "$summarize", + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__active", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Error Rate %", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": 2, - "editable": true, - "error": false, - "fill": 1, - "height": "250px", - "id": 3, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Active Requests", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "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 + } + ] }, { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__error_rate", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "1min rate" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate5m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "5min rate" + "aliasColors": { + "application.httprequests__apdex.last": "#6ED0E0" + }, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "", + "id": 7, + "interval": "$summarize", + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 3, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__apdex", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "score" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "alias" - } - ], - [ - { - "params": [ - "rate15m" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "15min rate" + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "lt", + "value": 0.5 + }, + { + "colorMode": "warning", + "fill": true, + "line": true, + "op": "gt", + "value": 0.5 + }, + { + "colorMode": "ok", + "fill": true, + "line": true, + "op": "gt", + "value": 0.75 + } ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" + "timeFrom": null, + "timeShift": null, + "title": "Apdex score", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "apdex", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] }, { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Error Rate", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "rpm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "cacheTimeout": null, - "combine": { - "label": "Others", - "threshold": 0 - }, - "datasource": "$datasource", - "editable": true, - "error": false, - "fontSize": "80%", - "format": "percent", - "height": "250px", - "id": 4, - "interval": "", - "legend": { - "percentage": true, - "show": true, - "sort": null, - "sortDesc": null, - "values": true - }, - "legendType": "Right side", - "links": [], - "maxDataPoints": 3, - "nullPointMode": "connected", - "pieType": "pie", - "span": 5, - "strokeWidth": 1, - "targets": [ - { - "alias": "$tag_http_status_code", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "http_status_code" - ], - "type": "tag" - } - ], - "measurement": "application.httprequests__errors", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 1, + "interval": "$summarize", + "legend": { + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "1 min rate" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "rate5m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "5 min rate" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "rate15m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "15 min rate" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "title": "Errors", - "type": "grafana-piechart-panel", - "valueName": "current" - }, - { - "columns": [ - { - "text": "Total", - "value": "total" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "filterNull": true, - "fontSize": "100%", - "id": 24, - "interval": "", - "links": [], - "pageSize": 20, - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "span": 7, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 0, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "none" - } - ], - "targets": [ - { - "alias": "$tag_exception", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Throughput", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "rpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] }, { - "params": [ - "exception" - ], - "type": "tag" - } - ], - "measurement": "application.httprequests__exceptions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 2, + "interval": "$summarize", + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th Percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p98" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "98th Percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p99" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "99th Percentile" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "title": "Uncaught Exceptions Thrown", - "transform": "timeseries_aggregations", - "type": "table" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Overview", - "titleSize": "h6" - }, - { - "collapse": true, - "height": "300", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 16, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Response Time", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] }, { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "", + "id": 9, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__one_minute_error_percentage_rate", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Error Rate %", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] }, { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Throughput / Endpoint", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "rpm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "height": "350", - "id": 17, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "decimals": 2, + "editable": true, + "error": false, + "fill": 1, + "height": "250px", + "id": 3, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__error_rate", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "1min rate" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "rate5m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "5min rate" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "rate15m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "15min rate" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Error Rate", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "rpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] }, { - "params": [ - "route" - ], - "type": "tag" + "aliasColors": {}, + "cacheTimeout": null, + "combine": { + "label": "Others", + "threshold": 0 + }, + "datasource": "$datasource", + "editable": true, + "error": false, + "fontSize": "80%", + "format": "percent", + "height": "250px", + "id": 4, + "interval": "", + "legend": { + "percentage": true, + "show": true, + "sort": null, + "sortDesc": null, + "values": true + }, + "legendType": "Right side", + "links": [], + "maxDataPoints": 3, + "nullPointMode": "connected", + "pieType": "pie", + "span": 5, + "strokeWidth": 1, + "targets": [ + { + "alias": "$tag_http_status_code", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "http_status_code" + ], + "type": "tag" + } + ], + "measurement": "application.httprequests__errors", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "title": "Errors", + "type": "grafana-piechart-panel", + "valueName": "current" }, { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" + "columns": [ + { + "text": "Total", + "value": "total" + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th Percentile" + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": true, + "fontSize": "100%", + "id": 24, + "interval": "", + "links": [], + "pageSize": 20, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 7, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 0, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "none" + } ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" + "targets": [ + { + "alias": "$tag_exception", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "exception" + ], + "type": "tag" + } + ], + "measurement": "application.httprequests__exceptions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "title": "Uncaught Exceptions Thrown", + "transform": "timeseries_aggregations", + "type": "table" } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Response Time / Endpoint", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Overview", + "titleSize": "h6" }, { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "filterNull": false, - "fontSize": "100%", - "id": 10, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "span": 6, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "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_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" + "collapse": false, + "height": "300", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 16, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": true, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Throughput / Endpoint", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "transparent": false, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "rpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] }, { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "height": "350", + "id": 17, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th Percentile" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Response Time / Endpoint", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] }, { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "title": "Response Times / Endpoint", - "transform": "timeseries_aggregations", - "type": "table" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "filterNull": false, - "fontSize": "100%", - "id": 12, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "span": 6, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "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": "rpm" - } - ], - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 10, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "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_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "title": "Response Times / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" }, { - "params": [ - "route" - ], - "type": "tag" + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 12, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "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": "rpm" + } + ], + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__transactions_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "rate1m" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "title": "Throughput / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" }, { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__transactions_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "rate1m" + "columns": [ + { + "text": "Current", + "value": "current" + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 11, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": null, + "desc": false + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 0, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "percent" + } + ], + "targets": [ + { + "alias": "$tag_route", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__one_minute_error_percentage_rate_per_endpoint", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "title": "Error Request Percentage / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" }, { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" + "columns": [ + { + "text": "Total", + "value": "total" + } + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "id": 25, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "span": 6, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 0, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "none" + } + ], + "targets": [ + { + "alias": "$tag_route [$tag_exception]", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "route" + ], + "type": "tag" + }, + { + "params": [ + "exception" + ], + "type": "tag" + } + ], + "measurement": "application.httprequests__exceptions", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "title": "Uncaught Exceptions Thrown / Endpoint", + "transform": "timeseries_aggregations", + "type": "table" } - ] - } - ], - "title": "Throughput / Endpoint", - "transform": "timeseries_aggregations", - "type": "table" + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Endpoints", + "titleSize": "h6" }, { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "filterNull": false, - "fontSize": "100%", - "id": 11, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": null, - "desc": false - }, - "span": 6, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 0, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "percent" - } - ], - "targets": [ - { - "alias": "$tag_route", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__one_minute_error_percentage_rate_per_endpoint", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" + "collapse": false, + "height": "250", + "panels": [ + { + "columns": [ + { + "text": "Current", + "value": "current" + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" + "datasource": "$datasource", + "editable": true, + "error": false, + "filterNull": false, + "fontSize": "100%", + "hideTimeOverride": true, + "id": 22, + "interval": "", + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "span": 9, + "styles": [ + { + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "colorMode": "row", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 1, + "pattern": "/.*/", + "thresholds": [ + "0.5", + "1" + ], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "alias": "$tag_health_check_name", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "health_check_name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.health__results", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "timeFrom": null, + "title": "Results", + "transform": "timeseries_aggregations", + "transparent": true, + "type": "table" }, { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" + "cacheTimeout": null, + "colorBackground": true, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "$datasource", + "editable": true, + "error": false, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "hideTimeOverride": true, + "id": 19, + "interval": null, + "links": [ + { + "type": "dashboard" + } + ], + "mappingType": 2, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "0", + "text": "Unhealthy", + "to": "0.49" + }, + { + "from": "0.5", + "text": "Degraded", + "to": "0.9" + }, + { + "from": "1.0", + "text": "Healthy", + "to": "2.0" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.health__score", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "thresholds": "0.5,1", + "timeFrom": null, + "title": "", + "transparent": true, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "Unhealthy", + "value": "0" + }, + { + "op": "=", + "text": "Degraded", + "value": "0.5" + }, + { + "op": "=", + "text": "Healthy", + "value": "1.0" + } + ], + "valueName": "current" } - ] - } - ], - "title": "Error Request Percentage / Endpoint", - "transform": "timeseries_aggregations", - "type": "table" + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Health", + "titleSize": "h6" }, { - "columns": [ - { - "text": "Total", - "value": "total" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "filterNull": false, - "fontSize": "100%", - "id": 25, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "span": 6, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 0, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "none" - } - ], - "targets": [ - { - "alias": "$tag_route [$tag_exception]", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "route" - ], - "type": "tag" - }, - { - "params": [ - "exception" - ], - "type": "tag" - } - ], - "measurement": "application.httprequests__exceptions", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" + "collapse": false, + "height": "300", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "id": 14, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "hideEmpty": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__post_size", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p98" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "98th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p99" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "99th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "last" + ], + "type": "field" + }, + { + "params": [], + "type": "median" + }, + { + "params": [ + "median" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Post Request Size", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "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 + } + ] }, { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" + "aliasColors": {}, + "bars": false, + "datasource": "$datasource", + "editable": true, + "error": false, + "fill": 1, + "id": 15, + "interval": "$summarize", + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$col", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "application.httprequests__put_size", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "p95" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "95th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p98" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "98th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "p99" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + "99th percentile" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "median" + ], + "type": "field" + }, + { + "params": [], + "type": "median" + }, + { + "params": [ + "median" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "app", + "operator": "=~", + "value": "/^$application$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$environment$/" + }, + { + "condition": "AND", + "key": "server", + "operator": "=~", + "value": "/^$server$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Put Request Size", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] } - ] - } - ], - "title": "Uncaught Exceptions Thrown / Endpoint", - "transform": "timeseries_aggregations", - "type": "table" + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "PUT & POST Request Size", + "titleSize": "h6" } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Endpoints", - "titleSize": "h6" - }, - { - "collapse": true, - "height": "250", - "panels": [ - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "filterNull": false, - "fontSize": "100%", - "hideTimeOverride": true, - "id": 22, - "interval": "", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "span": 9, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "colorMode": "row", - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 1, - "pattern": "/.*/", - "thresholds": [ - "0.5", - "1" - ], - "type": "number", - "unit": "short" - } - ], - "targets": [ + ], + "schemaVersion": 14, + "style": "dark", + "tags": [ + "influxdb" + ], + "templating": { + "list": [ { - "alias": "$tag_health_check_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "health_check_name" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.health__results", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" + "allValue": null, + "current": { + "text": "stage", + "value": "stage" }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "timeFrom": null, - "title": "Results", - "transform": "timeseries_aggregations", - "transparent": true, - "type": "table" - }, - { - "cacheTimeout": null, - "colorBackground": true, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "hideTimeOverride": true, - "id": 19, - "interval": null, - "links": [ - { - "type": "dashboard" - } - ], - "mappingType": 2, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "0", - "text": "Unhealthy", - "to": "0.49" + "datasource": "$datasource", + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "environment", + "options": [], + "query": "SHOW TAG VALUES WITH KEY = \"env\"", + "refresh": 2, + "regex": "", + "sort": 1, + "tagValuesQuery": null, + "tags": [], + "tagsQuery": null, + "type": "query", + "useTags": false }, { - "from": "0.5", - "text": "Degraded", - "to": "0.9" - }, - { - "from": "1.0", - "text": "Healthy", - "to": "2.0" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "targets": [ - { - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.health__score", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "env", - "operator": "=~", - "value": "/^$environment$/" + "allValue": null, + "current": { + "text": "App.Metrics.InfluxDB.Sandbox", + "value": "App.Metrics.InfluxDB.Sandbox" }, - { - "condition": "AND", - "key": "app", - "operator": "=~", - "value": "/^$application$/" - } - ] - } - ], - "thresholds": "0.5,1", - "timeFrom": null, - "title": "", - "transparent": true, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "Unhealthy", - "value": "0" - }, - { - "op": "=", - "text": "Degraded", - "value": "0.5" + "datasource": "$datasource", + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "application", + "options": [], + "query": "SHOW TAG VALUES WITH KEY = \"app\"", + "refresh": 2, + "regex": "", + "sort": 1, + "tagValuesQuery": null, + "tags": [], + "tagsQuery": null, + "type": "query", + "useTags": false }, { - "op": "=", - "text": "Healthy", - "value": "1.0" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Health", - "titleSize": "h6" - }, - { - "collapse": true, - "height": "300", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "id": 14, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__post_size", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p98" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "98th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p99" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "99th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "last" - ], - "type": "field" - }, - { - "params": [], - "type": "median" - }, - { - "params": [ - "median" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" + "current": { + "text": "AppMetricsSandbox", + "value": "AppMetricsSandbox" }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Post Request Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "hide": 0, + "label": null, + "name": "datasource", + "options": [], + "query": "influxdb", + "refresh": 1, + "regex": "", + "type": "datasource" }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 1, - "id": 15, - "interval": "$summarize", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "$col", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" + "auto": false, + "auto_count": 30, + "auto_min": "10s", + "current": { + "text": "5s", + "value": "5s" }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "application.httprequests__put_size", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "p95" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "95th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p98" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "98th percentile" - ], - "type": "alias" - } - ], - [ - { - "params": [ - "p99" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - "99th percentile" - ], - "type": "alias" - } + "hide": 0, + "label": null, + "name": "summarize", + "options": [ + { + "selected": true, + "text": "5s", + "value": "5s" + }, + { + "selected": false, + "text": "10s", + "value": "10s" + }, + { + "selected": false, + "text": "30s", + "value": "30s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "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" + } ], - [ - { - "params": [ - "median" - ], - "type": "field" - }, - { - "params": [], - "type": "median" - }, - { - "params": [ - "median" - ], - "type": "alias" - } - ] - ], - "tags": [ - { - "key": "app", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "env", - "operator": "=~", - "value": "/^$environment$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Put Request Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "query": "5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d", + "refresh": 2, + "type": "interval" }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "$datasource", + "hide": 0, + "includeAll": true, + "label": null, + "multi": true, + "name": "server", + "options": [], + "query": "SHOW TAG VALUES WITH KEY = \"server\"", + "refresh": 2, + "regex": "", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "PUT & POST Request Size", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "influxdb" - ], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "environment", - "options": [], - "query": "SHOW TAG VALUES WITH KEY = \"env\"", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": null, - "tags": [], - "tagsQuery": null, - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "application", - "options": [], - "query": "SHOW TAG VALUES WITH KEY = \"app\"", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": null, - "tags": [], - "tagsQuery": null, - "type": "query", - "useTags": false - }, - { - "current": { - "text": "AppMetricsSandbox", - "value": "AppMetricsSandbox" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [], - "query": "influxdb", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5s", - "value": "5s" - }, - "hide": 0, - "label": null, - "name": "summarize", - "options": [ - { - "selected": true, - "text": "5s", - "value": "5s" - }, - { - "selected": false, - "text": "10s", - "value": "10s" - }, - { - "selected": false, - "text": "30s", - "value": "30s" - }, - { - "selected": false, - "text": "1m", - "value": "1m" - }, - { - "selected": false, - "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" - } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" ], - "query": "5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d", - "refresh": 2, - "type": "interval" - }, - { - "allValue": null, - "current": {}, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "server", - "options": [], - "query": "SHOW TAG VALUES WITH KEY = \"server\"", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "App Metrics - Web Monitoring - InfluxDB", - "version": 18 + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "App Metrics - Web Monitoring - InfluxDB", + "version": 20 } \ No newline at end of file From 00529890c3a571a7be14a08461f093abe89a8fe6 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sat, 27 May 2017 19:51:48 +1000 Subject: [PATCH 15/35] updating app.metrics packages and fixes line protocol tests with intrinsic tags added --- .../App.Metrics.InfluxDB.Sandbox.csproj | 10 ++--- .../App.Metrics.InfluxDB.Sandbox/Startup.cs | 23 +---------- ...trics.Extensions.Reporting.InfluxDB.csproj | 2 +- .../App.Metrics.Formatters.InfluxDB.csproj | 4 +- .../App.Metrics.Formatting.InfluxDB.csproj | 2 +- .../InfluxDbReporterTests.cs | 40 +++++++++---------- 6 files changed, 31 insertions(+), 50 deletions(-) diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index 131cf82..5805546 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,12 +9,12 @@ - + - - - - + + + + diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs index 0056874..abee3fa 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/Startup.cs @@ -1,5 +1,4 @@ using System; -using App.Metrics.Configuration; using App.Metrics.Extensions.Reporting.InfluxDB; using App.Metrics.Extensions.Reporting.InfluxDB.Client; using App.Metrics.Filtering; @@ -69,18 +68,7 @@ public void ConfigureServices(IServiceCollection services) var reportFilter = new DefaultMetricsFilter(); reportFilter.WithHealthChecks(false); - services.AddMetrics( - Configuration.GetSection("AppMetrics"), - options => - { - options.WithGlobalTags( - (globalTags, info) => - { - globalTags.Add("app", info.EntryAssemblyName); - globalTags.Add("server", info.MachineName); - globalTags.Add("version", info.EntryAssemblyVersion); - }); - }). + services.AddMetrics(Configuration.GetSection("AppMetrics")). AddAsciiHealthSerialization(). AddInfluxDBLineProtocolMetricsSerialization(). AddInfluxDBLineProtocolMetricsTextSerialization(). @@ -90,14 +78,7 @@ public void ConfigureServices(IServiceCollection services) factory.AddInfluxDb( new InfluxDBReporterSettings { - HttpPolicy = new HttpPolicy - { - FailuresBeforeBackoff = 3, - BackoffPeriod = TimeSpan.FromSeconds(30), - Timeout = TimeSpan.FromSeconds(10) - }, - InfluxDbSettings = new InfluxDBSettings(InfluxDbDatabase, InfluxDbUri), - ReportInterval = TimeSpan.FromSeconds(5) + InfluxDbSettings = new InfluxDBSettings(InfluxDbDatabase, InfluxDbUri) }, reportFilter); }). diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 4d445dc..7c0f33e 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -35,7 +35,7 @@ - + All diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index 127cd93..7e00491 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -36,8 +36,8 @@ - - + + diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index a90b110..d3ba2c6 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -36,7 +36,7 @@ - + diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs index 1f99aa5..ae97f42 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs @@ -81,7 +81,7 @@ public void can_report_apdex() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_apdex,mtype=apdex samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); + payloadBuilder.PayloadFormatted().Should().Be("test__test_apdex,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); } [Fact] @@ -103,7 +103,7 @@ public void can_report_apdex__when_multidimensional() payloadBuilder.PayloadFormatted(). Should(). - Be("test__test_apdex,host=server1,env=staging,mtype=apdex samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); + Be("test__test_apdex,host=server1,env=staging,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); } [Fact] @@ -125,7 +125,7 @@ public void can_report_apdex_with_tags() payloadBuilder.PayloadFormatted(). Should(). - Be("test__test_apdex,key1=value1,key2=value2,mtype=apdex samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); + Be("test__test_apdex,key1=value1,key2=value2,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); } [Fact] @@ -148,7 +148,7 @@ public void can_report_apdex_with_tags_when_multidimensional() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_apdex,host=server1,env=staging,anothertag=thevalue,mtype=apdex samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); + "test__test_apdex,host=server1,env=staging,anothertag=thevalue,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); } [Fact] @@ -172,7 +172,7 @@ public void can_report_counter_with_items() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_counter__items,item=item1:value1,mtype=counter total=1i,percent=50\ntest__test_counter__items,item=item2:value2,mtype=counter total=1i,percent=50\ntest__test_counter,mtype=counter value=2i\n"); + "test__test_counter__items,item=item1:value1,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter__items,item=item2:value2,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter,mtype=counter,unit=none value=2i\n"); } [Fact] @@ -196,7 +196,7 @@ public void can_report_counter_with_items_and_tags() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_counter__items,key1=value1,key2=value2,item=item1:value1,mtype=counter total=1i,percent=50\ntest__test_counter__items,key1=value1,key2=value2,item=item2:value2,mtype=counter total=1i,percent=50\ntest__test_counter,key1=value1,key2=value2,mtype=counter value=2i\n"); + "test__test_counter__items,key1=value1,key2=value2,item=item1:value1,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter__items,key1=value1,key2=value2,item=item2:value2,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter,key1=value1,key2=value2,mtype=counter,unit=none value=2i\n"); } [Fact] @@ -221,7 +221,7 @@ public void can_report_counter_with_items_tags_when_multidimensional() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_counter__items,host=server1,env=staging,key1=value1,key2=value2,item=item1:value1,mtype=counter total=1i,percent=50\ntest__test_counter__items,host=server1,env=staging,key1=value1,key2=value2,item=item2:value2,mtype=counter total=1i,percent=50\ntest__test_counter,host=server1,env=staging,key1=value1,key2=value2,mtype=counter value=2i\n"); + "test__test_counter__items,host=server1,env=staging,key1=value1,key2=value2,item=item1:value1,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter__items,host=server1,env=staging,key1=value1,key2=value2,item=item2:value2,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter,host=server1,env=staging,key1=value1,key2=value2,mtype=counter,unit=none value=2i\n"); } [Fact] @@ -246,7 +246,7 @@ public void can_report_counter_with_items_with_option_not_to_report_percentage() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_counter__items,item=item1:value1,mtype=counter total=1i\ntest__test_counter__items,item=item2:value2,mtype=counter total=1i\ntest__test_counter,mtype=counter value=2i\n"); + "test__test_counter__items,item=item1:value1,mtype=counter,unit=none total=1i\ntest__test_counter__items,item=item2:value2,mtype=counter,unit=none total=1i\ntest__test_counter,mtype=counter,unit=none value=2i\n"); } [Fact] @@ -266,7 +266,7 @@ public void can_report_counters() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_counter,mtype=counter value=1i\n"); + payloadBuilder.PayloadFormatted().Should().Be("test__test_counter,mtype=counter,unit=none value=1i\n"); } [Fact] @@ -286,7 +286,7 @@ public void can_report_counters__when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_counter,host=server1,env=staging,mtype=counter value=1i\n"); + payloadBuilder.PayloadFormatted().Should().Be("test__test_counter,host=server1,env=staging,mtype=counter,unit=none value=1i\n"); } [Fact] @@ -305,7 +305,7 @@ public void can_report_gauges() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", gaugeValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_gauge,mtype=gauge value=1\n"); + payloadBuilder.PayloadFormatted().Should().Be("test__test_gauge,mtype=gauge,unit=none value=1\n"); } [Fact] @@ -324,7 +324,7 @@ public void can_report_gauges__when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", gaugeValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__gauge-group,host=server1,env=staging,mtype=gauge value=1\n"); + payloadBuilder.PayloadFormatted().Should().Be("test__gauge-group,host=server1,env=staging,mtype=gauge,unit=none value=1\n"); } [Fact] @@ -347,7 +347,7 @@ public void can_report_histograms() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_histogram,mtype=histogram samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); + "test__test_histogram,mtype=histogram,unit=none samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); } [Fact] @@ -370,7 +370,7 @@ public void can_report_histograms_when_multidimensional() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_histogram,host=server1,env=staging,mtype=histogram samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); + "test__test_histogram,host=server1,env=staging,mtype=histogram,unit=none samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); } [Fact] @@ -392,7 +392,7 @@ public void can_report_meters() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", meterValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_meter,mtype=meter count.meter=1i,rate1m=0,rate5m=0,rate15m=0\n"); + payloadBuilder.PayloadFormatted().Should().Be("test__test_meter,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0\n"); } [Fact] @@ -416,7 +416,7 @@ public void can_report_meters_when_multidimensional() payloadBuilder.PayloadFormatted(). Should(). - Be("test__test_meter,host=server1,env=staging,mtype=meter count.meter=1i,rate1m=0,rate5m=0,rate15m=0\n"); + Be("test__test_meter,host=server1,env=staging,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0\n"); } [Fact] @@ -442,7 +442,7 @@ public void can_report_meters_with_items() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_meter__items,item=item1:value1,mtype=meter count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter__items,item=item2:value2,mtype=meter count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter,mtype=meter count.meter=2i,rate1m=0,rate5m=0,rate15m=0\n"); + "test__test_meter__items,item=item1:value1,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter__items,item=item2:value2,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter,mtype=meter,unit=none,unit_rate=ms count.meter=2i,rate1m=0,rate5m=0,rate15m=0\n"); } [Fact] @@ -468,7 +468,7 @@ public void can_report_meters_with_items_tags_when_multidimensional() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_meter__items,host=server1,env=staging,item=item1:value1,mtype=meter count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter__items,host=server1,env=staging,item=item2:value2,mtype=meter count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter,host=server1,env=staging,mtype=meter count.meter=2i,rate1m=0,rate5m=0,rate15m=0\n"); + "test__test_meter__items,host=server1,env=staging,item=item1:value1,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter__items,host=server1,env=staging,item=item2:value2,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter,host=server1,env=staging,mtype=meter,unit=none,unit_rate=ms count.meter=2i,rate1m=0,rate5m=0,rate15m=0\n"); } [Fact] @@ -494,7 +494,7 @@ public void can_report_timers() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_timer,mtype=timer count.meter=1i,rate1m=0,rate5m=0,rate15m=0,samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); + "test__test_timer,mtype=timer,unit=none,unit_dur=ms,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); } [Fact] @@ -520,7 +520,7 @@ public void can_report_timers__when_multidimensional() payloadBuilder.PayloadFormatted(). Should(). Be( - "test__test_timer,host=server1,env=staging,mtype=timer count.meter=1i,rate1m=0,rate5m=0,rate15m=0,samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); + "test__test_timer,host=server1,env=staging,mtype=timer,unit=none,unit_dur=ms,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); } [Fact] From 03abbcd0c2323ffb73b08e1218adfe68985bee94 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sat, 27 May 2017 22:21:48 +1000 Subject: [PATCH 16/35] #10 passing mpoint timepstamp client side --- src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs index fa8d4b3..2d39973 100644 --- a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs @@ -83,12 +83,14 @@ public void Format(TextWriter textWriter) textWriter.Write(LineProtocolSyntax.FormatValue(f.Value)); } + textWriter.Write(' '); + if (UtcTimestamp == null) { + textWriter.Write(LineProtocolSyntax.FormatTimestamp(DateTime.UtcNow)); return; } - textWriter.Write(' '); textWriter.Write(LineProtocolSyntax.FormatTimestamp(UtcTimestamp.Value)); } } From 4f6b870ce168bdd1b7985f212078635802a24e03 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sat, 27 May 2017 22:39:02 +1000 Subject: [PATCH 17/35] #10 fixing tests by allowing overriding of setting point timestamp --- .../LineProtocolPayload.cs | 4 +- .../LineProtocolPayloadBuilder.cs | 7 ++++ .../LineProtocolPoint.cs | 7 +++- .../Client/LineProtocolPointTests.cs | 2 +- .../InfluxDbReporterTests.cs | 40 +++++++++---------- 5 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayload.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayload.cs index 8b8c003..eb70a0e 100644 --- a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayload.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayload.cs @@ -22,7 +22,7 @@ public void Add(LineProtocolPoint point) _points.Add(point); } - public void Format(TextWriter textWriter) + public void Format(TextWriter textWriter, bool writeTimestamp = true) { if (textWriter == null) { @@ -33,7 +33,7 @@ public void Format(TextWriter textWriter) foreach (var point in points) { - point.Format(textWriter); + point.Format(textWriter, writeTimestamp); textWriter.Write('\n'); } } diff --git a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs index 43fece5..2845a11 100644 --- a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPayloadBuilder.cs @@ -65,5 +65,12 @@ public string PayloadFormatted() _payload.Format(result); return result.ToString(); } + + public string PayloadFormatted(bool writeTimestamp) + { + var result = new StringWriter(); + _payload.Format(result, writeTimestamp); + return result.ToString(); + } } } \ No newline at end of file diff --git a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs index 2d39973..c723e00 100644 --- a/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs +++ b/src/App.Metrics.Formatting.InfluxDB/LineProtocolPoint.cs @@ -52,7 +52,7 @@ public LineProtocolPoint( public DateTime? UtcTimestamp { get; } - public void Format(TextWriter textWriter) + public void Format(TextWriter textWriter, bool writeTimestamp = true) { if (textWriter == null) { @@ -83,6 +83,11 @@ public void Format(TextWriter textWriter) textWriter.Write(LineProtocolSyntax.FormatValue(f.Value)); } + if (!writeTimestamp) + { + return; + } + textWriter.Write(' '); if (UtcTimestamp == null) diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs index fcbd55a..245231f 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/Client/LineProtocolPointTests.cs @@ -46,7 +46,7 @@ public void can_format_payload_correctly_without_providing_timestamp() var fields = new Dictionary { { "key", "value" } }; var point = new LineProtocolPoint("measurement", fields, MetricTags.Empty); - point.Format(textWriter); + point.Format(textWriter, false); textWriter.ToString().Should().Be("measurement key=\"value\""); } diff --git a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs index ae97f42..87dee53 100644 --- a/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs +++ b/test/App.Metrics.Extensions.Reporting.InfluxDB.Facts/InfluxDbReporterTests.cs @@ -81,7 +81,7 @@ public void can_report_apdex() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_apdex,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); + payloadBuilder.PayloadFormatted(false).Should().Be("test__test_apdex,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); } [Fact] @@ -101,7 +101,7 @@ public void can_report_apdex__when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be("test__test_apdex,host=server1,env=staging,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); } @@ -123,7 +123,7 @@ public void can_report_apdex_with_tags() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be("test__test_apdex,key1=value1,key2=value2,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); } @@ -145,7 +145,7 @@ public void can_report_apdex_with_tags_when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_apdex,host=server1,env=staging,anothertag=thevalue,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); @@ -169,7 +169,7 @@ public void can_report_counter_with_items() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_counter__items,item=item1:value1,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter__items,item=item2:value2,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter,mtype=counter,unit=none value=2i\n"); @@ -193,7 +193,7 @@ public void can_report_counter_with_items_and_tags() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_counter__items,key1=value1,key2=value2,item=item1:value1,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter__items,key1=value1,key2=value2,item=item2:value2,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter,key1=value1,key2=value2,mtype=counter,unit=none value=2i\n"); @@ -218,7 +218,7 @@ public void can_report_counter_with_items_tags_when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_counter__items,host=server1,env=staging,key1=value1,key2=value2,item=item1:value1,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter__items,host=server1,env=staging,key1=value1,key2=value2,item=item2:value2,mtype=counter,unit=none total=1i,percent=50\ntest__test_counter,host=server1,env=staging,key1=value1,key2=value2,mtype=counter,unit=none value=2i\n"); @@ -243,7 +243,7 @@ public void can_report_counter_with_items_with_option_not_to_report_percentage() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_counter__items,item=item1:value1,mtype=counter,unit=none total=1i\ntest__test_counter__items,item=item2:value2,mtype=counter,unit=none total=1i\ntest__test_counter,mtype=counter,unit=none value=2i\n"); @@ -266,7 +266,7 @@ public void can_report_counters() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_counter,mtype=counter,unit=none value=1i\n"); + payloadBuilder.PayloadFormatted(false).Should().Be("test__test_counter,mtype=counter,unit=none value=1i\n"); } [Fact] @@ -286,7 +286,7 @@ public void can_report_counters__when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", counterValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_counter,host=server1,env=staging,mtype=counter,unit=none value=1i\n"); + payloadBuilder.PayloadFormatted(false).Should().Be("test__test_counter,host=server1,env=staging,mtype=counter,unit=none value=1i\n"); } [Fact] @@ -305,7 +305,7 @@ public void can_report_gauges() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", gaugeValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_gauge,mtype=gauge,unit=none value=1\n"); + payloadBuilder.PayloadFormatted(false).Should().Be("test__test_gauge,mtype=gauge,unit=none value=1\n"); } [Fact] @@ -324,7 +324,7 @@ public void can_report_gauges__when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", gaugeValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__gauge-group,host=server1,env=staging,mtype=gauge,unit=none value=1\n"); + payloadBuilder.PayloadFormatted(false).Should().Be("test__gauge-group,host=server1,env=staging,mtype=gauge,unit=none value=1\n"); } [Fact] @@ -344,7 +344,7 @@ public void can_report_histograms() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", histogramValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_histogram,mtype=histogram,unit=none samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); @@ -367,7 +367,7 @@ public void can_report_histograms_when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", histogramValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_histogram,host=server1,env=staging,mtype=histogram,unit=none samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); @@ -392,7 +392,7 @@ public void can_report_meters() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", meterValueSource); - payloadBuilder.PayloadFormatted().Should().Be("test__test_meter,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0\n"); + payloadBuilder.PayloadFormatted(false).Should().Be("test__test_meter,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0\n"); } [Fact] @@ -414,7 +414,7 @@ public void can_report_meters_when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", meterValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be("test__test_meter,host=server1,env=staging,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0\n"); } @@ -439,7 +439,7 @@ public void can_report_meters_with_items() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", meterValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_meter__items,item=item1:value1,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter__items,item=item2:value2,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter,mtype=meter,unit=none,unit_rate=ms count.meter=2i,rate1m=0,rate5m=0,rate15m=0\n"); @@ -465,7 +465,7 @@ public void can_report_meters_with_items_tags_when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", meterValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_meter__items,host=server1,env=staging,item=item1:value1,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter__items,host=server1,env=staging,item=item2:value2,mtype=meter,unit=none,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,percent=50\ntest__test_meter,host=server1,env=staging,mtype=meter,unit=none,unit_rate=ms count.meter=2i,rate1m=0,rate5m=0,rate15m=0\n"); @@ -491,7 +491,7 @@ public void can_report_timers() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", timerValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_timer,mtype=timer,unit=none,unit_dur=ms,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); @@ -517,7 +517,7 @@ public void can_report_timers__when_multidimensional() reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", timerValueSource); - payloadBuilder.PayloadFormatted(). + payloadBuilder.PayloadFormatted(false). Should(). Be( "test__test_timer,host=server1,env=staging,mtype=timer,unit=none,unit_dur=ms,unit_rate=ms count.meter=1i,rate1m=0,rate5m=0,rate15m=0,samples=1i,last=1000,count.hist=1i,sum=1000,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n"); From b783c2ffa1e25bc2af14aea92b47b3668d541056 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 10:56:01 +1000 Subject: [PATCH 18/35] Test Travis buid without coverage report gen --- build.cake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index 0f5ef41..1994982 100644 --- a/build.cake +++ b/build.cake @@ -9,7 +9,7 @@ #tool "nuget:?package=JetBrains.ReSharper.CommandLineTools" #tool "nuget:?package=coveralls.io" #tool "nuget:?package=gitreleasemanager" -#tool "nuget:?package=ReportGenerator" +// #tool "nuget:?package=ReportGenerator" ////////////////////////////////////////////////////////////////////// // ARGUMENTS @@ -29,6 +29,7 @@ var buildNumber = HasArgument("BuildNumber") ? Argument("Bu EnvironmentVariable("BuildNumber") != null ? int.Parse(EnvironmentVariable("BuildNumber")) : 0; var gitUser = HasArgument("GitUser") ? Argument("GitUser") : EnvironmentVariable("GitUser"); var gitPassword = HasArgument("GitPassword") ? Argument("GitPassword") : EnvironmentVariable("GitPassword"); +var generateHtmlCoverageReport = false; ////////////////////////////////////////////////////////////////////// // DEFINE FILES & DIRECTORIES @@ -231,7 +232,7 @@ Task("RunTests") }); Task("HtmlCoverageReport") - .WithCriteria(() => FileExists(testOCoverageOutputFilePath) && coverWith != "None" && IsRunningOnWindows()) + .WithCriteria(() => FileExists(testOCoverageOutputFilePath) && coverWith != "None" && IsRunningOnWindows() && generateHtmlCoverageReport) .IsDependentOn("RunTests") .Does(() => { From 171222d145b5fbeab6480ea5672205b34bfab033 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 11:00:51 +1000 Subject: [PATCH 19/35] renabling html coverage report, travis still failing, must be the use of common.props on msbuild --- build.cake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index 1994982..75b2a55 100644 --- a/build.cake +++ b/build.cake @@ -9,7 +9,7 @@ #tool "nuget:?package=JetBrains.ReSharper.CommandLineTools" #tool "nuget:?package=coveralls.io" #tool "nuget:?package=gitreleasemanager" -// #tool "nuget:?package=ReportGenerator" +#tool "nuget:?package=ReportGenerator" ////////////////////////////////////////////////////////////////////// // ARGUMENTS @@ -29,7 +29,7 @@ var buildNumber = HasArgument("BuildNumber") ? Argument("Bu EnvironmentVariable("BuildNumber") != null ? int.Parse(EnvironmentVariable("BuildNumber")) : 0; var gitUser = HasArgument("GitUser") ? Argument("GitUser") : EnvironmentVariable("GitUser"); var gitPassword = HasArgument("GitPassword") ? Argument("GitPassword") : EnvironmentVariable("GitPassword"); -var generateHtmlCoverageReport = false; +var generateHtmlCoverageReport = Argument("SkipHtmlCoverageReport", true) || !IsRunningOnWindows(); ////////////////////////////////////////////////////////////////////// // DEFINE FILES & DIRECTORIES From f65eff01b07ef254da520196b9b6f213202a9606 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 11:05:38 +1000 Subject: [PATCH 20/35] BUILDFIX - fixing common.props path for non-windows --- build.cake | 4 ++-- .../App.Metrics.Extensions.Reporting.InfluxDB.csproj | 2 +- .../App.Metrics.Formatters.InfluxDB.csproj | 2 +- .../App.Metrics.Formatting.InfluxDB.csproj | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.cake b/build.cake index 75b2a55..7e0ae13 100644 --- a/build.cake +++ b/build.cake @@ -29,7 +29,7 @@ var buildNumber = HasArgument("BuildNumber") ? Argument("Bu EnvironmentVariable("BuildNumber") != null ? int.Parse(EnvironmentVariable("BuildNumber")) : 0; var gitUser = HasArgument("GitUser") ? Argument("GitUser") : EnvironmentVariable("GitUser"); var gitPassword = HasArgument("GitPassword") ? Argument("GitPassword") : EnvironmentVariable("GitPassword"); -var generateHtmlCoverageReport = Argument("SkipHtmlCoverageReport", true) || !IsRunningOnWindows(); +var skipHtmlCoverageReport = Argument("SkipHtmlCoverageReport", true) || !IsRunningOnWindows(); ////////////////////////////////////////////////////////////////////// // DEFINE FILES & DIRECTORIES @@ -232,7 +232,7 @@ Task("RunTests") }); Task("HtmlCoverageReport") - .WithCriteria(() => FileExists(testOCoverageOutputFilePath) && coverWith != "None" && IsRunningOnWindows() && generateHtmlCoverageReport) + .WithCriteria(() => FileExists(testOCoverageOutputFilePath) && coverWith != "None" && IsRunningOnWindows() && !skipHtmlCoverageReport) .IsDependentOn("RunTests") .Does(() => { diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 7c0f33e..0af91df 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -2,7 +2,7 @@ - + Provides InfluxDB reporting capability to App Metrics diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index 7e00491..58ce44b 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -2,7 +2,7 @@ - + App Metrics Middleware Response Formatter. Allows metrics data to be formatted in InfluxDB formats e.g. Line Protocol diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index d3ba2c6..0f64396 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -2,7 +2,7 @@ - + App Metrics Formatting, formatting metrics data to InfluxDB formats e.g. Line Protocol From aed2b6f2375ea7479b4dcbe2ee246093fa251281 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 11:15:27 +1000 Subject: [PATCH 21/35] BUILDFIX - wildcard pre-release versions --- .../App.Metrics.Extensions.Reporting.InfluxDB.csproj | 4 ++-- .../App.Metrics.Formatters.InfluxDB.csproj | 6 +++--- .../App.Metrics.Formatting.InfluxDB.csproj | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 0af91df..1964394 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -2,7 +2,7 @@ - + Provides InfluxDB reporting capability to App Metrics @@ -35,7 +35,7 @@ - + All diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index 58ce44b..5e0d1bb 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -2,7 +2,7 @@ - + App Metrics Middleware Response Formatter. Allows metrics data to be formatted in InfluxDB formats e.g. Line Protocol @@ -36,8 +36,8 @@ - - + + diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index 0f64396..6d475cc 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -2,7 +2,7 @@ - + App Metrics Formatting, formatting metrics data to InfluxDB formats e.g. Line Protocol @@ -36,7 +36,7 @@ - + From ee13c65288b137d7d6ef9382fdd9a550d65d1a9b Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 12:55:15 +1000 Subject: [PATCH 22/35] setting package versions for next release --- .../App.Metrics.InfluxDB.Sandbox.csproj | 10 +++++----- .../App.Metrics.Extensions.Reporting.InfluxDB.csproj | 2 +- .../App.Metrics.Formatters.InfluxDB.csproj | 2 +- .../App.Metrics.Formatting.InfluxDB.csproj | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index 5805546..b270dc3 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,12 +9,12 @@ - + - - - - + + + + diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 1964394..52dfbc0 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -11,7 +11,7 @@ App.Metrics.Extensions.Reporting.InfluxDB App.Metrics.Extensions.Reporting.InfluxDB Metrics;Monitoring;Instrumentation;Reporting;InfluxDB - 1.2.0 + 1.2.0-alpha diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index 5e0d1bb..5ca4cc4 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -11,7 +11,7 @@ App.Metrics.Formatters.InfluxDB App.Metrics.Formatters.InfluxDB Metrics;Monitoring;Instrumentation;InfluxDB - 1.0.0 + 1.0.0-alpha diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index 6d475cc..57e2594 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -11,7 +11,7 @@ App.Metrics.Formatting.InfluxDB App.Metrics.Formatting.InfluxDB Metrics;Monitoring;Instrumentation;InfluxDB - 1.0.0 + 1.0.0-alpha From 4d44206661aec46878acbe00c409df56859440f9 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 13:06:29 +1000 Subject: [PATCH 23/35] removing appveyor setting of pre-release suffix --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 2bcbfcc..4f1eae0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ image: Visual Studio 2017 environment: COVERALLS_REPO_TOKEN: secure: jE+uYnSDVrBExOFkaPPHpJeKfHxVuS+lYvS+8BlcKBTSioz25h+rBq3RxMGl9JBd - PreReleaseSuffix: alpha + PreReleaseSuffix: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true DOTNET_CLI_TELEMETRY_OPTOUT: true GitUser: From 00c4cca36047788642aedd203606f191e5bbcb33 Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 13:15:11 +1000 Subject: [PATCH 24/35] adding build number when not tagged --- build.cake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.cake b/build.cake index 7e0ae13..b768bcc 100644 --- a/build.cake +++ b/build.cake @@ -171,6 +171,10 @@ Task("Pack") { versionSuffix = preReleaseSuffix + "-" + buildNumber.ToString("D4"); } + else if (!AppVeyor.Environment.Repository.Tag.IsTag) + { + versionSuffix = "-" + buildNumber.ToString("D4"); + } Context.Information("Packing using versionSuffix: " + versionSuffix); From 6ff480cd5fbe116fd58cef343c06ad243ef0e9fb Mon Sep 17 00:00:00 2001 From: alhardy Date: Sun, 28 May 2017 13:21:58 +1000 Subject: [PATCH 25/35] fix double hypon in pre-release versions --- build.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.cake b/build.cake index b768bcc..a1cd7ef 100644 --- a/build.cake +++ b/build.cake @@ -173,7 +173,7 @@ Task("Pack") } else if (!AppVeyor.Environment.Repository.Tag.IsTag) { - versionSuffix = "-" + buildNumber.ToString("D4"); + versionSuffix = buildNumber.ToString("D4"); } Context.Information("Packing using versionSuffix: " + versionSuffix); From e0dabcfd0ad7fbd3644ac8230e3a2d5ebf6e108f Mon Sep 17 00:00:00 2001 From: alhardy Date: Tue, 30 May 2017 19:58:19 +1000 Subject: [PATCH 26/35] App.Metrics #146 - Fixing pre-release package versions on project references --- appveyor.yml | 2 +- build.cake | 32 ++++++++----------- ...trics.Extensions.Reporting.InfluxDB.csproj | 2 +- .../App.Metrics.Formatters.InfluxDB.csproj | 2 +- .../App.Metrics.Formatting.InfluxDB.csproj | 2 +- 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 4f1eae0..2bcbfcc 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ image: Visual Studio 2017 environment: COVERALLS_REPO_TOKEN: secure: jE+uYnSDVrBExOFkaPPHpJeKfHxVuS+lYvS+8BlcKBTSioz25h+rBq3RxMGl9JBd - PreReleaseSuffix: + PreReleaseSuffix: alpha DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true DOTNET_CLI_TELEMETRY_OPTOUT: true GitUser: diff --git a/build.cake b/build.cake index a1cd7ef..859bb5d 100644 --- a/build.cake +++ b/build.cake @@ -29,7 +29,7 @@ var buildNumber = HasArgument("BuildNumber") ? Argument("Bu EnvironmentVariable("BuildNumber") != null ? int.Parse(EnvironmentVariable("BuildNumber")) : 0; var gitUser = HasArgument("GitUser") ? Argument("GitUser") : EnvironmentVariable("GitUser"); var gitPassword = HasArgument("GitPassword") ? Argument("GitPassword") : EnvironmentVariable("GitPassword"); -var skipHtmlCoverageReport = Argument("SkipHtmlCoverageReport", true) || !IsRunningOnWindows(); +var skipHtmlCoverageReport = Argument("SkipHtmlCoverageReport", true) || !IsRunningOnWindows(); ////////////////////////////////////////////////////////////////////// // DEFINE FILES & DIRECTORIES @@ -59,6 +59,7 @@ var openCoverExcludeFile = "*/*Designer.cs;*/*.g.cs;*/*.g.i.cs"; var coverIncludeFilter = "+:App.Metrics*"; var coverExcludeFilter = "-:*.Facts"; var excludeFromCoverage = "*.AppMetricsExcludeFromCodeCoverage*"; +var versionSuffix = !string.IsNullOrEmpty(preReleaseSuffix) ? preReleaseSuffix + "-" + buildNumber.ToString("D4") : !AppVeyor.Environment.Repository.Tag.IsTag ? buildNumber.ToString("D4") : null; ////////////////////////////////////////////////////////////////////// // TASKS @@ -116,7 +117,13 @@ Task("Build") .IsDependentOn("Restore") .Does(() => { - var settings = new DotNetCoreBuildSettings { Configuration = configuration }; + var settings = new DotNetCoreBuildSettings { Configuration = configuration, VersionSuffix = versionSuffix }; + + Context.Information("Building using preReleaseSuffix: " + preReleaseSuffix); + Context.Information("Building using versionSuffix: " + versionSuffix); + + // Workaround to fixing pre-release version package references - https://github.com/NuGet/Home/issues/4337 + settings.ArgumentCustomization = args=>args.Append("/t:Restore"); if (IsRunningOnWindows()) { @@ -165,17 +172,6 @@ Task("Pack") } Context.Information("Packing using preReleaseSuffix: " + preReleaseSuffix); - - string versionSuffix = null; - if (!string.IsNullOrEmpty(preReleaseSuffix)) - { - versionSuffix = preReleaseSuffix + "-" + buildNumber.ToString("D4"); - } - else if (!AppVeyor.Environment.Repository.Tag.IsTag) - { - versionSuffix = buildNumber.ToString("D4"); - } - Context.Information("Packing using versionSuffix: " + versionSuffix); var settings = new DotNetCorePackSettings @@ -399,19 +395,19 @@ Task("PublishCoverage") ////////////////////////////////////////////////////////////////////// Task("Default") - .IsDependentOn("Build") + .IsDependentOn("Build") .IsDependentOn("PublishTestResults") - .IsDependentOn("Pack") + .IsDependentOn("Pack") .IsDependentOn("HtmlCoverageReport") .IsDependentOn("RunInspectCode"); Task("AppVeyor") - .IsDependentOn("Build") + .IsDependentOn("Build") .IsDependentOn("PublishTestResults") - .IsDependentOn("Pack") + .IsDependentOn("Pack") .IsDependentOn("HtmlCoverageReport") .IsDependentOn("RunInspectCode") - .IsDependentOn("PublishCoverage") + .IsDependentOn("PublishCoverage") .IsDependentOn("ReleaseNotes"); ////////////////////////////////////////////////////////////////////// diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 52dfbc0..1964394 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -11,7 +11,7 @@ App.Metrics.Extensions.Reporting.InfluxDB App.Metrics.Extensions.Reporting.InfluxDB Metrics;Monitoring;Instrumentation;Reporting;InfluxDB - 1.2.0-alpha + 1.2.0 diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index 5ca4cc4..5e0d1bb 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -11,7 +11,7 @@ App.Metrics.Formatters.InfluxDB App.Metrics.Formatters.InfluxDB Metrics;Monitoring;Instrumentation;InfluxDB - 1.0.0-alpha + 1.0.0 diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index 57e2594..6d475cc 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -11,7 +11,7 @@ App.Metrics.Formatting.InfluxDB App.Metrics.Formatting.InfluxDB Metrics;Monitoring;Instrumentation;InfluxDB - 1.0.0-alpha + 1.0.0 From d74d199f7f7e14017ccb5c133fecc0c667b36b21 Mon Sep 17 00:00:00 2001 From: alhardy Date: Tue, 30 May 2017 20:02:39 +1000 Subject: [PATCH 27/35] BUILDFIX - wildcard versions in sandbox project --- .../App.Metrics.InfluxDB.Sandbox.csproj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index b270dc3..941844e 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,12 +9,12 @@ - + - - - - + + + + From 2f2a926adca7ba708628f9e4b27dbc49ac38d348 Mon Sep 17 00:00:00 2001 From: alhardy Date: Tue, 30 May 2017 20:39:13 +1000 Subject: [PATCH 28/35] BUILDFIX - Adding myget as package source --- build.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.cake b/build.cake index 859bb5d..ab3bfe8 100644 --- a/build.cake +++ b/build.cake @@ -123,7 +123,7 @@ Task("Build") Context.Information("Building using versionSuffix: " + versionSuffix); // Workaround to fixing pre-release version package references - https://github.com/NuGet/Home/issues/4337 - settings.ArgumentCustomization = args=>args.Append("/t:Restore"); + settings.ArgumentCustomization = args=>args.Append("/t:Restore /p:RestoreSources=https://api.nuget.org/v3/index.json;https://www.myget.org/F/alhardy/api/v3/index.json;" + @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"""); if (IsRunningOnWindows()) { From a28f6be65b727c270fb37cf99b4015b10d6ad368 Mon Sep 17 00:00:00 2001 From: alhardy Date: Tue, 30 May 2017 20:42:35 +1000 Subject: [PATCH 29/35] BUILD UPDATE - add MS SDK local packages as package source --- build.cake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index ab3bfe8..f683cb1 100644 --- a/build.cake +++ b/build.cake @@ -107,7 +107,7 @@ Task("Restore") { var settings = new DotNetCoreRestoreSettings { - Sources = new [] { "https://api.nuget.org/v3/index.json", "https://www.myget.org/F/alhardy/api/v3/index.json" } + Sources = new [] { @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\""", "https://api.nuget.org/v3/index.json", "https://www.myget.org/F/alhardy/api/v3/index.json" } }; DotNetCoreRestore(solutionFile, settings); @@ -123,7 +123,7 @@ Task("Build") Context.Information("Building using versionSuffix: " + versionSuffix); // Workaround to fixing pre-release version package references - https://github.com/NuGet/Home/issues/4337 - settings.ArgumentCustomization = args=>args.Append("/t:Restore /p:RestoreSources=https://api.nuget.org/v3/index.json;https://www.myget.org/F/alhardy/api/v3/index.json;" + @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"""); + settings.ArgumentCustomization = args=>args.Append("/t:Restore /p:RestoreSources=" + @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"""+ https://api.nuget.org/v3/index.json;https://www.myget.org/F/alhardy/api/v3/index.json;"); if (IsRunningOnWindows()) { From 46a26a00706deb194c49a6025ae2baac7d78b362 Mon Sep 17 00:00:00 2001 From: alhardy Date: Tue, 30 May 2017 20:44:47 +1000 Subject: [PATCH 30/35] BUILDFIX - package sources on build --- build.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.cake b/build.cake index f683cb1..cbcbe2a 100644 --- a/build.cake +++ b/build.cake @@ -123,7 +123,7 @@ Task("Build") Context.Information("Building using versionSuffix: " + versionSuffix); // Workaround to fixing pre-release version package references - https://github.com/NuGet/Home/issues/4337 - settings.ArgumentCustomization = args=>args.Append("/t:Restore /p:RestoreSources=" + @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"""+ https://api.nuget.org/v3/index.json;https://www.myget.org/F/alhardy/api/v3/index.json;"); + settings.ArgumentCustomization = args=>args.Append("/t:Restore /p:RestoreSources=" + @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\""" + ";https://api.nuget.org/v3/index.json;https://www.myget.org/F/alhardy/api/v3/index.json;"); if (IsRunningOnWindows()) { From abe3f70447ec232e2ea49cca746b7a59265900f7 Mon Sep 17 00:00:00 2001 From: alhardy Date: Tue, 30 May 2017 20:47:43 +1000 Subject: [PATCH 31/35] BUILDFIX - removing local package source on restore --- build.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.cake b/build.cake index cbcbe2a..df90b6e 100644 --- a/build.cake +++ b/build.cake @@ -107,7 +107,7 @@ Task("Restore") { var settings = new DotNetCoreRestoreSettings { - Sources = new [] { @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\""", "https://api.nuget.org/v3/index.json", "https://www.myget.org/F/alhardy/api/v3/index.json" } + Sources = new [] { "https://api.nuget.org/v3/index.json", "https://www.myget.org/F/alhardy/api/v3/index.json" } }; DotNetCoreRestore(solutionFile, settings); From a2af027702a7d62a7883fa67bcd18b953ff42dff Mon Sep 17 00:00:00 2001 From: alhardy Date: Tue, 30 May 2017 23:45:43 +1000 Subject: [PATCH 32/35] updating ap.metrics packages to latest on nuget --- .../App.Metrics.InfluxDB.Sandbox.csproj | 12 ++++++------ .../App.Metrics.Extensions.Reporting.InfluxDB.csproj | 2 +- .../App.Metrics.Formatters.InfluxDB.csproj | 4 ++-- .../App.Metrics.Formatting.InfluxDB.csproj | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index 941844e..220c78a 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,12 +9,12 @@ - - - - - - + + + + + + diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 1964394..0c566c6 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -35,7 +35,7 @@ - + All diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index 5e0d1bb..c8606ac 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -36,8 +36,8 @@ - - + + diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index 6d475cc..89b2bef 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -36,7 +36,7 @@ - + From 276774802275d8362a39e130058ac1e5770e2eb2 Mon Sep 17 00:00:00 2001 From: alhardy Date: Wed, 31 May 2017 10:00:31 +1000 Subject: [PATCH 33/35] adding formatter packages to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b999b19..03fba52 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ The repo contains InfluxDB extension packages to [App Metrics](https://github.co |Package|Dev Release|PreRelease|Latest Release| |------|:--------:|:--------:|:--------:| |App.Metrics.Extensions.Reporting.InfluxDB|[![MyGet Status](https://img.shields.io/myget/alhardy/v/App.Metrics.Extensions.Reporting.InfluxDB.svg?style=flat-square)](https://www.myget.org/feed/alhardy/package/nuget/App.Metrics.Extensions.Reporting.InfluxDB)|[![NuGet Status](https://img.shields.io/nuget/vpre/App.Metrics.Extensions.Reporting.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Extensions.Reporting.InfluxDB/)|[![NuGet Status](https://img.shields.io/nuget/v/App.Metrics.Extensions.Reporting.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Extensions.Reporting.InfluxDB/) +|App.Metrics.Formatters.InfluxDB|[![MyGet Status](https://img.shields.io/myget/alhardy/v/App.Metrics.Formatters.InfluxDB.svg?style=flat-square)](https://www.myget.org/feed/alhardy/package/nuget/App.Metrics.Formatters.InfluxDB)|[![NuGet Status](https://img.shields.io/nuget/vpre/App.Metrics.Formatters.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Formatters.InfluxDB/)|[![NuGet Status](https://img.shields.io/nuget/v/App.Metrics.Formatters.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Formatters.InfluxDB/) +|App.Metrics.Formatting.InfluxDB|[![MyGet Status](https://img.shields.io/myget/alhardy/v/App.Metrics.Formatting.InfluxDB.svg?style=flat-square)](https://www.myget.org/feed/alhardy/package/nuget/App.Metrics.Formatting.InfluxDB)|[![NuGet Status](https://img.shields.io/nuget/vpre/App.Metrics.Formatting.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Formatting.InfluxDB/)|[![NuGet Status](https://img.shields.io/nuget/v/App.Metrics.Formatting.InfluxDB.svg?style=flat-square)](https://www.nuget.org/packages/App.Metrics.Formatting.InfluxDB/) #### Grafana/InfluxDB Web Monitoring From 74847cc9ecfedd2a241bd461df462801e15ea796 Mon Sep 17 00:00:00 2001 From: alhardy Date: Thu, 1 Jun 2017 20:52:31 +1000 Subject: [PATCH 34/35] travis build fix --- .travis.yml | 16 ++++---- build.cake | 17 ++++++-- build.sh | 32 ++++++++++++++- build_travis.sh | 101 ------------------------------------------------ 4 files changed, 54 insertions(+), 112 deletions(-) delete mode 100755 build_travis.sh diff --git a/.travis.yml b/.travis.yml index 039b347..f8cd793 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,12 +4,14 @@ notifications: - al_hardy@live.com.au language: csharp -# dotnet: 1.0.0-preview2-003131 +dotnet: 1.0.4 os: - - osx +# - osx - linux +before_script: + - chmod a+x ./build.sh script: - - ./build_travis.sh + - ./build.sh # .NET CLI require Ubuntu 14.04 sudo: required @@ -24,11 +26,11 @@ addons: - libunwind8 # .NET CLI require OSX 10.10 -osx_image: xcode7.1 -before_install: - - if test "$TRAVIS_OS_NAME" == "osx"; then brew update; brew install openssl; ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/; ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/; fi +# osx_image: xcode7.1 +# before_install: +# - if test "$TRAVIS_OS_NAME" == "osx"; then brew update; brew install openssl; ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/; ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/; fi -mono: +mono: - 4.6.0 cache: diff --git a/build.cake b/build.cake index df90b6e..4accd7d 100644 --- a/build.cake +++ b/build.cake @@ -59,7 +59,17 @@ var openCoverExcludeFile = "*/*Designer.cs;*/*.g.cs;*/*.g.i.cs"; var coverIncludeFilter = "+:App.Metrics*"; var coverExcludeFilter = "-:*.Facts"; var excludeFromCoverage = "*.AppMetricsExcludeFromCodeCoverage*"; -var versionSuffix = !string.IsNullOrEmpty(preReleaseSuffix) ? preReleaseSuffix + "-" + buildNumber.ToString("D4") : !AppVeyor.Environment.Repository.Tag.IsTag ? buildNumber.ToString("D4") : null; +string versionSuffix = null; + +if (!string.IsNullOrEmpty(preReleaseSuffix)) +{ + versionSuffix = preReleaseSuffix + "-" + buildNumber.ToString("D4"); +} + else if (AppVeyor.IsRunningOnAppVeyor && !AppVeyor.Environment.Repository.Tag.IsTag) + { + versionSuffix = buildNumber.ToString("D4"); + } + ////////////////////////////////////////////////////////////////////// // TASKS @@ -123,7 +133,8 @@ Task("Build") Context.Information("Building using versionSuffix: " + versionSuffix); // Workaround to fixing pre-release version package references - https://github.com/NuGet/Home/issues/4337 - settings.ArgumentCustomization = args=>args.Append("/t:Restore /p:RestoreSources=" + @"""C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\""" + ";https://api.nuget.org/v3/index.json;https://www.myget.org/F/alhardy/api/v3/index.json;"); + settings.ArgumentCustomization = args=>args.Append("/t:Restore /p:RestoreSources=https://api.nuget.org/v3/index.json;https://www.myget.org/F/alhardy/api/v3/index.json;"); + if (IsRunningOnWindows()) { @@ -232,7 +243,7 @@ Task("RunTests") }); Task("HtmlCoverageReport") - .WithCriteria(() => FileExists(testOCoverageOutputFilePath) && coverWith != "None" && IsRunningOnWindows() && !skipHtmlCoverageReport) + .WithCriteria(() => IsRunningOnWindows() && FileExists(testOCoverageOutputFilePath) && coverWith != "None" && !skipHtmlCoverageReport) .IsDependentOn("RunTests") .Does(() => { diff --git a/build.sh b/build.sh index 04731ad..72dffeb 100644 --- a/build.sh +++ b/build.sh @@ -9,10 +9,14 @@ # Define directories. SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) TOOLS_DIR=$SCRIPT_DIR/tools +ADDINS_DIR=$TOOLS_DIR/Addins +MODULES_DIR=$TOOLS_DIR/Modules NUGET_EXE=$TOOLS_DIR/nuget.exe CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe PACKAGES_CONFIG=$TOOLS_DIR/packages.config PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum +ADDINS_PACKAGES_CONFIG=$ADDINS_DIR/packages.config +MODULES_PACKAGES_CONFIG=$MODULES_DIR/packages.config # Define md5sum or md5 depending on Linux/OSX MD5_EXE= @@ -79,7 +83,7 @@ fi mono "$NUGET_EXE" install -ExcludeVersion if [ $? -ne 0 ]; then - echo "Could not restore NuGet packages." + echo "Could not restore NuGet tools." exit 1 fi @@ -87,6 +91,32 @@ $MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' >| "$PACKAGES_CONFIG_MD5" popd >/dev/null +# Restore addins from NuGet. +if [ -f "$ADDINS_PACKAGES_CONFIG" ]; then + pushd "$ADDINS_DIR" >/dev/null + + mono "$NUGET_EXE" install -ExcludeVersion + if [ $? -ne 0 ]; then + echo "Could not restore NuGet addins." + exit 1 + fi + + popd >/dev/null +fi + +# Restore modules from NuGet. +if [ -f "$MODULES_PACKAGES_CONFIG" ]; then + pushd "$MODULES_DIR" >/dev/null + + mono "$NUGET_EXE" install -ExcludeVersion + if [ $? -ne 0 ]; then + echo "Could not restore NuGet modules." + exit 1 + fi + + popd >/dev/null +fi + # Make sure that Cake has been installed. if [ ! -f "$CAKE_EXE" ]; then echo "Could not find Cake.exe at '$CAKE_EXE'." diff --git a/build_travis.sh b/build_travis.sh deleted file mode 100755 index ffb2fea..0000000 --- a/build_travis.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env bash -########################################################################## -# This is the Cake bootstrapper script for Linux and OS X. -# This file was downloaded from https://github.com/cake-build/resources -# Feel free to change this file to fit your needs. -########################################################################## - -# Define directories. -SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -TOOLS_DIR=$SCRIPT_DIR/tools -NUGET_EXE=$TOOLS_DIR/nuget.exe -NUGET_URL=https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -CAKE_VERSION=0.18.0 -CAKE_EXE=$TOOLS_DIR/Cake.$CAKE_VERSION/Cake.exe - -# Define default arguments. -TARGET="Default" -CONFIGURATION="Release" -VERBOSITY="verbose" -DRYRUN= -SCRIPT_ARGUMENTS=() - -# Parse arguments. -for i in "$@"; do - case $1 in - -t|--target) TARGET="$2"; shift ;; - -c|--configuration) CONFIGURATION="$2"; shift ;; - -v|--verbosity) VERBOSITY="$2"; shift ;; - -d|--dryrun) DRYRUN="-dryrun" ;; - --) shift; SCRIPT_ARGUMENTS+=("$@"); break ;; - *) SCRIPT_ARGUMENTS+=("$1") ;; - esac - shift -done - -# Make sure the tools folder exist. -if [ ! -d "$TOOLS_DIR" ]; then - mkdir "$TOOLS_DIR" -fi - -########################################################################### -# INSTALL .NET CORE CLI -########################################################################### - -#echo "Installing .NET CLI..." -if [ ! -d "$SCRIPT_DIR/.dotnet" ]; then - mkdir "$SCRIPT_DIR/.dotnet" -fi -#curl -Lsfo "$SCRIPT_DIR/.dotnet/dotnet-install.sh" https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0-preview2/scripts/obtain/dotnet-install.sh -#curl -Lsfo "$SCRIPT_DIR/.dotnet/dotnet-install.sh" https://raw.githubusercontent.com/dotnet/cli/v1.0.0-preview2-1-3177/scripts/obtain/dotnet-install.sh -curl -Lsfo "$SCRIPT_DIR/.dotnet/dotnet-install.sh" https://raw.githubusercontent.com/dotnet/cli/rel/1.0.1/scripts/obtain/dotnet-install.sh - -#sudo bash "$SCRIPT_DIR/.dotnet/dotnet-install.sh" --install-dir .dotnet --no-path -#sudo bash "$SCRIPT_DIR/.dotnet/dotnet-install.sh" --version 1.0.0-preview2-003121 --install-dir .dotnet --no-path - -sudo bash "$SCRIPT_DIR/.dotnet/dotnet-install.sh" --version 1.0.1 --install-dir .dotnet --no-path -export PATH="$SCRIPT_DIR/.dotnet":$PATH -export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -export DOTNET_CLI_TELEMETRY_OPTOUT=1 - -"$SCRIPT_DIR/.dotnet/dotnet" -"$SCRIPT_DIR/.dotnet/dotnet" --info - -########################################################################### -# INSTALL NUGET -########################################################################### - -# Download NuGet if it does not exist. -if [ ! -f "$NUGET_EXE" ]; then - echo "Downloading NuGet..." - curl -Lsfo "$NUGET_EXE" $NUGET_URL - if [ $? -ne 0 ]; then - echo "An error occured while downloading nuget.exe." - exit 1 - fi -fi - -########################################################################### -# INSTALL CAKE -########################################################################### - -if [ ! -f "$CAKE_EXE" ]; then - mono "$NUGET_EXE" install Cake -Version $CAKE_VERSION -OutputDirectory "$TOOLS_DIR" - if [ $? -ne 0 ]; then - echo "An error occured while installing Cake." - exit 1 - fi -fi - -# Make sure that Cake has been installed. -if [ ! -f "$CAKE_EXE" ]; then - echo "Could not find Cake.exe at '$CAKE_EXE'." - exit 1 -fi - -########################################################################### -# RUN BUILD SCRIPT -########################################################################### - -# Start Cake -exec mono "$CAKE_EXE" build.cake --verbosity=$VERBOSITY --configuration=$CONFIGURATION --target=$TARGET $DRYRUN "${SCRIPT_ARGUMENTS[@]}" \ No newline at end of file From 29dba68e55700e8cb078c01eb135cf2d757bc958 Mon Sep 17 00:00:00 2001 From: alhardy Date: Wed, 7 Jun 2017 20:25:23 +1000 Subject: [PATCH 35/35] updating app metrics package to latest stable --- .../App.Metrics.InfluxDB.Sandbox.csproj | 12 ++++++------ .../App.Metrics.Extensions.Reporting.InfluxDB.csproj | 2 +- .../App.Metrics.Formatters.InfluxDB.csproj | 4 ++-- .../App.Metrics.Formatting.InfluxDB.csproj | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj index 220c78a..1d2ce60 100644 --- a/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj +++ b/sandbox/App.Metrics.InfluxDB.Sandbox/App.Metrics.InfluxDB.Sandbox.csproj @@ -9,12 +9,12 @@ - - - - - - + + + + + + diff --git a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj index 0c566c6..86b5bc2 100644 --- a/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj +++ b/src/App.Metrics.Extensions.Reporting.InfluxDB/App.Metrics.Extensions.Reporting.InfluxDB.csproj @@ -35,7 +35,7 @@ - + All diff --git a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj index c8606ac..daea7ab 100644 --- a/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj +++ b/src/App.Metrics.Formatters.InfluxDB/App.Metrics.Formatters.InfluxDB.csproj @@ -36,8 +36,8 @@ - - + + diff --git a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj index 89b2bef..4075308 100644 --- a/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj +++ b/src/App.Metrics.Formatting.InfluxDB/App.Metrics.Formatting.InfluxDB.csproj @@ -36,7 +36,7 @@ - +