XRootD
XrdHttpMon Class Reference

#include <XrdHttpMon.hh>

+ Collaboration diagram for XrdHttpMon:

Classes

struct  HttpInfo
 

Public Types

enum  StatusCodes {
  sc_100 ,
  sc_200 ,
  sc_201 ,
  sc_202 ,
  sc_206 ,
  sc_207 ,
  sc_302 ,
  sc_307 ,
  sc_400 ,
  sc_401 ,
  sc_403 ,
  sc_404 ,
  sc_405 ,
  sc_409 ,
  sc_416 ,
  sc_423 ,
  sc_500 ,
  sc_502 ,
  sc_504 ,
  sc_507 ,
  sc_UNKNOWN ,
  sc_Count
}
 

Static Public Member Functions

static void Initialize (XrdSysLogger *logP, XrdXrootdGStream *gStream, XrdMonRoll *mrollP)
 
static bool IsInitialized ()
 
static void Record (XrdHttpReq &req, int code)
 
static void * Start (void *)
 

Detailed Description

Definition at line 13 of file XrdHttpMon.hh.


Class Documentation

◆ XrdHttpMon::HttpInfo

struct XrdHttpMon::HttpInfo

Definition at line 44 of file XrdHttpMon.hh.

+ Collaboration diagram for XrdHttpMon::HttpInfo:
Class Members
RAtomic_uint64_t count
RAtomic_uint64_t duration_us
RAtomic_uint64_t error_network
RAtomic_uint64_t error_xrootd
RAtomic_uint64_t success

Member Enumeration Documentation

◆ StatusCodes

Enumerator
sc_100 
sc_200 
sc_201 
sc_202 
sc_206 
sc_207 
sc_302 
sc_307 
sc_400 
sc_401 
sc_403 
sc_404 
sc_405 
sc_409 
sc_416 
sc_423 
sc_500 
sc_502 
sc_504 
sc_507 
sc_UNKNOWN 
sc_Count 

Definition at line 18 of file XrdHttpMon.hh.

18  {
19  sc_100,
20  sc_200,
21  sc_201,
22  sc_202,
23  sc_206,
24  sc_207,
25  sc_302,
26  sc_307,
27  sc_400,
28  sc_401,
29  sc_403,
30  sc_404,
31  sc_405,
32  sc_409,
33  sc_416,
34  sc_423,
35  sc_500,
36  sc_502,
37  sc_504,
38  sc_507,
39  sc_UNKNOWN,
40  sc_Count
41  };

Member Function Documentation

◆ Initialize()

void XrdHttpMon::Initialize ( XrdSysLogger logP,
XrdXrootdGStream gStream,
XrdMonRoll mrollP 
)
static

Definition at line 74 of file XrdHttpMon.cc.

74  {
75  eDest.logger(logP);
76  XrdHttpMon::gStream = gStream;
77  XrdHttpMon::mrollP = mrollP;
78 
79  if (gStream != nullptr){
80  hasGStream = true;
81  flushPeriod = std::chrono::seconds(gStream->GetAutoFlush());
82  }
83 
84  if (mrollP != nullptr) {
85  hasMonRoll = true;
86  mrollP->Register(XrdMonRoll::AddOn, "http_plugin", statsSchema);
87  }
88 
89  isInitialized = true;
90 }
XrdSysError eDest(0, "HttpMon")
bool Register(rollType setType, const char *setName, std::vector< Item > &iVec)
Definition: XrdMonRoll.cc:53
XrdSysLogger * logger(XrdSysLogger *lp=0)
Definition: XrdSysError.hh:175

References XrdMonRoll::AddOn, eDest, XrdXrootdGStream::GetAutoFlush(), XrdSysError::logger(), and XrdMonRoll::Register().

+ Here is the call graph for this function:

◆ IsInitialized()

static bool XrdHttpMon::IsInitialized ( )
inlinestatic

Definition at line 56 of file XrdHttpMon.hh.

56 { return isInitialized; }

◆ Record()

void XrdHttpMon::Record ( XrdHttpReq req,
int  code 
)
static

Definition at line 106 of file XrdHttpMon.cc.

107 {
108  // Early return if monitoring is not enabled.
109  if (!isInitialized) return;
110 
111  // Only record once we have a "final" (>= 200) response code. 100-Continue is interim.
112  if (code < 200) return;
113 
114  std::chrono::steady_clock::duration duration{};
115  if (hasGStream) {
116  const auto now = std::chrono::steady_clock::now();
117  duration = now - req.startTime;
118  }
119 
120  StatusCodes statusCode = ToStatusCode(code);
121  XrdHttpMonState st = req.monState;
122 
123  if (req.request >= XrdHttpReq::ReqType::rtCount || req.request < 0) {
124  eDest.Emsg("Record", "ERROR: Record called with invalid request type");
125  return;
126  }
127 
128  switch (st) {
130  RecordGStreamCount(req.request, statusCode);
131  RecordMonRollVerb(req.request);
133  return;
134 
136  RecordGStreamSuccess(req.request, statusCode, duration);
137  RecordMonRollStatus(statusCode);
139  return;
140 
142  RecordGStreamErrNet(req.request, statusCode, duration);
143  RecordMonRollStatus(statusCode);
145  return;
146 
148  RecordGStreamErrProt(req.request, statusCode, duration);
149  RecordMonRollStatus(statusCode);
151  return;
152 
154  eDest.Emsg("Record", "ERROR: Record called after state was set to DONE");
155  return;
156  }
157 }
XrdHttpMonState
ReqType request
The request we got.
Definition: XrdHttpReq.hh:268
std::chrono::steady_clock::time_point startTime
Definition: XrdHttpReq.hh:368
XrdHttpMonState monState
Definition: XrdHttpReq.hh:377
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)
Definition: XrdSysError.cc:116

References ACTIVE, DONE, eDest, XrdSysError::Emsg(), ERR_NET, ERR_PROT, XrdHttpReq::monState, NEW, XrdHttpReq::request, and XrdHttpReq::startTime.

+ Here is the call graph for this function:

◆ Start()

void * XrdHttpMon::Start ( void *  )
static

Definition at line 99 of file XrdHttpMon.cc.

99  {
100  while (true) {
101  std::this_thread::sleep_for(flushPeriod);
102  Report();
103  }
104 }

The documentation for this class was generated from the following files: