xrootd
XrdXrootdMonData.hh
Go to the documentation of this file.
1#ifndef __XRDXROOTDMONDATA__
2#define __XRDXROOTDMONDATA__
3/******************************************************************************/
4/* */
5/* X r d X r o o t d M o n D a t a . h h */
6/* */
7/* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* All Rights Reserved */
9/* Produced by Andrew Hanushevsky for Stanford University under contract */
10/* DE-AC02-76-SFO0515 with the Department of Energy */
11/* */
12/* This file is part of the XRootD software suite. */
13/* */
14/* XRootD is free software: you can redistribute it and/or modify it under */
15/* the terms of the GNU Lesser General Public License as published by the */
16/* Free Software Foundation, either version 3 of the License, or (at your */
17/* option) any later version. */
18/* */
19/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22/* License for more details. */
23/* */
24/* You should have received a copy of the GNU Lesser General Public License */
25/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27/* */
28/* The copyright holder's institutional names and contributor's names may not */
29/* be used to endorse or promote products derived from this software without */
30/* specific prior written permission of the institution or contributor. */
31/******************************************************************************/
32
33#include "XProtocol/XPtypes.hh"
34
35/******************************************************************************/
36/* P a c k e t D e f i n i t i o n s */
37/******************************************************************************/
38
40 {kXR_char code; // '='|'d'|'f'|'i'|'p'|'r'|'t'|'u'|'x'
41 kXR_char pseq; // packet sequence
42 kXR_unt16 plen; // packet length
43 kXR_int32 stod; // Unix time at Server Start
44 };
45
47 {union {kXR_int64 val;
48 kXR_char id[8];
56 };
57
60 XrdXrootdMonTrace info[sizeof(XrdXrootdMonTrace)]; //This is really [n]
61 };
62
65 struct {kXR_char Type;
68 } rdr; } arg0;
71 };
72
75 union {kXR_int64 sID;
77 XrdXrootdMonRedir info[sizeof(XrdXrootdMonRedir)]; //This is really [n]
78 };
79
83 char info[1024+256];
84 };
85
92const kXR_char XROOTD_MON_REDHOST = 0xf0; // No Modifier
94
95
98const kXR_char XROOTD_MON_MAPFSTA = 'f'; // The "f" stream
100const kXR_char XROOTD_MON_MAPMIGR = 'm'; // Internal use only!
103const kXR_char XROOTD_MON_MAPSTAG = 's'; // Internal use only!
107
108// The following bits are insert in the low order 4 bits of the MON_REDIRECT
109// entry code to indicate the actual operation that was requestded.
110//
111const kXR_char XROOTD_MON_REDSID = 0xf0; // Server Identification
112const kXR_char XROOTD_MON_REDTIME = 0x00; // Timing mark
113
114const kXR_char XROOTD_MON_REDIRECT = 0x80; // With Modifier below!
115const kXR_char XROOTD_MON_REDLOCAL = 0x90; // With Modifier below!
116
117const kXR_char XROOTD_MON_CHMOD = 0x01; // Modifiers for the above
131
134
135const int XROOTD_MON_REDMASK = 0x00000ff;
136const int XROOTD_MON_SRCMASK = 0x000000f;
137const int XROOTD_MON_TRGMASK = 0x7fffff0;
138const int XROOTD_MON_NEWSTID = 0x8000000;
139
140/******************************************************************************/
141/* " f " S t r e a m S p e c i f i c R e c o r d s */
142/******************************************************************************/
143
144// The UDP buffer layout is as follows:
145//
146// XrdXrootdMonHeader with Code == XROOTD_MON_MAPFSTA
147// XrdXrootdMonFileTOD with recType == isTime
148// XrdXrootdMonFileHdr with recType == one of recTval (variable length)
149// ... additional XrdXrootdMonFileHdr's (variable length)
150// XrdXrootdMonFileTOD with recType == isTime
151
153{
154enum recTval {isClose = 0, // Record for close
155 isOpen, // Record for open
156 isTime, // Record for time
157 isXfr, // Record for transfers
158 isDisc // Record for disconnection
159 };
160
161enum recFval {forced =0x01, // If recFlag == isClose close due to disconnect
162 hasOPS =0x02, // If recFlag == isClose MonStatXFR + MonStatOPS
163 hasSSQ =0x04, // If recFlag == isClose XFR + OPS + MonStatSSQ
164 hasLFN =0x01, // If recFlag == isOpen the lfn is present
165 hasRW =0x02, // If recFlag == isOpen file opened r/w
166 hasSID =0x01 // if recFlag == isTime sID is present (new rec)
167 };
168
169char recType; // RecTval: isClose | isOpen | isTime | isXfr
170char recFlag; // RecFval: Record type-specific flags
171short recSize; // Size of this record in bytes
172union
173{
174kXR_unt32 fileID; // dictid of file for all rectypes except "disc" & "time"
175kXR_unt32 userID; // dictid of user for rectypes equal "disc"
176short nRecs[2]; // isTime: nRecs[0] == isXfr recs nRecs[1] == total recs
177};
178};
179
180// The following record is always be present as the first record in the udp
181// udp packet and should be used to establish the recording window.
182//
184{
186int tBeg; // time(0) of following record
187int tEnd; // time(0) when packet was sent
188kXR_int64 sID; // Server id in lower 48 bits
189};
190
191
192// The following variable length structure exists in XrdXrootdMonFileOPN if
193// "lfn" has been specified. It exists only when recFlag & hasLFN is TRUE.
194// The user's dictid will be zero (missing) if user monitoring is not enabled.
195//
197{
198kXR_unt32 user; // Monitoring dictid for the user, may be 0.
199char lfn[1028];// Variable length, use recSize!
200};
201
202// The following is reported when a file is opened. If "lfn" was specified and
203// Hdr.recFlag & hasLFN is TRUE the XrdXrootdMonFileLFN structure is present.
204// However, it variable in size and the next record will be found using recSize.
205// The lfn is gauranteed to end with at least one null byte.
206//
208{
210long long fsz; // 8 file size at time of open
211XrdXrootdMonFileLFN ufn; // Present ONLY if recFlag & hasLFN is TRUE
212};
213
214// The following data is collected on a per file basis
215//
216struct XrdXrootdMonStatOPS // 48 Bytes
217{
218int read; // Number of read() calls
219int readv; // Number of readv() calls
220int write; // Number of write() calls
221short rsMin; // Smallest readv() segment count
222short rsMax; // Largest readv() segment count
223long long rsegs; // Number of readv() segments
224int rdMin; // Smallest read() request size
225int rdMax; // Largest read() request size
226int rvMin; // Smallest readv() request size
227int rvMax; // Largest readv() request size
228int wrMin; // Smallest write() request size
229int wrMax; // Largest write() request size
230};
231
233{
234long long dlong;
235double dreal;
236};
237
238struct XrdXrootdMonStatSSQ // 32 Bytes (all values net ordered IEEE754)
239{
240XrdXrootdMonDouble read; // Sum (all read requests)**2 (size)
241XrdXrootdMonDouble readv; // Sum (all readv requests)**2 (size as a unit)
242XrdXrootdMonDouble rsegs; // Sum (all readv segments)**2 (count as a unit)
243XrdXrootdMonDouble write; // Sum (all write requests)**2 (size)
244};
245
246// The following transfer data is collected for each open file.
247//
249{
250long long read; // Bytes read from file so far using read()
251long long readv; // Bytes read from file so far using readv()
252long long write; // Bytes written to file so far
253};
254
255// The following is reported upon file close. This is a variable length record.
256// The record always contains XrdXrootdMonStatXFR after XrdXrootdMonFileHdr.
257// If (recFlag & hasOPS) TRUE XrdXrootdMonStatOPS follows XrdXrootdMonStatXFR
258// If (recFlag & hasSSQ) TRUE XrdXrootdMonStatSQV follows XrdXrootdMonStatOPS
259// The XrdXrootdMonStatSSQ information is present only if "ssq" was specified.
260//
261struct XrdXrootdMonFileCLS // 32 | 80 | 96 Bytes
262{
263XrdXrootdMonFileHdr Hdr; // Always present (recSize has full length)
264XrdXrootdMonStatXFR Xfr; // Always present
265XrdXrootdMonStatOPS Ops; // Only present when (recFlag & hasOPS) is True
266XrdXrootdMonStatSSQ Ssq; // Only present when (recFlag & hasSSQ) is True
267};
268
269// The following is reported when a user ends a session.
270//
272{
274};
275
276// The following is reported each interval*count for each open file when "xfr"
277// is specified. These records may be interspersed with other records.
278//
279struct XrdXrootdMonFileXFR // 32 Bytes
280{
281XrdXrootdMonFileHdr Hdr; // Always present with recType == isXFR
282XrdXrootdMonStatXFR Xfr; // Always present
283};
284#endif
long long kXR_int64
Definition: XPtypes.hh:98
int kXR_int32
Definition: XPtypes.hh:89
unsigned int kXR_unt32
Definition: XPtypes.hh:90
short kXR_int16
Definition: XPtypes.hh:66
unsigned short kXR_unt16
Definition: XPtypes.hh:67
unsigned char kXR_char
Definition: XPtypes.hh:65
const kXR_char XROOTD_MON_OPENW
Definition: XrdXrootdMonData.hh:122
const kXR_char XROOTD_MON_STAT
Definition: XrdXrootdMonData.hh:129
const kXR_char XROOTD_MON_REDLOCAL
Definition: XrdXrootdMonData.hh:115
const kXR_char XROOTD_MON_DISC
Definition: XrdXrootdMonData.hh:88
const kXR_char XROOTD_MON_WINDOW
Definition: XrdXrootdMonData.hh:93
const kXR_char XROOTD_MON_READV
Definition: XrdXrootdMonData.hh:90
const int XROOTD_MON_SRCMASK
Definition: XrdXrootdMonData.hh:136
const kXR_char XROOTD_MON_PREP
Definition: XrdXrootdMonData.hh:125
const int XROOTD_MON_NEWSTID
Definition: XrdXrootdMonData.hh:138
const kXR_char XROOTD_MON_MAPUSER
Definition: XrdXrootdMonData.hh:105
const kXR_char XROOTD_MON_APPID
Definition: XrdXrootdMonData.hh:86
const kXR_char XROOTD_MON_MAPINFO
Definition: XrdXrootdMonData.hh:99
const kXR_char XROOTD_MON_OPENC
Definition: XrdXrootdMonData.hh:120
const kXR_char XROOTD_MON_TRUNC
Definition: XrdXrootdMonData.hh:130
const kXR_char XROOTD_MON_REDSID
Definition: XrdXrootdMonData.hh:111
const kXR_char XROOTD_MON_MAPIDNT
Definition: XrdXrootdMonData.hh:96
const kXR_char XROOTD_MON_MAPTRCE
Definition: XrdXrootdMonData.hh:104
const kXR_char XROOTD_MON_MAPXFER
Definition: XrdXrootdMonData.hh:106
const kXR_char XROOTD_MON_BOUNDP
Definition: XrdXrootdMonData.hh:133
const kXR_char XROOTD_MON_MAPMIGR
Definition: XrdXrootdMonData.hh:100
const kXR_char XROOTD_MON_CLOSE
Definition: XrdXrootdMonData.hh:87
const kXR_char XROOTD_MON_CHMOD
Definition: XrdXrootdMonData.hh:117
const kXR_char XROOTD_MON_FORCED
Definition: XrdXrootdMonData.hh:132
const kXR_char XROOTD_MON_MAPPATH
Definition: XrdXrootdMonData.hh:97
const kXR_char XROOTD_MON_LOCATE
Definition: XrdXrootdMonData.hh:118
const kXR_char XROOTD_MON_MAPSTAG
Definition: XrdXrootdMonData.hh:103
const kXR_char XROOTD_MON_OPENR
Definition: XrdXrootdMonData.hh:121
const kXR_char XROOTD_MON_REDTIME
Definition: XrdXrootdMonData.hh:112
const int XROOTD_MON_TRGMASK
Definition: XrdXrootdMonData.hh:137
const kXR_char XROOTD_MON_OPEN
Definition: XrdXrootdMonData.hh:89
const kXR_char XROOTD_MON_MV
Definition: XrdXrootdMonData.hh:124
const int XROOTD_MON_REDMASK
Definition: XrdXrootdMonData.hh:135
const kXR_char XROOTD_MON_MAPFSTA
Definition: XrdXrootdMonData.hh:98
const kXR_char XROOTD_MON_REDIRECT
Definition: XrdXrootdMonData.hh:114
const kXR_char XROOTD_MON_RMDIR
Definition: XrdXrootdMonData.hh:128
const kXR_char XROOTD_MON_RM
Definition: XrdXrootdMonData.hh:127
const kXR_char XROOTD_MON_OPENDIR
Definition: XrdXrootdMonData.hh:119
const kXR_char XROOTD_MON_REDHOST
Definition: XrdXrootdMonData.hh:92
const kXR_char XROOTD_MON_MAPPURG
Definition: XrdXrootdMonData.hh:101
const kXR_char XROOTD_MON_MAPREDR
Definition: XrdXrootdMonData.hh:102
const kXR_char XROOTD_MON_QUERY
Definition: XrdXrootdMonData.hh:126
const kXR_char XROOTD_MON_MKDIR
Definition: XrdXrootdMonData.hh:123
const kXR_char XROOTD_MON_READU
Definition: XrdXrootdMonData.hh:91
Definition: XrdXrootdMonData.hh:59
XrdXrootdMonTrace info[sizeof(XrdXrootdMonTrace)]
Definition: XrdXrootdMonData.hh:60
XrdXrootdMonHeader hdr
Definition: XrdXrootdMonData.hh:59
Definition: XrdXrootdMonData.hh:74
kXR_char sXX[8]
Definition: XrdXrootdMonData.hh:76
XrdXrootdMonHeader hdr
Definition: XrdXrootdMonData.hh:74
kXR_int64 sID
Definition: XrdXrootdMonData.hh:75
XrdXrootdMonRedir info[sizeof(XrdXrootdMonRedir)]
Definition: XrdXrootdMonData.hh:77
Definition: XrdXrootdMonData.hh:262
XrdXrootdMonStatXFR Xfr
Definition: XrdXrootdMonData.hh:264
XrdXrootdMonStatOPS Ops
Definition: XrdXrootdMonData.hh:265
XrdXrootdMonStatSSQ Ssq
Definition: XrdXrootdMonData.hh:266
XrdXrootdMonFileHdr Hdr
Definition: XrdXrootdMonData.hh:263
Definition: XrdXrootdMonData.hh:272
XrdXrootdMonFileHdr Hdr
Definition: XrdXrootdMonData.hh:273
Definition: XrdXrootdMonData.hh:153
kXR_unt32 userID
Definition: XrdXrootdMonData.hh:175
kXR_unt32 fileID
Definition: XrdXrootdMonData.hh:174
short nRecs[2]
Definition: XrdXrootdMonData.hh:176
short recSize
Definition: XrdXrootdMonData.hh:171
char recType
Definition: XrdXrootdMonData.hh:169
recTval
Definition: XrdXrootdMonData.hh:154
@ isDisc
Definition: XrdXrootdMonData.hh:158
@ isXfr
Definition: XrdXrootdMonData.hh:157
@ isTime
Definition: XrdXrootdMonData.hh:156
@ isOpen
Definition: XrdXrootdMonData.hh:155
@ isClose
Definition: XrdXrootdMonData.hh:154
char recFlag
Definition: XrdXrootdMonData.hh:170
recFval
Definition: XrdXrootdMonData.hh:161
@ hasRW
Definition: XrdXrootdMonData.hh:165
@ hasOPS
Definition: XrdXrootdMonData.hh:162
@ forced
Definition: XrdXrootdMonData.hh:161
@ hasLFN
Definition: XrdXrootdMonData.hh:164
@ hasSSQ
Definition: XrdXrootdMonData.hh:163
@ hasSID
Definition: XrdXrootdMonData.hh:166
Definition: XrdXrootdMonData.hh:197
char lfn[1028]
Definition: XrdXrootdMonData.hh:199
kXR_unt32 user
Definition: XrdXrootdMonData.hh:198
Definition: XrdXrootdMonData.hh:208
XrdXrootdMonFileLFN ufn
Definition: XrdXrootdMonData.hh:211
long long fsz
Definition: XrdXrootdMonData.hh:210
XrdXrootdMonFileHdr Hdr
Definition: XrdXrootdMonData.hh:209
Definition: XrdXrootdMonData.hh:184
XrdXrootdMonFileHdr Hdr
Definition: XrdXrootdMonData.hh:185
int tBeg
Definition: XrdXrootdMonData.hh:186
int tEnd
Definition: XrdXrootdMonData.hh:187
kXR_int64 sID
Definition: XrdXrootdMonData.hh:188
Definition: XrdXrootdMonData.hh:280
XrdXrootdMonStatXFR Xfr
Definition: XrdXrootdMonData.hh:282
XrdXrootdMonFileHdr Hdr
Definition: XrdXrootdMonData.hh:281
Definition: XrdXrootdMonData.hh:40
kXR_int32 stod
Definition: XrdXrootdMonData.hh:43
kXR_unt16 plen
Definition: XrdXrootdMonData.hh:42
kXR_char pseq
Definition: XrdXrootdMonData.hh:41
kXR_char code
Definition: XrdXrootdMonData.hh:40
Definition: XrdXrootdMonData.hh:81
kXR_unt32 dictid
Definition: XrdXrootdMonData.hh:82
char info[1024+256]
Definition: XrdXrootdMonData.hh:83
XrdXrootdMonHeader hdr
Definition: XrdXrootdMonData.hh:81
Definition: XrdXrootdMonData.hh:64
kXR_char Type
Definition: XrdXrootdMonData.hh:65
kXR_unt32 dictid
Definition: XrdXrootdMonData.hh:69
struct XrdXrootdMonRedir::@120::@122 rdr
union XrdXrootdMonRedir::@120 arg0
kXR_int32 Window
Definition: XrdXrootdMonData.hh:64
union XrdXrootdMonRedir::@121 arg1
kXR_int16 Port
Definition: XrdXrootdMonData.hh:67
kXR_char Dent
Definition: XrdXrootdMonData.hh:66
Definition: XrdXrootdMonData.hh:217
long long rsegs
Definition: XrdXrootdMonData.hh:223
short rsMax
Definition: XrdXrootdMonData.hh:222
int rvMax
Definition: XrdXrootdMonData.hh:227
int write
Definition: XrdXrootdMonData.hh:220
int read
Definition: XrdXrootdMonData.hh:218
int rvMin
Definition: XrdXrootdMonData.hh:226
int rdMax
Definition: XrdXrootdMonData.hh:225
int wrMin
Definition: XrdXrootdMonData.hh:228
short rsMin
Definition: XrdXrootdMonData.hh:221
int wrMax
Definition: XrdXrootdMonData.hh:229
int rdMin
Definition: XrdXrootdMonData.hh:224
int readv
Definition: XrdXrootdMonData.hh:219
Definition: XrdXrootdMonData.hh:239
XrdXrootdMonDouble write
Definition: XrdXrootdMonData.hh:243
XrdXrootdMonDouble read
Definition: XrdXrootdMonData.hh:240
XrdXrootdMonDouble readv
Definition: XrdXrootdMonData.hh:241
XrdXrootdMonDouble rsegs
Definition: XrdXrootdMonData.hh:242
Definition: XrdXrootdMonData.hh:249
long long readv
Definition: XrdXrootdMonData.hh:251
long long read
Definition: XrdXrootdMonData.hh:250
long long write
Definition: XrdXrootdMonData.hh:252
Definition: XrdXrootdMonData.hh:47
kXR_int64 val
Definition: XrdXrootdMonData.hh:47
union XrdXrootdMonTrace::@119 arg2
kXR_unt32 rTot[2]
Definition: XrdXrootdMonData.hh:50
kXR_int32 buflen
Definition: XrdXrootdMonData.hh:51
union XrdXrootdMonTrace::@117 arg0
kXR_int32 Window
Definition: XrdXrootdMonData.hh:52
kXR_unt16 sVal[4]
Definition: XrdXrootdMonData.hh:49
kXR_unt32 dictid
Definition: XrdXrootdMonData.hh:54
union XrdXrootdMonTrace::@118 arg1
kXR_unt32 wTot
Definition: XrdXrootdMonData.hh:53
Definition: XrdXrootdMonData.hh:233
long long dlong
Definition: XrdXrootdMonData.hh:234
double dreal
Definition: XrdXrootdMonData.hh:235