116 lines
6.2 KiB
Markdown
116 lines
6.2 KiB
Markdown
# Deprecated Query Protocol
|
|
The following query services are deprecated since 9.5.0. All these queries are still available for the short term to keep compatibility.
|
|
|
|
Query protocol official repository, https://github.com/apache/skywalking-query-protocol.
|
|
|
|
### Metadata
|
|
Metadata contains concise information on all services and their instances, endpoints, etc. under monitoring.
|
|
You may query the metadata in different ways.
|
|
#### V1 APIs
|
|
V1 APIs were introduced since 6.x. Now they are a shell to V2 APIs since 9.0.0.
|
|
```graphql
|
|
extend type Query {
|
|
# Normal service related meta info
|
|
getAllServices(duration: Duration!, group: String): [Service!]!
|
|
searchServices(duration: Duration!, keyword: String!): [Service!]!
|
|
searchService(serviceCode: String!): Service
|
|
|
|
# Fetch all services of Browser type
|
|
getAllBrowserServices(duration: Duration!): [Service!]!
|
|
searchBrowserServices(duration: Duration!, keyword: String!): [Service!]!
|
|
searchBrowserService(serviceCode: String!): Service
|
|
|
|
# Service instance query
|
|
getServiceInstances(duration: Duration!, serviceId: ID!): [ServiceInstance!]!
|
|
|
|
# Endpoint query
|
|
# Consider there are huge numbers of endpoint,
|
|
# must use endpoint owner's service id, keyword and limit filter to do query.
|
|
searchEndpoint(keyword: String!, serviceId: ID!, limit: Int!): [Endpoint!]!
|
|
|
|
# Database related meta info.
|
|
getAllDatabases(duration: Duration!): [Database!]!
|
|
}
|
|
```
|
|
|
|
|
|
### Metrics
|
|
Metrics query targets all objects defined in [OAL script](../concepts-and-designs/oal.md) and [MAL](../concepts-and-designs/mal.md).
|
|
You may obtain the metrics data in linear or thermodynamic matrix formats based on the aggregation functions in script.
|
|
|
|
#### V2 APIs
|
|
Provide Metrics V2 query APIs since 8.0.0, including metadata, single/multiple values, heatmap, and sampled records metrics.
|
|
```graphql
|
|
extend type Query {
|
|
# Read metrics single value in the duration of required metrics
|
|
readMetricsValue(condition: MetricsCondition!, duration: Duration!): Long!
|
|
# Read metrics single value in the duration of required metrics
|
|
# NullableValue#isEmptyValue == true indicates no telemetry data rather than aggregated value is actually zero.
|
|
readNullableMetricsValue(condition: MetricsCondition!, duration: Duration!): NullableValue!
|
|
# Read time-series values in the duration of required metrics
|
|
readMetricsValues(condition: MetricsCondition!, duration: Duration!): MetricsValues!
|
|
# Read entity list of required metrics and parent entity type.
|
|
sortMetrics(condition: TopNCondition!, duration: Duration!): [SelectedRecord!]!
|
|
# Read value in the given time duration, usually as a linear.
|
|
# labels: the labels you need to query.
|
|
readLabeledMetricsValues(condition: MetricsCondition!, labels: [String!]!, duration: Duration!): [MetricsValues!]!
|
|
# Heatmap is bucket based value statistic result.
|
|
readHeatMap(condition: MetricsCondition!, duration: Duration!): HeatMap
|
|
# Deprecated since 9.3.0, replaced by readRecords defined in record.graphqls
|
|
# Read the sampled records
|
|
# TopNCondition#scope is not required.
|
|
readSampledRecords(condition: TopNCondition!, duration: Duration!): [SelectedRecord!]!
|
|
}
|
|
```
|
|
|
|
#### V1 APIs
|
|
3 types of metrics can be queried. V1 APIs were introduced since 6.x. Now they are a shell to V2 APIs.
|
|
1. Single value. Most default metrics are in single value. `getValues` and `getLinearIntValues` are suitable for this purpose.
|
|
2. Multiple value. A metric defined in OAL includes multiple value calculations. Use `getMultipleLinearIntValues` to obtain all values. `percentile` is a typical multiple value function in OAL.
|
|
3. Heatmap value. Read [Heatmap in WIKI](https://en.wikipedia.org/wiki/Heat_map) for details. `thermodynamic` is the only OAL function. Use `getThermodynamic` to get the values.
|
|
```graphql
|
|
extend type Query {
|
|
getValues(metric: BatchMetricConditions!, duration: Duration!): IntValues
|
|
getLinearIntValues(metric: MetricCondition!, duration: Duration!): IntValues
|
|
# Query the type of metrics including multiple values, and format them as multiple lines.
|
|
# The seq of these multiple lines base on the calculation func in OAL
|
|
# Such as, should us this to query the result of func percentile(50,75,90,95,99) in OAL,
|
|
# then five lines will be responded, p50 is the first element of return value.
|
|
getMultipleLinearIntValues(metric: MetricCondition!, numOfLinear: Int!, duration: Duration!): [IntValues!]!
|
|
getThermodynamic(metric: MetricCondition!, duration: Duration!): Thermodynamic
|
|
}
|
|
```
|
|
|
|
### Aggregation
|
|
Aggregation query means that the metrics data need a secondary aggregation at query stage, which causes the query
|
|
interfaces to have some different arguments. A typical example of aggregation query is the `TopN` list of services.
|
|
Metrics stream aggregation simply calculates the metrics values of each service, but the expected list requires ordering metrics data
|
|
by their values.
|
|
|
|
Aggregation query is for single value metrics only.
|
|
|
|
```graphql
|
|
# The aggregation query is different with the metric query.
|
|
# All aggregation queries require backend or/and storage do aggregation in query time.
|
|
extend type Query {
|
|
# TopN is an aggregation query.
|
|
getServiceTopN(name: String!, topN: Int!, duration: Duration!, order: Order!): [TopNEntity!]!
|
|
getAllServiceInstanceTopN(name: String!, topN: Int!, duration: Duration!, order: Order!): [TopNEntity!]!
|
|
getServiceInstanceTopN(serviceId: ID!, name: String!, topN: Int!, duration: Duration!, order: Order!): [TopNEntity!]!
|
|
getAllEndpointTopN(name: String!, topN: Int!, duration: Duration!, order: Order!): [TopNEntity!]!
|
|
getEndpointTopN(serviceId: ID!, name: String!, topN: Int!, duration: Duration!, order: Order!): [TopNEntity!]!
|
|
}
|
|
```
|
|
|
|
### Record
|
|
Record is a general and abstract type for collected raw data.
|
|
In the observability, traces and logs have specific and well-defined meanings, meanwhile, the general records represent other
|
|
collected records. Such as sampled slow SQL statement, HTTP request raw data(request/response header/body)
|
|
|
|
```graphql
|
|
extend type Query {
|
|
# Query collected records with given metric name and parent entity conditions, and return in the requested order.
|
|
readRecords(condition: RecordCondition!, duration: Duration!): [Record!]!
|
|
}
|
|
```
|