blob: eac75a0aa8c5329a6f809ba2c7eac9b1435ea2f0 [file] [log] [blame]
/*
* 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";
package skywalking.v3;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.ebpf.profiling.process.v3";
option go_package = "skywalking.apache.org/repo/goapi/collect/ebpf/profiling/process/v3";
import "common/Common.proto";
// Define the detected processes and report them.
service EBPFProcessService {
// Report discovered process in Rover
rpc reportProcesses (EBPFProcessReportList) returns (EBPFReportProcessDownstream) {
}
// Keep the process alive in the backend.
rpc keepAlive (EBPFProcessPingPkgList) returns (Commands) {
}
}
message EBPFProcessReportList {
repeated EBPFProcessProperties processes = 1;
// An ID generated by eBPF agent, should be unique globally.
string ebpfAgentID = 2;
}
message EBPFProcessProperties {
// The Process metadata
oneof metadata {
EBPFHostProcessMetadata hostProcess = 1;
EBPFKubernetesProcessMetadata k8sProcess = 2;
}
}
message EBPFHostProcessMetadata {
// [required] Entity metadata
// Must ensure that entity information is unique at the time of reporting
EBPFProcessEntityMetadata entity = 1;
// [required] The Process id of the host
int32 pid = 2;
// [optional] properties of the process
repeated KeyStringValuePair properties = 3;
}
// Process Entity metadata
message EBPFProcessEntityMetadata {
// [required] Process belong layer name which define in the backend
string layer = 1;
// [required] Process belong service name
string serviceName = 2;
// [required] Process belong service instance name
string instanceName = 3;
// [required] Process name
string processName = 4;
// Process labels for aggregate from service
repeated string labels = 5;
}
// Kubernetes process metadata
message EBPFKubernetesProcessMetadata {
// [required] Entity metadata
// Must ensure that entity information is unique at the time of reporting
EBPFProcessEntityMetadata entity = 1;
// [required] The Process id of the host
int32 pid = 2;
// [optional] properties of the process
repeated KeyStringValuePair properties = 3;
}
message EBPFReportProcessDownstream {
repeated EBPFProcessDownstream processes = 1;
}
message EBPFProcessDownstream {
// Generated process id
string processId = 1;
// Locate the process by basic information
oneof process {
EBPFHostProcessDownstream hostProcess = 2;
EBPFKubernetesProcessDownstream k8sProcess = 3;
}
}
message EBPFHostProcessDownstream {
int32 pid = 1;
EBPFProcessEntityMetadata entityMetadata = 2;
}
// Kubernetes process downstream
message EBPFKubernetesProcessDownstream {
int32 pid = 1;
EBPFProcessEntityMetadata entityMetadata = 2;
}
message EBPFProcessPingPkgList {
repeated EBPFProcessPingPkg processes = 1;
// An ID generated by eBPF agent, should be unique globally.
string ebpfAgentID = 2;
}
message EBPFProcessPingPkg {
// Process entity
EBPFProcessEntityMetadata entityMetadata = 1;
// Minimize necessary properties
repeated KeyStringValuePair properties = 2;
}