Instana
Instana is an observability platform that delivers automated Application Performance Monitoring (APM), used for website, infrastructure, and application monitoring.
Instana parameters and supported features in Nobl9
- General support:
- Release channel: Stable, Beta
- Connection method: Agent, Direct
- Replay and SLI Analyzer: Not supported
- Event logs: Supported
- Query checker: Not supported
- Query parameters retrieval: Not 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: n9instana
- Query delay environment variable: INSTANA_QUERY_DELAY
- Timestamp cache persistence: 0.65.0
- Additional notes:
- No support for website and application (ratio) monitoring metrics
- Learn more

Creating SLOs with Instanaβ
You can create Instana SLOs based on the following:
- Infrastructure
- Use it for infrastructure components
- Threshold and ratio metric types are supported
- Application
- Use it for defined applications, discovered services, and endpoints
- Only the threshold metric type is supported
Nobl9 Webβ
- Navigate to Service Level Objectives.
- Click
.
- Select a Service.
It will be the location for your SLO in Nobl9. - Select your Instana data source.
- Metric refers to the way of calculating and interpreting calculate and interpret data from your data source.
- Threshold metric is defined by a single numerical value (the threshold) that separates satisfactory performance from unsatisfactory performance. It's represented by a single time series evaluated against the threshold.
- Ratio metric expresses the performance as a fraction or proportion, typically by dividing the number of successful events by the total number of potential events (successes + failures). It's represented by two-time series for comparison for good events and total events.
For ratio metrics, select the Data count method.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.
- Infrastructure (threshold and ratio)
- Application (threshold)
- Plugin ID is the ID of the plugin available in your monitored system for which you want to retrieve the metric.
- Metric ID is the ID of the metric you want to retrieve.
- Select the Metric Retrieval Method:
- Query uses dynamic focus queries
For example,entity.selfType:zookeeper AND entity.label:replica.1. - Snapshot ID is a unique, point-in-time record of your monitored Instana component's state and configuration
- Query uses dynamic focus queries
- Define the Time window for your SLO:
- Rolling time windows constantly move forward as time passes. This type can help track the most recent events.
- Calendar-aligned time windows are usable for SLOs intended to map to business metrics measured on a calendar-aligned basis.
- Configure the Error budget calculation method and Objectives:
- Occurrences method counts good attempts against the count of total attempts.
- Time Slices method measures how many good minutes were achieved (when a system operates within defined boundaries) during a time window.
- You can define up to 12 objectives for an SLO.
Similar threshold values for objectivesTo use similar threshold values for different objectives in your SLO, we recommend differentiating them by setting varying decimal points for each objective.
For example, if you want to use threshold value1for two objectives, set it to1.0000001for the first objective and to1.0000002for the second one. - Add the Display name, Name, and other settings for your SLO:
- Name identifies your SLO in Nobl9. After you save the SLO, its name becomes read-only.
Use only lowercase letters, numbers, and dashes. - Select No data anomaly alert to receive notifications when your SLO stops reporting data for a specified period:
- Choose up to five supported Alert methods.
- Specify the delay period before Nobl9 sends an alert about the missing data.
From 5 minutes to 31 days. Default: 15 minutes
- Add alert policies, labels, and links, if required.
Limits per SLO: 20 alert policies or links, 30 labels.
- Name identifies your SLO in Nobl9. After you save the SLO, its name becomes read-only.
- Click CREATE SLO
-
Metric ID. The available metric IDs are as follows:
- Calls is the number of received calls
Aggregation =sum - Erroneous Calls is the number of erroneous calls
Aggregation method =sum - Erroneous Calls Rate is the error rate of received calls
Aggregation =mean - Latency is the latency of received calls in milliseconds
The following Aggregation methods are available:sum,mean,max,min,p25,p50,p75,p90,p95,p98,p99
- Calls is the number of received calls
-
Paste your API query built in the Instana UI. You can do this using the Applications or Analytics Instana sections.
- Select an application, service, or endpoint to monitor to analyze calls from. For Analytics, specify the query.
- Your basic query is generated as a filer. The applied filter must point to the exact entity you need to monitor.
- Apply any additional filtering. For proper query results, ensure your filter is as specific as possible.
Grouping recommendations- A combination of filters and group elements must point to a single entity
- Group by the last logical element in the defined filter. Be as specific as possible
- The state of the monitored system may change and more than one group can be associated with the previously applied grouping. Therefore, group by entity names as accurately as possible
- After changes to the applied filers check if any changes to a group element are required
-
Group by mirrors Instana Grouping as follows:
Nobl9 field Instana grouping category Tag groupbyTagTag entity groupbyTagEntityTag second level key groupbyTagSecondLevelKey
If you have a deep link, parse it to extract the necessary group information and convert it into a YAML format compatible with your configuration. The resulting YAML will include grouping parameters and ensure the required tag entity field is properly set.
Click to view the script for converting a deep link into YAML
#!/bin/bash
echo "$DEEPLINK" |
sed 's/;/\n/g' |
grep groupBy |
sed 's/groupBy=(//' |
sed 's/).*//' |
tr -d '\n' |
awk '
BEGIN {RS = "~"; print "groupBy:"}
{ctr++}
ctr == 1 {key = $0}
ctr == 2 {value = $0; printf " %s: \"%s\"\n", key, value; ctr = 0}' |
sed 's/groupbyT/t/g' |
awk -F':' '
BEGIN {tagEntityExists = 0}
$1 ~ "tagEntity" {tagEntityExists = 1}
{print}
END {
if(tagEntityExists == 0)
{print " tagEntity: \"NOT_APPLICABLE\""}
}'
- Optional: include Synthetic or Internal hidden fields.
Click to view the query sample
{
"type":"EXPRESSION",
"logicalOperator":"AND",
"elements": [
{
"type":"TAG_FILTER",
"name":"call.inbound_of_application",
"operator":"EQUALS",
"entity":"NOT_APPLICABLE",
"value":"All Services"
},
{
"type":"TAG_FILTER",
"name":"service.name",
"operator":"EQUALS",
"entity":"DESTINATION",
"value":"datanode"
},
{
"type":"TAG_FILTER",
"name":"endpoint.name",
"operator":"EQUALS",
"entity":"DESTINATION",
"value":"GET /"
}
]
}
- Define the Time window for your SLO:
- Rolling time windows constantly move forward as time passes. This type can help track the most recent events.
- Calendar-aligned time windows are usable for SLOs intended to map to business metrics measured on a calendar-aligned basis.
- Configure the Error budget calculation method and Objectives:
- Occurrences method counts good attempts against the count of total attempts.
- Time Slices method measures how many good minutes were achieved (when a system operates within defined boundaries) during a time window.
- You can define up to 12 objectives for an SLO.
Similar threshold values for objectivesTo use similar threshold values for different objectives in your SLO, we recommend differentiating them by setting varying decimal points for each objective.
For example, if you want to use threshold value1for two objectives, set it to1.0000001for the first objective and to1.0000002for the second one. - Add the Display name, Name, and other settings for your SLO:
- Name identifies your SLO in Nobl9. After you save the SLO, its name becomes read-only.
Use only lowercase letters, numbers, and dashes. - Select No data anomaly alert to receive notifications when your SLO stops reporting data for a specified period:
- Choose up to five supported Alert methods.
- Specify the delay period before Nobl9 sends an alert about the missing data.
From 5 minutes to 31 days. Default: 15 minutes
- Add alert policies, labels, and links, if required.
Limits per SLO: 20 alert policies or links, 30 labels.
- Name identifies your SLO in Nobl9. After you save the SLO, its name becomes read-only.
- Click CREATE SLO
YAMLβ
Generic schema with a description of objects and field validations:
apiVersion: n9/v1alpha
kind: SLO
metadata:
name: string
displayName: string # optional
project: string
spec:
description: string # optional
service: [service name] # name of the service you defined in the same project as the SLO
indicator:
metricSource:
name: [datasource name] # name of the data source you defined
project: [project name] # optional if not defined, project is the same as the SLO
rawMetric:
# exactly one of possible source types which depends on selected metricSource for the SLO
instana: # application XOR infrastructure
metricType: oneOf{"application", "infrastructure"} # mandatory
infrastructure:
metricRetrievalMethod: oneOf{"query", "snapshot"} # mandatory
query: "string" # XOR with snapshotId
snapshotId: "string" # XOR with query
metricId: "string" # mandatory
pluginId: "string" # mandatory
application:
metricId: # mandatory, oneOf{"calls", "erroneousCalls", "errors", "latency"}
aggregation: "" # mandatory, value depends on the metricId type. See notes below
groupBy: # mandatory
tag: "" # mandatory
tagEntity: "" # mandatory, oneOf{"DESTINATION", "SOURCE", "NOT_APPLICABLE"}
tagSecondLevelKey: "" # mandatory
apiQuery: "{}" # mandatory, API query user passes in a JSON format. Must be a valid JSON
includeInternal: false # optional, default value is false
includeSynthetic: false # optional, default value is false
Click to open field reference
| Field | Type | Description |
|---|---|---|
apiVersion mandatory | string | API version. Use n9/v1alpha |
kind mandatory | string | The resource type. Use SLO |
| Metadata | ||
metadata.name mandatory | string | Name identifier for the SLO. Use only lowercase alphanumeric characters |
metadata.displayName | string | User-friendly SLO name |
metadata.project mandatory | string | The name identifier of the project where you need to host your SLO |
metadata.labels | object (map: string[]) | Grouping labels for filtering or viewing |
metadata.annotations | object (map: string) | Flat string annotations |
| Spec | ||
spec.description | string | SLO description |
spec.indicator.metricSource.name mandatory | string | Data source name |
spec.indicator.metricSource.project mandatory | string | Project containing the data source |
spec.indicator.metricSource.kind mandatory | string | Data source connection method. Can be Agent or Direct |
spec.budgetingMethod mandatory | enum | Error budget calculation method. Can be Occurrences or Time slices |
spec.objectives mandatory | array | Your SLO objective definition, up to 12 objectives per SLO. |
spec.objectives[].displayName | string | User-friendly objective name |
spec.objectives[].value mandatory | number | Data point values that is considered "good" (e.g., 200.0).In SLOs with two or more objectives, keep each objective's value unique. In ratio ( count) metrics, value is retained for legacy purposes. |
spec.objectives[].name mandatory | string | Name identifier for this objective |
spec.objectives[].op mandatory | string (enum) | Operator for objective. One of:lte (less than or equal to)lt (less than)gte (greater than or equal to)gt (greater than) |
spec.objectives[].target mandatory | float | The percentage of the good minutes or occurrences that must meet the desired performance (e.g., is the target is 0.95, the good performance is expected to be observed in at least 95% of the time window) |
spec.objectives[].rawMetric/.countMetric mandatory | object | The metric type indicator. Set:rawMetric for a threshold metriccountMetric for a ratio metric.A ratio metric requires the additional fields: countMetric.incremental (boolean) the data count methodcountMetric.good/.bad and countMetric.total a numerator and denominator queries |
spec.objectives[].countMetric.incremental mandatory | boolean | The data count method for a ratio (countMetric) metric type |
spec.objectives[].primary | boolean | The indicator of a primary SLO objective |
spec.service mandatory | string | The name identifier of a service to host this SLO. The service must exist in the project specified in metadata.project |
spec.timeWindows mandatory | array | Defines SLO time window for error budget calculation. Set: isRolling: true for the rolling time window typeisRolling: false for the calendar-aligned type |
spec.timeWindows.unit mandatory | integer | The time window units. One of:Day | Hour | Minute for the rolling time windowYear | Quarter | Month | Week | Day for the calendar-aligned time window |
spec.timeWindows.count mandatory | integer | The number of units in a time window |
spec.timeWindows.startTime | string | Mandatory for calendar-aligned time windows. Date and time in the format YYYY-MM-DDTHH:mm:ss |
spec.timeWindows.timeZone | string | Mandatory for calendar-aligned time-windows. A valid IANA Time Zone Database name |
spec.timeWindows.isRolling mandatory | boolean | true for the rolling time window typefalse for the calendar-aligned type |
spec.alertPolicies | array | The name identifiers of alert policies to be linked to this SLO (must be from the same project as the SLO). Up to 20 alert policies per SLO. |
spec.attachments | array | Links to any additional attributes of this SLO |
spec.anomalyConfig | object | Settings for a manual no data anomaly detection rule |
spec.noData.alertMethods | array | List of alert methods for no-data anomaly. Up to five alert methods per SLO. Every alert method must have the name and project fields |
spec.noData.alertAfter | string | Waiting time before sending a no-data notification. Must be 5m to 31d.Default: 15m |
| Source-specific fields | ||
instana.infrastructuremandatory | object | Defines the infrastructure metric. XOR with instana.application |
instana.infrastructure.metricRetrievalMethodmandatory | string | One of: query (string) | snapshot (string) |
instana.infrastructure.metricIdmandatory | string | Your Instana metric identifier |
instana.infrastructure.pluginIdmandatory | string | Your Instana plugin identifier |
instana.applicationmandatory | object | Defines the application metric (threshold only). XOR with instana.infrastructure |
instana.application.metricIdmandatory | string | Your Instana metric identifier. One of: calls | erroneousCalls | | errors | latency |
instana.application.aggregationmandatory | string | Data aggregation method. One of: β’ sum if metricId: calls, metricId: erroneousCalls, or metricId: latencyβ’ mean if metricId: errors or metricId: latencyβ’ min | max | p25 | p75 | p90 | p95 | p98 | p99 if metricId: latency |
instana.application.groupBymandatory | object | Mirrors the Instana grouping filter. Matches: β’ tagβgroupbyTagβ’ tagEntityβgroupbyTagEntity one of: DESTINATION | SOURCE | NOT_APPLICABLEβ’ tagSecondLevelKeyβgroupbyTagSecondLevelKey |
instana.application.apiQuerymandatory | string | A valid JSON query |
instana.application.includeInternaloptional | boolean | Include Internal Hidden Calls. Default false |
instana.application.includeSyntheticoptional | boolean | Include Synthetic Hidden Calls. Default false |
Threshold (rawMetric)β
- Application query
- Infrastructure query
- Infrastructure snapshot
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 Instana SLO
indicator:
metricSource:
name: instana
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 200
name: ok
target: 0.95
rawMetric:
query:
instana:
metricType: application
application:
metricId: calls
aggregation: sum
groupBy:
tag: application.name
tagEntity: DESTINATION
apiQuery: |
{
"type": "EXPRESSION",
"logicalOperator": "AND",
"elements": [
{
"type": "TAG_FILTER",
"name": "kubernetes.cluster.name",
"operator": "EQUALS",
"entity": "DESTINATION",
"value": "n9-dev-tooling-cluster"
},
{
"type": "TAG_FILTER",
"name": "kubernetes.container.name",
"operator": "EQUALS",
"entity": "DESTINATION",
"value": "data-node"
},
{
"type": "TAG_FILTER",
"name": "call.type",
"operator": "EQUALS",
"entity": "NOT_APPLICABLE",
"value": "HTTP"
},
{
"type": "TAG_FILTER",
"name": "endpoint.name",
"operator": "EQUALS",
"entity": "DESTINATION",
"value": "GET /"
}
]
}
op: lte
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: '2022-12-01 00:00:00'
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
alertAfter: 1h
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 Instana SLO
indicator:
metricSource:
name: instana
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 200.0
name: ok
target: 0.95
rawMetric:
query:
instana:
metricType: infrastructure
infrastructure:
metricRetrievalMethod: query
query: entity.selfType:zookeeper AND entity.label:replica.1
metricId: max_request_latency
pluginId: zooKeeper
op: lte
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: "2022-12-01 00:00:00"
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
alertAfter: 1h
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 Instana SLO
indicator:
metricSource:
name: instana
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 200.0
name: ok
target: 0.95
rawMetric:
query:
instana:
metricType: infrastructure
infrastructure:
metricRetrievalMethod: snapshot
snapshotId: 00u2y4e4atkzaYkXP4x8
metricId: max_request_latency
pluginId: zooKeeper
op: lte
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: "2022-12-01 00:00:00"
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
alertAfter: 1h
Ratio (countMetric)β
- Infrastructure query
- Infrastructure snapshot
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 Instana SLO
indicator:
metricSource:
name: instana
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 1
name: ok
target: 0.95
countMetrics:
incremental: true
good:
instana:
metricType: infrastructure
infrastructure:
metricRetrievalMethod: query
query: entity.selfType:zookeeper AND entity.label:replica.1
metricId: error_requests_count
pluginId: zooKeeper
total:
instana:
metricType: infrastructure
infrastructure:
metricRetrievalMethod: query
query: entity.selfType:zookeeper AND entity.label:replica.1
metricId: total_requests_count
pluginId: zooKeeper
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: '2022-12-01 00:00:00'
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
alertAfter: 1h
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 Instana SLO
indicator:
metricSource:
name: instana
project: default
kind: Agent
budgetingMethod: Occurrences
objectives:
- displayName: Good response (200)
value: 1.0
name: ok
target: 0.95
countMetrics:
incremental: true
good:
instana:
metricType: infrastructure
infrastructure:
metricRetrievalMethod: snapshot
snapshotId: 00u2y4e4atkzaYkXP4x8
metricId: error_requests_count
pluginId: zooKeeper
total:
instana:
metricType: infrastructure
infrastructure:
metricRetrievalMethod: snapshot
snapshotId: 00u2y4e4atkzaYkXP4x8
metricId: total_requests_count
pluginId: zooKeeper
primary: true
service: api-server
timeWindows:
- unit: Month
count: 1
isRolling: false
calendar:
startTime: "2022-12-01 00:00:00"
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
alertAfter: 1h
Infrastructure metric componentsβ
This section explains the key components needed for Infrastructure Instana metric configuration.
Plugin IDβ
Purpose: Identifies the entity type for metric collection.
To retrieve the list of available plugins, send the following API request:
curl --request GET \
--url https://${BASE_URL}/api/infrastructure-monitoring/catalog/plugins \
--header "authorization: apiToken ${API_TOKEN}"
The response includes:
pluginβthe Plugin ID value to uselabelβthe display name shown in UI
Metric IDβ
Purpose: Specifies which metric to retrieve.
To get available metrics for your plugin, send the following API request:
curl --request GET \
--url https://${BASE_URL}/api/infrastructure-monitoring/catalog/metrics/${PLUGIN_ID} \
--header "authorization: apiToken ${API_TOKEN}"
The response includes metricIdβuse its value in your metric.
Nobl9 supports retrieving one metric at a time.
Queryβ
Purpose: Defines which data to collect using Instana's Dynamic Focus. Required for Metric retrieval method > Query.
Dynamic Focus queries use the Lucene query syntax.
Construct the query in the Infrastructure > Map Instana section and copy it. For example, entity.selfType:zookeeper AND entity.label:replica.1.
Instana does not support infrastructure metric aggregation. Ensure your query targets specific entities (e.g., cluster, zone, or node).
Snapshot IDβ
Purpose: References an entity state at a specific time. Required for Metric retrieval method > Snapshot ID.
You can find a snapshot ID in the Instana UI URL: snapshotId=${SNAPSHOT_ID}.
Configuration updates (like changing the metadata) may result in changing the snapshot ID. Update your SLO with the new Snapshot ID to maintain data collection.
Querying the Instana serverβ
Nobl9 queries the Instana server on a per-minute basis. This allows Nobl9 to collect up to one data point per minute.
Instana API rate limitsβ
When accessing the Instana API, consider the following limitations:
- Maximum of 5000 API calls per hour