Skip to content

Walkthrough Part 1

Daniel Odievich edited this page Apr 18, 2018 · 32 revisions

Platform Overview

The AppDynamics interface is built upon the concept of “Applications”—logical groups for organizing individual executables (Nodes) into roles of execution (Tiers). All discovery in AppDynamics is scoped to the Applications. If your app spans multiple AppD Applications, or if you have multiple instances of your application serving, say, multiple customers or data centers, or if you’re using blue-green deployment, etc., you must manage those environments individually.

Sometimes reviewing information in aggregate can be easier than tracking individual snapshots. AppDynamics is often configured to focus on data relevant to the immediate past—aggregating older data to provide more trend-based information rather than keeping everything for extended time periods. But when you want to perform more detailed, long-term analysis of a particular time range, DEXTER can help with that capture.

Data Extraction and Reporting

If you’re familiar with data warehousing terminology, think of DEXTER as an extract/transform/load (ETL) utility for AppDynamics data. It extracts information from the AppDynamics platform, transforms it into an enriched, query-able form for faster access, and loads it into variety of reports for:

  • Application logical model (applications, tiers, nodes, backends, business transactions)
  • Performance metrics (average response time, calls, errors per minute, CPU, memory, JVM, JMX, GC metrics)
  • Dependency data (flow maps, relationships between components)
  • Events (errors, resource pool exhaustion, application crashes and restarts, health rule violations)
  • Configuration rules (business transaction, backend detection, data collectors, error detection, agent properties)
  • Snapshots (SQL queries, HTTP destinations, data collectors, call graph data, errors)

The data, once extracted, is yours to mine. DEXTER provides Microsoft Excel and Power BI templates for viewing and analyzing your data.

Should you have additional data-mining needs, DEXTER provides clean, well-formatted CSV files for use in other data warehousing and enhanced query systems, such as Tableau and Power BI.

One common scenario is to identify the time of interest—say, a load test, an application outage, or a reported customer bug—and preserve this data for careful analysis and/or future comparison against a similar incident.

Create Reports from Your Data

To give DEXTER instructions on what to report, first create a job parameter file in simple JSON format. In the example below, we specify that we want all AppDynamics APM Applications data from two Controllers in a two-hour time range, and instruct DEXTER to extract and report on the logical model, configuration rules, performance metrics, dependency data, events, and snapshots:

{
    "Input": {
        "TimeRange": {
            "From": "2018-01-31T19:00:00",
            "To": "2018-01-31T21:00:00"
        },
        "Metrics": true,
        "MetricsSelectionCriteria": ["Transaction", "AgentStats", "OSHardware", "CLRStats", "IISStats", "JVMStats", "BusinessTransactionPercentiles"],
        "Flowmaps": true,
        "Configuration": true,
        "Events": true,
        "Snapshots": true,
        "SnapshotSelectionCriteria": {
            "Tiers": [],
            "TierType": {
                "All": true, 
                "APP_AGENT": false, "DOT_NET_APP_AGENT": false, "NATIVE_APP_AGENT": false, "NATIVE_DYNAMIC": false, "NATIVE_SDK": false,
                "NATIVE_WEB_SERVER": false, "NODEJS_APP_AGENT": false, "PHP_APP_AGENT": false, "PYTHON_APP_AGENT": false, "RUBY_APP_AGENT": false
            },
            "BusinessTransactions": [],
            "BusinessTransactionType": {
                "All": true,
                "SERVLET": false, "HTTP": false, "WEB_SERVICE": false, "POJO": false, "JMS": false, "EJB": false, "SPRING_BEAN": false, "STRUTS_ACTION": false, "ASP_DOTNET": false, "ASP_DOTNET_WEB_SERVICE": false, "DOTNET_REMOTING": false, "WCF": false, "DOTNET_JMS": false, "POCO": false,
                "PHP_WEB": false, "PHP_MVC": false, "PHP_DRUPAL": false, "PHP_WORDPRESS": false, "PHP_CLI": false, "PHP_WEB_SERVICE": false, "NODEJS_WEB": false, "NATIVE": false, "WEB": false, "PYTHON_WEB": false, "RUBY_WEB": false, "RUBY_RAILS": false, "BINARY_REMOTING": false
            },
            "UserExperience": {
                "Normal": true, 
                "Slow": true, 
                "VerySlow": true, 
                "Stall": true, 
                "Error": true},
            "SnapshotType": { 
                "Full": true, 
                "Partial": true, 
                "None": true
            }
        }
    },
    "Output": {
        "DetectedEntities": true,
        "EntityMetrics": true,
        "EntityMetricGraphs": true,
        "EntityDetails": true,
        "Events": true,
        "Configuration": true,
        "Snapshots": true,
        "FlameGraphs": true
    },
    "Target": [
        {
            "Controller": "http://demo1.appdynamics.com/",
            "UserName": "username@customer1",
            "UserPassword": "",
            "Application": ".*",
            "NameRegex": true
        },
        {
            "Controller": "http://demo2.appdynamics.com/",
            "UserName": "username@customer1",
            "UserPassword": "",
            "Application": ".*",
            "NameRegex": true
        }
    ]
}

After DEXTER runs, the reports are available in the user-selected Reports subfolder:

Report Folder Contents Full Size

Examine What is Detected with the Detected Entities Report

The Detected Entities report (Report\DetectedEntities.<Job File Name>.<Start Date and Time>-<End Date and Time>.xlsx) lets you rapidly review the logical model of as many AppDynamics Applications as you want. It helps identify areas to improve involving agent versions, Business Transaction management with rules, and Backend detection. Opening up the Detected Entities report, we are presented with series of sheets, each linked to the 2.Contents sheet. The report (below) shows the full logical model of AppDynamics’ APM model: Applications that contain Tiers, Nodes that report to Tiers, detected Backends, Business Transactions (both automatically detected and configured explicitly), detected errors, and so on.

Jumping to the 6.Nodes.Type.AppAgent sheet, we use an Excel PivotTable and its associated bar chart to explore APM agent information from the table in 6.Nodes sheet. Here we can see that a couple of Applications are still running on AppDynamics version 4.2 and should probably be upgraded. Although the data came from two different Controllers, our report spans them both:

Full Size

Clone this wiki locally