Profile.proto 2.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/*
 * 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.
 *
 */

syntax = "proto3";

option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.profile";
option csharp_namespace = "SkyWalking.NetworkProtocol";

import "common/common.proto";
26 27
import "common/trace-common.proto";
import "language-agent/Downstream.proto";
28 29 30 31 32 33 34

service ProfileTask {

    // query all sniffer need to execute profile task commands
    rpc getProfileTaskCommands (ProfileTaskCommandQuery) returns (Commands) {
    }

35 36
    // collect dumped thread snapshot
    rpc collectSnapshot (stream ThreadSnapshot) returns (Downstream) {
37 38 39 40 41 42
    }

    // report profiling task finished
    rpc reportTaskFinish (ProfileTaskFinishReport) returns (Downstream) {
    }

43 44 45 46 47 48 49 50 51 52
}

message ProfileTaskCommandQuery {
    // current sniffer information
    int32 serviceId = 1;
    int32 instanceId = 2;

    // last commmand timestamp
    int64 lastCommandTime = 3;
}
53

54 55
// dumped thread snapshot
message ThreadSnapshot {
56 57 58 59 60 61 62 63 64
    // profile task id
    string taskId = 1;
    // dumped segment id
    UniqueId traceSegmentId = 2;
    // dump timestamp
    int64 time = 3;
    // snapshot dump sequence, start with zero
    int32 sequence = 4;
    // snapshot stack
65
    ThreadStack stack = 5;
66 67
}

68 69
message ThreadStack {
    // stack code signature list
70 71 72 73 74 75 76 77 78 79 80 81
    repeated string codeSignatures = 1;
}

// profile task finished report
message ProfileTaskFinishReport {
    // current sniffer information
    int32 serviceId = 1;
    int32 instanceId = 2;

    // profile task
    string taskId = 3;
}