123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- /*
- * This file defines language for trace queries and serialization format for trace logs
- */
- syntax = "proto3";
- package NLWTrace;
- option go_package = "a.yandex-team.ru/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;
- }
|