All Downloads are FREE. Search and download functionalities are using the official Maven repository.

query-protocol.trace.graphqls Maven / Gradle / Ivy

# 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
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy