pkg/process/finders/base/finder.go (27 lines of code) (raw):

// Licensed to 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. Apache Software Foundation (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. package base import ( "context" commonv3 "skywalking.apache.org/repo/goapi/collect/common/v3" v3 "skywalking.apache.org/repo/goapi/collect/ebpf/profiling/process/v3" "github.com/apache/skywalking-rover/pkg/module" "github.com/apache/skywalking-rover/pkg/process/api" ) type BuildEBPFProcessContext struct { HostIP string } // ProcessFinder is defined how to detect the process and communicate with backend type ProcessFinder interface { // Init the finder before Start Init(ctx context.Context, conf FinderBaseConfig, manager ProcessManager) error // Start to detect process Start() // Stop the process detect Stop() error // DetectType of Process is detecting DetectType() api.ProcessDetectType // ShouldMonitor validate the process needs to be monitored, if true, then add it into the storage ShouldMonitor(pid int32) bool // ValidateProcessIsSame between two same finder process ValidateProcessIsSame(p1, p2 api.DetectedProcess) bool // BuildEBPFProcess is transform the process entity as backend protocol data BuildEBPFProcess(ctx *BuildEBPFProcessContext, process api.DetectedProcess) *v3.EBPFProcessProperties // BuildNecessaryProperties is getting minimize necessary properties when keep alive BuildNecessaryProperties(process api.DetectedProcess) []*commonv3.KeyStringValuePair // ParseProcessId is means how to read the process id receive from backend ParseProcessID(process api.DetectedProcess, downstream *v3.EBPFProcessDownstream) string } // ProcessManager is an API work for help ProcessFinder synchronized process with backend type ProcessManager interface { GetModuleManager() *module.Manager // SyncAllProcessInFinder is mean synchronized all processes data from current ProcessFinder SyncAllProcessInFinder(processes []api.DetectedProcess) // AddDetectedProcess only add the specific processes AddDetectedProcess(processes []api.DetectedProcess) }