AppDynamics
AppDynamics is a performance management program for applications. It helps users to gain a comprehensive understanding of the impact of technical difficulties on business goals, allowing IT teams to prioritize their efforts in a way that improves ROI.
AppDynamics parameters and supported features in Nobl9
- General support:
- Release channel: Stable, Beta
- Connection method: Agent, Direct
- Replay and SLI Analyzer: Historical data limit 30 days
- Event logs: Supported
- Query checker: Not supported
- Query parameters retrieval: Supported
- Timestamp cache persistence: Supported
- Query parameters:
- Query interval: 1 min
- Query delay: 1 min
- Jitter: 15 sec
- Timeout: 30 sec
- Agent details and minimum required versions for supported features:
- Plugin name: n9appd
- Query delay environment variable: APPD_QUERY_DELAY
- Replay and SLI Analyzer: 0.68.0
- Query parameters retrieval: 0.73.2
- Timestamp cache persistence: 0.65.0
- Additional notes:
- No support for metric paths with Wild Cards
- Learn more
Creating SLOs with AppDynamicsβ
Nobl9 Webβ
Follow the instructions below to create your SLOs with AppDynamics in the UI:
-
Navigate to Service Level Objectives.
-
Click .The SLO wizard opens.
-
In step 1, select the Service the SLO will be associated with.
-
In step 2, select AppDynamics as the data source for your SLO.
-
Enter the Application Name.
- The Application Name refers to the name of the logical business application defined in AppDynamics.
- To ingest Database Metrics, you must enter Database Monitoring in the Application Name field.
-
Then specify the Metric. You can choose either:
- A Threshold Metric where a single time series is evaluated against a threshold
- A Ratio Metric that allows you to enter two-time series to compare. You can choose one of the following metric types:
- Good Counter, meaning a ratio of
good
requests andtotal
requests - Bad Counter, meaning a ratio of
bad
requests andtotal
requests
- Good Counter, meaning a ratio of
- Choose the Data Count Method for your ratio metric:
- Non-incremental: counts incoming metric values one-by-one. So the resulting SLO graph is pike-shaped.
- Incremental: counts the incoming metric values incrementally, adding every next value to previous values.
It results in a constantly increasing SLO graph.
-
-
Configure the metrics for your SLO. The following are query examples:
-
Threshold metric for AppDynamics:
Metric Path:End User Experience|App|End User Response Time 95th percentile (ms)
-
Ratio metric for AppDynamics:
Metric Path for Good Counter (numerator):End User Experience|App|Very Slow Requests
Metric Path for Bad Counter (numerator):End User Experience|App|Slow Requests
Metric Path for Total Counter (denominator):End User Experience|App|Normal Requests
SLI values for good and totalWhen choosing the query for the ratio SLI (countMetrics
), keep in mind that the values ββresulting from that query for both good and total:- Must be positive.
- While we recommend using integers, fractions are also acceptable.
- If using fractions, we recommend them to be larger than
1e-4
=0.0001
. - Shouldn't be larger than
1e+20
.
-
-
In step 3, define a Time Window for the SLO.
-
Rolling time windows are better for tracking the recent user experience of a service.
-
Calendar-aligned windows are best suited for SLOs that are intended to map to business metrics measured on a calendar-aligned basis, such as every calendar month or every quarter.
-
In step 4, specify the Error Budget Calculation Method and the expected Objective(s).
-
In step 5, set the SLO Name and the Alert Policy for your SLO. Optionally, you can mark your SLO with Labels.
-
When youβre done, click CREATE SLO.
sloctlβ
- Threshold (rawMetric)
- Ratio (countMetric) good over total
- Ratio (countMetric) bad over total
apiVersion: n9/v1alpha
kind: SLO
metadata:
name: api-server-slo
displayName: API Server SLO
project: default
labels:
area:
- latency
- slow-check
env:
- prod
- dev
region:
- us
- eu
team:
- green
- sales
annotations:
area: latency
env: prod
region: us
team: sales
spec:
description: Example AppDynamics SLO
indicator:
metricSource:
name: app-dynamics
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 200
name: ok
target: 0.95
rawMetric:
query:
appDynamics:
applicationName: api-server
metricPath: Overall Application Performance|Average Response Time (ms)
op: lte
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: 2022-12-01T00:00:00.000Z
timeZone: UTC
alertPolicies:
- fast-burn-5x-for-last-10m
attachments:
- url: https://docs.nobl9.com
displayName: Nobl9 Documentation
anomalyConfig:
noData:
alertMethods:
- name: slack-notification
project: default
apiVersion: n9/v1alpha
kind: SLO
metadata:
name: api-server-slo
displayName: API Server SLO
project: default
labels:
area:
- latency
- slow-check
env:
- prod
- dev
region:
- us
- eu
team:
- green
- sales
annotations:
area: latency
env: prod
region: us
team: sales
spec:
description: Example AppDynamics SLO
indicator:
metricSource:
name: app-dynamics
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 1
name: ok
target: 0.95
countMetrics:
incremental: true
good:
appDynamics:
applicationName: api-server
metricPath: End User Experience|App|Slow Requests
total:
appDynamics:
applicationName: api-server
metricPath: End User Experience|App|Normal Requests
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: 2022-12-01T00:00:00.000Z
timeZone: UTC
alertPolicies:
- fast-burn-5x-for-last-10m
attachments:
- url: https://docs.nobl9.com
displayName: Nobl9 Documentation
anomalyConfig:
noData:
alertMethods:
- name: slack-notification
project: default
apiVersion: n9/v1alpha
kind: SLO
metadata:
name: api-server-slo
displayName: API Server SLO
project: default
labels:
area:
- latency
- slow-check
env:
- prod
- dev
region:
- us
- eu
team:
- green
- sales
annotations:
area: latency
env: prod
region: us
team: sales
spec:
description: Example AppDynamics SLO
indicator:
metricSource:
name: app-dynamics
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 1
name: ok
target: 0.95
countMetrics:
incremental: true
bad:
appDynamics:
applicationName: api-server
metricPath: End User Experience|App|Slow Requests
total:
appDynamics:
applicationName: api-server
metricPath: End User Experience|App|Normal Requests
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: 2022-12-01T00:00:00.000Z
timeZone: UTC
alertPolicies:
- fast-burn-5x-for-last-10m
attachments:
- url: https://docs.nobl9.com
displayName: Nobl9 Documentation
anomalyConfig:
noData:
alertMethods:
- name: slack-notification
project: default
Important notes:
Metric specification from AppDynamics has two mandatory fields:
-
applicationName
β mandatory, string, Application name, meaning the name of the logical business application defined in AppDynamics.- To ingest Database Metrics, you must enter Database Monitoring in the Application Name field.
For more details, refer to Configuring Agents in Kubernetes | AppDynamics documentation.
On top of the same validation rules for
appDynamics
sections as for therawMetric
(threshold metric), there is an additional requirement that allapplicationName
fields must have the same value within a single SLO. -
metricPath
β mandatory, string, full metric path that can be obtained from AppDynamics Controller UI (dashboard).metricPath
must refer to a single time series.Example:
"End User Experience|App|End User Response Time 95th percentile (ms)"
The list of metrics Full Path and their Application Names can be copied directly from the AppDynamics dashboard.
Querying the AppDynamics serverβ
The Nobl9 agent leverages the Time Range API parameters. It pulls data at a per-minute interval from the AppDynamics server.