From 8659a926954337413ea08d1e58dd343b3cbf2cbc Mon Sep 17 00:00:00 2001 From: danielodievich Date: Wed, 11 Mar 2020 14:13:43 -0700 Subject: [PATCH] Entity Metrics Graphs Report: - Fixed #95 - Fixed the time rendering bug on the graphs where the last time comparison should have been <= (not <) Snapshots Report: - Added parsing tables addressed by the query (SELECT, INSERT, UPDATE, etc) from the SQL - Added multiselect option to the execution range - Added query type and table type parsing for Cassandra calls DB Entities Report: - Added parsing tables addressed by the query (SELECT, INSERT, UPDATE, etc) from the SQL for Queries - Added multiselect option to the execution range Flame Graphs Report: - Added a bunch of new frameworks to color in pretty pretty colors - Added copy ability for the flame graph element - Fixed exception that happens with lookups of unknown frameworks that are obfuscated - Fixed ANTLR mapping coloring because I clearly can't spell - Changed colors of NewtonSoft JSON mapping Flowmaps Report: - Removed extraction of per-minute report as nobody was using it Configuration Report: - Added Entity Identifier column to configuration differences to be unambigious about which entity is being compared - Added parsing for Excluded tiers for BT Scopes Health Check: - Added a number of new rules for the first release --- AppDynamics.Dexter.csproj | 431 --- AppDynamics.Dexter.sln | 16 +- ControllerApi/ControllerApi.cs | 6 +- DataObjects/JobConfiguration/JobStatus.cs | 5 +- DefaultJob.json | 6 +- FlameGraphTemplate.svg | 25 +- HealthCheckSettingMapping.csv | 170 +- MethodNamespaceTypeMapping.csv | 18 +- MethodNamespaceTypeMapping.xlsm | Bin 37748 -> 38653 bytes .../ExtractAPMEntityDashboardScreenshots.cs | 10 +- ProcessingSteps/Extract/ExtractAPMFlowmaps.cs | 91 +- ProcessingSteps/FilePathMap.cs | 55 +- .../Index/IndexAPMConfiguration.cs | 80 +- ProcessingSteps/Index/IndexAPMHealthCheck.cs | 3139 +++++++++++++++-- ProcessingSteps/Index/IndexAPMSnapshots.cs | 55 +- ...ndexApplicationConfigurationDifferences.cs | 5 +- .../Index/IndexControllerHealthCheck.cs | 637 ++++ ProcessingSteps/Index/IndexDBEntities.cs | 39 + ProcessingSteps/Index/JobStepIndexBase.cs | 307 ++ ProcessingSteps/JobStepBase.cs | 114 +- ProcessingSteps/JobStepRouter.cs | 3 + ProcessingSteps/Report/JobStepReportBase.cs | 50 +- .../Report/ReportAPMFlameGraphs.cs | 8 +- .../Report/ReportAPMMetricGraphs.cs | 4 +- ProcessingSteps/Report/ReportAPMSnapshots.cs | 19 +- .../ReportAPMSnapshotsMethodCallLines.cs | 4 +- ...rtControllerAndApplicationConfiguration.cs | 2 +- ProcessingSteps/Report/ReportDBEntities.cs | 2 +- ProcessingSteps/Report/ReportHealthCheck.cs | 107 +- Program.cs | 2 +- Properties/AssemblyInfo.cs | 4 +- Properties/launchSettings.json | 2 +- .../ConfigurationAPM/BackendDiscoveryRule.cs | 2 + .../BusinessTransactionDiscoveryRule20.cs | 2 +- .../BusinessTransactionEntryScope.cs | 2 +- .../Maps/BackendDiscoveryRuleReportMap.cs | 1 + .../BusinessTransactionEntryScopeReportMap.cs | 6 +- .../ConfigurationDifference.cs | 1 + .../Maps/ConfigurationDifferenceReportMap.cs | 2 + ReportObjects/EntityDB/DBQuery.cs | 4 + .../EntityDB/Maps/DBQueryReportMap.cs | 4 + .../HealthCheck/HealthCheckRuleDescription.cs | 27 + .../HealthCheck/HealthCheckRuleResult.cs | 2 +- ReportObjects/Snapshot/ExitCall.cs | 4 + .../Snapshot/Maps/ExitCallReportMap.cs | 4 + .../PowerBI/Design/DBEntitiesDesign.pbix | Bin 797937 -> 508390 bytes .../PowerBI/Design/SnapshotsDesign.pbix | Bin 1513600 -> 11280328 bytes .../PowerBI/Templates/DBEntities.pbit | Bin 147207 -> 151103 bytes .../PowerBI/Templates/Snapshots.pbit | Bin 315940 -> 325575 bytes .../HealthCheck/5.HealthCheckResults.Desc.png | Bin 0 -> 52671 bytes .../5.HealthCheckResults.Display.png | Bin 0 -> 18621 bytes .../HealthCheck/6.Category.Example1.png | Bin 0 -> 35865 bytes docs/reports/HealthCheck/ReportThumbnail.png | Bin 0 -> 119731 bytes 53 files changed, 4420 insertions(+), 1057 deletions(-) delete mode 100644 AppDynamics.Dexter.csproj create mode 100644 ProcessingSteps/Index/IndexControllerHealthCheck.cs create mode 100644 ReportObjects/HealthCheck/HealthCheckRuleDescription.cs create mode 100644 docs/reports/HealthCheck/5.HealthCheckResults.Desc.png create mode 100644 docs/reports/HealthCheck/5.HealthCheckResults.Display.png create mode 100644 docs/reports/HealthCheck/6.Category.Example1.png create mode 100644 docs/reports/HealthCheck/ReportThumbnail.png diff --git a/AppDynamics.Dexter.csproj b/AppDynamics.Dexter.csproj deleted file mode 100644 index 0b750ee..0000000 --- a/AppDynamics.Dexter.csproj +++ /dev/null @@ -1,431 +0,0 @@ - - - - - Debug - AnyCPU - {0734F6D8-9E80-495D-A096-25668CB7D66C} - Exe - AppDynamics.Dexter - AppDynamics.Dexter - v4.7.1 - 512 - true - false - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - AnyCPU - true - full - false - bin\Debug\net471\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - pdbonly - true - bin\Release\net471\ - TRACE - prompt - 4 - false - - - true - - - AppDynamics DEXTER.pfx - - - - obj_netfx\ - - - SearchContract.ico - - - - packages\CommandLineParser.1.9.71\lib\net45\CommandLine.dll - - - packages\CsvHelper.7.1.1\lib\net45\CsvHelper.dll - - - packages\EPPlus.4.5.2.1\lib\net40\EPPlus.dll - - - packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll - - - packages\NLog.4.5.6\lib\net45\NLog.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - Designer - - - - Always - - - - Designer - - - - PreserveNewest - Designer - - - - Always - - - Always - - - Always - - - Designer - - - Designer - - - - - False - Microsoft .NET Framework 4.5.2 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - - - - \ No newline at end of file diff --git a/AppDynamics.Dexter.sln b/AppDynamics.Dexter.sln index 070c170..3b970d0 100644 --- a/AppDynamics.Dexter.sln +++ b/AppDynamics.Dexter.sln @@ -1,25 +1,16 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.15 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29728.190 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AppDynamics.Dexter", "AppDynamics.Dexter.csproj", "{0734F6D8-9E80-495D-A096-25668CB7D66C}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AppDynamics.Dexter.Core", "AppDynamics.Dexter.Core.csproj", "{F2687CC0-8C55-4B74-AE08-7A1D6DDE18E1}" EndProject Global - GlobalSection(Performance) = preSolution - HasPerformanceSessions = true - EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0734F6D8-9E80-495D-A096-25668CB7D66C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0734F6D8-9E80-495D-A096-25668CB7D66C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0734F6D8-9E80-495D-A096-25668CB7D66C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0734F6D8-9E80-495D-A096-25668CB7D66C}.Release|Any CPU.Build.0 = Release|Any CPU {F2687CC0-8C55-4B74-AE08-7A1D6DDE18E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2687CC0-8C55-4B74-AE08-7A1D6DDE18E1}.Debug|Any CPU.Build.0 = Debug|Any CPU {F2687CC0-8C55-4B74-AE08-7A1D6DDE18E1}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -31,4 +22,7 @@ Global GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {200EEB73-470E-41D4-8004-318CCF3A0954} EndGlobalSection + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection EndGlobal diff --git a/ControllerApi/ControllerApi.cs b/ControllerApi/ControllerApi.cs index 9da64ad..d4443f9 100644 --- a/ControllerApi/ControllerApi.cs +++ b/ControllerApi/ControllerApi.cs @@ -1923,7 +1923,8 @@ private string apiGET(string restAPIUrl, string acceptHeader, bool useXSRFHeader logger.Error("{0}/{1} GET as {2} returned {3} ({4})", this.ControllerUrl, restAPIUrl, this.UserName, (int)response.StatusCode, response.ReasonPhrase); } - if (response.StatusCode == HttpStatusCode.Unauthorized) + if (response.StatusCode == HttpStatusCode.Unauthorized || + response.StatusCode == HttpStatusCode.Forbidden) { loggerConsole.Error("{0}/{1} GET as {2} returned {3} ({4})", this.ControllerUrl, restAPIUrl, this.UserName, (int)response.StatusCode, response.ReasonPhrase); } @@ -1996,7 +1997,8 @@ private string apiPOST(string restAPIUrl, string acceptHeader, string requestBod logger.Error("{0}/{1} POST as {2} returned {3} ({4})", this.ControllerUrl, restAPIUrl, this.UserName, (int)response.StatusCode, response.ReasonPhrase); } - if (response.StatusCode == HttpStatusCode.Unauthorized) + if (response.StatusCode == HttpStatusCode.Unauthorized || + response.StatusCode == HttpStatusCode.Forbidden) { loggerConsole.Error("{0}/{1} POST as {2} returned {3} ({4})", this.ControllerUrl, restAPIUrl, this.UserName, (int)response.StatusCode, response.ReasonPhrase); } diff --git a/DataObjects/JobConfiguration/JobStatus.cs b/DataObjects/JobConfiguration/JobStatus.cs index f8952a0..85922f8 100644 --- a/DataObjects/JobConfiguration/JobStatus.cs +++ b/DataObjects/JobConfiguration/JobStatus.cs @@ -61,8 +61,9 @@ public enum JobStatus IndexAPMMetrics = 80, IndexAPMFlowmaps = 81, IndexAPMSnapshots = 82, - - IndexAPMHealthCheck = 90, + + IndexControllerHealthCheck = 90, + IndexAPMHealthCheck = 91, // Report steps ReportControllerAndApplicationConfiguration = 100, diff --git a/DefaultJob.json b/DefaultJob.json index b4ae939..ebbe63a 100644 --- a/DefaultJob.json +++ b/DefaultJob.json @@ -51,8 +51,8 @@ ], "Input": { "TimeRange": { - "From": "2019-12-17T09:00:00", - "To": "2019-12-17T10:00:00" + "From": "2020-03-09T09:00:00", + "To": "2020-03-09T10:00:00" }, "UsersGroupsRolesPermissions": true, "Dashboards": true, @@ -67,7 +67,7 @@ "Metrics": true, "MetricsSelectionCriteria": [ "TransactionApplication", "TransactionTier", "TransactionNode", "TransactionBackend", "TransactionBT", "TransactionSEP", "TransactionError", "TransactionIP", "AgentStats", "OSHardware", "CLRStats", "IISStats", "IISReqCounts", "IISReqPerf", "JVMStats", "BusinessTransactionPercentiles" ], "Flowmaps": true, - "EntityDashboards": true, + "EntityDashboards": false, "EntityDashboardSelectionCriteria": { "Tiers": [], "TierType": { diff --git a/FlameGraphTemplate.svg b/FlameGraphTemplate.svg index 7f8f4ae..4b0f827 100644 --- a/FlameGraphTemplate.svg +++ b/FlameGraphTemplate.svg @@ -12,10 +12,12 @@ xrect[rx]:hover { stroke:#7f17ff; stroke-width:4; } xtext:hover { font-weight:bold; } -