| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # The list of traces |
| type TraceBrief { |
| traces: [BasicTrace!]! |
| total: Int! |
| } |
| |
| # Trace basic info |
| type BasicTrace { |
| segmentId: String! |
| endpointNames: [String!]! |
| duration: Int! |
| start: String! |
| isError: Boolean |
| traceIds: [String!]! |
| } |
| |
| # Represent the conditions used for query TraceBrief |
| input TraceQueryCondition { |
| # The value of 0 means all services. |
| serviceId: ID |
| serviceInstanceId: ID |
| traceId: String |
| endpointId: ID |
| # The time range of traces started |
| queryDuration: Duration |
| # The min time of trace |
| minTraceDuration: Int |
| # The max time of trace |
| maxTraceDuration: Int |
| traceState: TraceState! |
| queryOrder: QueryOrder! |
| # Map to the tags included in the traces |
| tags: [SpanTag!] |
| paging: Pagination! |
| } |
| |
| input SpanTag { |
| key: String! |
| value: String |
| } |
| |
| enum TraceState { |
| ALL |
| SUCCESS |
| ERROR |
| } |
| |
| enum QueryOrder { |
| BY_START_TIME |
| BY_DURATION |
| } |
| |
| # The trace represents a distributed trace, includes all segments and spans. |
| type Trace { |
| spans: [Span!]! |
| } |
| |
| type Span { |
| traceId: ID! |
| segmentId: ID! |
| spanId: Int! |
| parentSpanId: Int! |
| refs: [Ref!]! |
| serviceCode: String! |
| serviceInstanceName: ID! |
| startTime: Long! |
| endTime: Long! |
| endpointName: String |
| # There are three span types: Local, Entry and Exit |
| type: String! |
| # Peer network id, e.g. host+port, ip+port |
| peer: String |
| component: String |
| isError: Boolean |
| # There are 5 layers: Unknown, Database, RPCFramework, Http, MQ and Cache |
| layer: String |
| tags: [KeyValue!]! |
| logs: [LogEntity!]! |
| } |
| |
| # Ref represents the link between the segment and its parents. |
| # The parent(ref) may not exists, which means batch process. |
| # The UI should display a list, representing the other trace IDs. |
| type Ref { |
| traceId: ID! |
| parentSegmentId: ID! |
| parentSpanId: Int! |
| # Ref type represents why did the ref happen. |
| # Include: 1) CrossProcess 2) CrossThread |
| type: RefType! |
| } |
| |
| enum RefType { |
| CROSS_PROCESS, |
| CROSS_THREAD |
| } |
| |
| type LogEntity { |
| time: Long! |
| data: [KeyValue!] |
| } |
| |
| extend type Query { |
| queryBasicTraces(condition: TraceQueryCondition): TraceBrief |
| queryTrace(traceId: ID!): Trace |
| } |