blob: 4702f56c0aa5f038004b4be5a4cd5d5ef6b93f82 (
plain) (
tree)
|
|
/*
* This file defines language for trace queries and serialization format for trace logs
*/
syntax = "proto3";
package NLWTrace;
option go_package = "github.com/ydb-platform/ydb/library/cpp/lwtrace/protos";
message TProbeDesc {
string Name = 1; // Use either name+provider
string Provider = 3;
string Group = 2; // or group
}
enum EOperatorType {
OT_EQ = 0;
OT_NE = 1;
OT_LT = 2;
OT_LE = 3;
OT_GT = 4;
OT_GE = 5;
}
message TArgument {
string Param = 1;
bytes Value = 2;
string Variable = 3;
}
message TOperator {
EOperatorType Type = 1;
repeated TArgument Argument = 8;
}
message TPredicate {
repeated TOperator Operators = 1; // All operators are combined using logical AND
double SampleRate = 2; // value 1.0 means trigger actions on 100% events (do not sample if value is not set)
}
message TLogAction {
bool DoNotLogParams = 2;
bool LogTimestamp = 3;
uint32 MaxRecords = 4; // Do not write more than MaxRecords records to the log (count from the trace beginning, not start)
}
message TPrintToStderrAction {
}
message TKillAction {
}
message TSleepAction {
uint64 NanoSeconds = 1;
}
message TCustomAction {
string Name = 1;
repeated string Opts = 2;
}
enum EStatementType {
ST_MOV = 0;
ST_ADD = 1;
ST_SUB = 2;
ST_MUL = 3;
ST_DIV = 4;
ST_MOD = 5;
ST_ADD_EQ = 6;
ST_SUB_EQ = 7;
ST_INC = 8;
ST_DEC = 9;
}
message TStatementAction {
EStatementType Type = 1;
repeated TArgument Argument = 2;
}
message TRunLogShuttleAction {
bool Ignore = 1;
uint64 ShuttlesCount = 2;
uint64 MaxTrackLength = 3;
}
message TEditLogShuttleAction {
bool Ignore = 1;
}
message TDropLogShuttleAction {
}
message TAction {
TLogAction LogAction = 2;
TPrintToStderrAction PrintToStderrAction = 3;
TCustomAction CustomAction = 4;
TKillAction KillAction = 6;
TSleepAction SleepAction = 7;
TStatementAction StatementAction = 8;
TRunLogShuttleAction RunLogShuttleAction = 100;
TEditLogShuttleAction EditLogShuttleAction = 101;
TDropLogShuttleAction DropLogShuttleAction = 102;
}
message TBlock {
TProbeDesc ProbeDesc = 1;
TPredicate Predicate = 2;
repeated TAction Action = 3;
}
message TQuery {
// Number of events to hold for every thread in cyclic buffer
// (Won't be used if LogDurationUs is set to non-zero value)
uint32 PerThreadLogSize = 1;
// Hold events for last Duration microseconds
// (If zero, than per-thread cyclic buffer will be used to store events)
uint64 LogDurationUs = 2;
repeated TBlock Blocks = 3;
}
message TDashboard {
message TCell {
optional string Url = 1;
optional string Title = 2;
optional string Text = 3;
optional uint32 RowSpan = 4;
optional uint32 ColSpan = 5;
}
message TRow {
repeated TCell Cells = 1;
}
optional string Name = 1;
optional string Description = 2;
repeated TRow Rows = 3;
}
//////////////////////////////////////////////////////////////////////////////////////////////
// Serialization format for trace logs //
//////////////////////////////////////////////////////////////////////////////////////////////
enum EParamTypePb {
PT_UNKNOWN = 0;
PT_I64 = 1;
PT_Ui64 = 2;
PT_Double = 3;
PT_Str = 4;
PT_Symbol = 5;
PT_Check = 6;
}
message TEventPb {
string Name = 1;
repeated string Groups = 2; // First group is provider
repeated EParamTypePb ParamTypes = 3;
repeated string ParamNames = 4;
}
message TLogItemPb {
uint64 Thread = 1;
string Name = 2;
string Provider = 3;
repeated bytes Params = 4;
uint64 Timestamp = 5; // microseconds since epoch
uint64 TimestampCycles = 6; // cycles since machine boot
}
message TThreadLogPb {
uint64 ThreadId = 1;
repeated TLogItemPb LogItems = 2;
}
message TLogPb {
// Trace info
string Name = 1;
string Description = 2;
uint64 EventsCount = 3;
uint64 CrtTime = 4; // Log creation time (seconds since epoch)
// Traced host info
string Hostname = 101;
// Traced process info
string ProcessName = 201;
bytes CommandLine = 202;
uint64 ProcessStartTime = 203;
uint64 Pid = 204;
string VersionInfo = 205; // Svn info
// Trace query and results
TQuery Query = 301;
repeated TEventPb Events = 302;
repeated TThreadLogPb ThreadLogs = 303;
}
message TShuttlePb {
repeated TLogPb Parts = 1;
TQuery Query = 2;
}
message TOrbitPb {
repeated TShuttlePb Shuttles = 1;
}
////////////////////////////////////////////////////////////////////////////////
// Trace parameter.
message TTraceParam
{
// Value.
oneof Value
{
int64 IntValue = 2;
uint64 UintValue = 3;
double DoubleValue = 4;
bytes StrValue = 5;
}
}
////////////////////////////////////////////////////////////////////////////////
// Trace Event .
message TTraceEvent
{
// Probe name.
string Name = 1;
// Provider name.
string Provider = 2;
// Probe parameters.
repeated TTraceParam Params = 3;
// Event timestamp in nanosec since epoch.
uint64 TimestampNanosec = 4;
}
////////////////////////////////////////////////////////////////////////////////
// Shuttle trace .
message TShuttleTrace
{
// Request events.
repeated TTraceEvent Events = 1;
}
////////////////////////////////////////////////////////////////////////////////
// Trace request.
message TTraceRequest
{
// trace id of remote trace session
bool IsTraced = 1;
}
////////////////////////////////////////////////////////////////////////////////
// Trace response.
message TTraceResponse
{
// traced events
TShuttleTrace Trace = 1;
}
|