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

query-protocol.continuous-profiling.graphqls Maven / Gradle / Ivy

There is a newer version: 10.1.0
Show newest version
# 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.

# Set policy configuration
input ContinuousProfilingPolicyCreation {
    # service of the policy
    serviceId: ID!
    # target of the policy
    targets: [ContinuousProfilingPolicyTargetCreation!]!
}

input ContinuousProfilingPolicyTargetCreation {
    targetType: ContinuousProfilingTargetType!
    checkItems: [ContinuousProfilingPolicyItemCreation!]!
}

# Policy item of continuous profiling
input ContinuousProfilingPolicyItemCreation {
    # define the monitor type to collect metrics
    type: ContinuousProfilingMonitorType!
    # threshold of policy, which decide by the monitor type
    threshold: String!
    # the length of time to evaluate the metrics
    period: Int!
    # how many times after the metrics match the threshold, will trigger profiling
    count: Int!
    # the URI path/regex filter when monitor the HTTP related types
    uriList: [String!]
    uriRegex: String
}

enum ContinuousProfilingTargetType {
    # eBPF On CPU Profiling
    ON_CPU,
    # eBPF Off CPU Profiling
    OFF_CPU,
    # eBPF Network Profiling
    NETWORK
}

type ContinuousProfilingSetResult {
    # TRUE if the policy is set successfully
    status: Boolean!
    # error reason when status == FALSE
    errorReason: String
}

type ContinuousProfilingPolicyTarget {
    type: ContinuousProfilingTargetType!
    checkItems: [ContinuousProfilingPolicyItem!]!
    triggeredCount: Int!
    lastTriggerTimestamp: Long
}

type ContinuousProfilingPolicyItem {
    type: ContinuousProfilingMonitorType!
    threshold: String!
    period: Int!
    count: Int!
    uriList: [String!]
    uriRegex: String
}

# The Continuous Profiling monitoring instance
type ContinuousProfilingMonitoringInstance {
    id: ID!
    name: String!
    attributes: [Attribute!]!
    triggeredCount: Int!
    lastTriggerTimestamp: Long

    # monitoring process list under the monitoring instance
    processes: [ContinuousProfilingMonitoringProcess!]!
}

# The Continuous Profiling monitoring process
type ContinuousProfilingMonitoringProcess {
    id: ID!
    name: String!
    detectType: String!
    labels: [String!]!
    triggeredCount: Int!
    lastTriggerTimestamp: Long
}

extend type Mutation {
    # set the continuous profiling policy
    setContinuousProfilingPolicy(request: ContinuousProfilingPolicyCreation!): ContinuousProfilingSetResult!
}

extend type Query {
    # query all continuous profiling task through service
    queryContinuousProfilingServiceTargets(serviceId: ID!): [ContinuousProfilingPolicyTarget!]!
    # query all continuous profiling monitoring instances through service and policy
    queryContinuousProfilingMonitoringInstances(serviceId: ID!, target: ContinuousProfilingTargetType!): [ContinuousProfilingMonitoringInstance!]!
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy