Changeset 6817602 in nscp for modules/CheckSystem


Ignore:
Timestamp:
02/22/06 21:47:57 (7 years ago)
Author:
Michael Medin <michael@…>
Branches:
master, 0.4.0, 0.4.1, 0.4.2, stable
Children:
1b7ae3d
Parents:
89f1a84
Message:

Lots of update (I really should checkin more often :)

Location:
modules/CheckSystem
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • modules/CheckSystem/CheckSystem.cpp

    r75d5e70 r6817602  
    1010#include <sysinfo.h> 
    1111#include <checkHelpers.hpp> 
     12#include <map> 
    1213 
    1314CheckSystem gNSClientCompat; 
     
    137138} 
    138139 
     140 
     141class cpuload_handler { 
     142public: 
     143  static int parse(std::string s) { 
     144    return strEx::stoi(s); 
     145  } 
     146  static int parse_percent(std::string s) { 
     147    return strEx::stoi(s); 
     148  } 
     149  static std::string print(int value) { 
     150    return strEx::itos(value) + "%"; 
     151  } 
     152  static std::string print_unformated(int value) { 
     153    return strEx::itos(value); 
     154  } 
     155  static std::string print_percent(int value) { 
     156    return strEx::itos(value) + "%"; 
     157  } 
     158  static std::string key_prefix() { 
     159    return "average load "; 
     160  } 
     161  static std::string key_postfix() { 
     162    return ""; 
     163  } 
     164}; 
    139165NSCAPI::nagiosReturn CheckSystem::checkCPU(const unsigned int argLen, char **char_args, std::string &msg, std::string &perf)  
    140166{ 
    141   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBoundsInteger> CPULoadConatiner; 
     167  typedef checkHolders::CheckConatiner<checkHolders::MaxMinBounds<checkHolders::NumericBounds<int, cpuload_handler> > > CPULoadConatiner; 
    142168 
    143169  std::list<std::string> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
     
    179205      return NSCAPI::returnUNKNOWN; 
    180206    } 
     207    int value = pObject->getCPUAvrage(load.data + "m"); 
     208    if (value == -1) { 
     209      msg = "ERROR: We don't collect data this far back: " + load.getAlias(); 
     210      return NSCAPI::returnUNKNOWN; 
     211    } 
    181212    if (bNSClient) { 
    182       int value = pObject->getCPUAvrage(load.data + "m"); 
    183       if (value == -1) { 
    184         msg = "ERROR: We don't collect data this far back: " + load.getAlias(); 
    185         return NSCAPI::returnUNKNOWN; 
    186       } 
    187213      if (!msg.empty()) msg += "&"; 
    188214      msg += strEx::itos(value); 
    189215    } else { 
    190       int value = pObject->getCPUAvrage(load.data); 
    191       if (value == -1) { 
    192         msg = "ERROR: We don't collect data this far back: " + load.getAlias(); 
    193         return NSCAPI::returnUNKNOWN; 
    194       } else { 
    195         load.setDefault(tmpObject); 
    196         load.runCheck(value, returnCode, msg, perf); 
    197       } 
     216      load.setDefault(tmpObject); 
     217      load.runCheck(value, returnCode, msg, perf); 
    198218    } 
    199219  } 
     
    380400NSCAPI::nagiosReturn CheckSystem::checkMem(const unsigned int argLen, char **char_args, std::string &msg, std::string &perf) 
    381401{ 
    382   typedef checkHolders::CheckConatiner<checkHolders::MaxMinPercentageBoundsDiskSizei64 > MemoryConatiner; 
     402  typedef checkHolders::CheckConatiner<checkHolders::MaxMinBounds<checkHolders::NumericPercentageBounds<checkHolders::PercentageValueType<unsigned __int64, unsigned __int64>, checkHolders::disk_size_handler<unsigned __int64> > > > MemoryConatiner; 
    383403  std::list<std::string> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
    384404  if (stl_args.empty()) { 
     
    390410  bool bNSClient = false; 
    391411  MemoryConatiner bounds; 
    392  
    393   bounds.data = "page"; 
     412  typedef enum { tPaged, tPage, tVirtual, tPhysical } check_type; 
     413  check_type type = tPaged; 
    394414 
    395415  MAP_OPTIONS_BEGIN(stl_args) 
     
    398418    MAP_OPTIONS_SHOWALL(bounds) 
    399419    MAP_OPTIONS_BOOL_TRUE(NSCLIENT, bNSClient) 
     420    MAP_OPTIONS_MODE("type", "paged", type, tPaged) 
     421    MAP_OPTIONS_MODE("type", "page", type, tPage) 
     422    MAP_OPTIONS_MODE("type", "virtual", type, tVirtual) 
     423    MAP_OPTIONS_MODE("type", "physical", type, tPhysical) 
    400424    MAP_OPTIONS_MISSING(msg, "Unknown argument: ") 
    401425  MAP_OPTIONS_END() 
    402426 
    403   PDHCollector *pObject = pdhThread.getThread(); 
    404   if (!pObject) { 
    405     msg = "ERROR: PDH Collection thread not running."; 
    406     return NSCAPI::returnUNKNOWN; 
    407   } 
    408   checkHolders::PercentageValueType<long long, long long> value; 
    409   value.value = pObject->getMemCommit(); 
    410   value.total = pObject->getMemCommitLimit(); 
     427 
     428  checkHolders::PercentageValueType<unsigned long long, unsigned long long> value; 
     429  if (type == tPaged) { 
     430    PDHCollector *pObject = pdhThread.getThread(); 
     431    if (!pObject) { 
     432      msg = "ERROR: PDH Collection thread not running."; 
     433      return NSCAPI::returnUNKNOWN; 
     434    } 
     435    value.value = pObject->getMemCommit(); 
     436    value.total = pObject->getMemCommitLimit(); 
     437    if (bounds.data.empty()) 
     438      bounds.data = "paged bytes"; 
     439  } else { 
     440    CheckMemory::memData data; 
     441    try { 
     442      data = memoryChecker.getMemoryStatus(); 
     443    } catch (CheckMemoryException e) { 
     444      msg = e.getError() + ":" + strEx::itos(e.getErrorCode()); 
     445      return NSCAPI::returnCRIT; 
     446    } 
     447//    MEMORYSTATUS mem; 
     448//    GlobalMemoryStatus(&mem); 
     449    if (type == tPage) { 
     450      value.value = data.pageFile.total-data.pageFile.avail; // mem.dwTotalPageFile-mem.dwAvailPageFile; 
     451      value.total = data.pageFile.total; //mem.dwTotalPageFile; 
     452      if (bounds.data.empty()) 
     453        bounds.data = "page file"; 
     454    } else  if (type == tPhysical) { 
     455      value.value = data.phys.total-data.phys.avail; //mem.dwTotalPhys-mem.dwAvailPhys; 
     456      value.total = data.phys.total; //mem.dwTotalPhys; 
     457      if (bounds.data.empty()) 
     458        bounds.data = "physical memory"; 
     459    } else  if (type == tVirtual) { 
     460      value.value = data.virtualMem.total-data.virtualMem.avail;//mem.dwTotalVirtual-mem.dwAvailVirtual; 
     461      value.total = data.virtualMem.total;//mem.dwTotalVirtual; 
     462      if (bounds.data.empty()) 
     463        bounds.data = "virtual memory"; 
     464    } 
     465  } 
     466 
    411467  if (bNSClient) { 
    412468    msg = strEx::itos(value.total) + "&" + strEx::itos(value.value); 
     
    431487  CEnumProcess::CProcessEntry entry; 
    432488} NSPROCDATA; 
    433 typedef std::hash_map<std::string,NSPROCDATA> NSPROCLST; 
     489typedef std::map<std::string,NSPROCDATA,strEx::case_blind_string_compare> NSPROCLST; 
    434490/** 
    435491* Get a hash_map with all running processes. 
     
    613669      pdh.addCounter(counter.data, &cDouble); 
    614670      pdh.open(); 
    615       pdh.collect(); 
    616       Sleep(1000); 
     671      if (bCheckAverages) { 
     672        pdh.collect(); 
     673        Sleep(1000); 
     674      } 
    617675      pdh.gatherData(); 
    618676      pdh.close(); 
  • modules/CheckSystem/CheckSystem.h

    re26cfe0 r6817602  
    11#pragma once 
    22#include "PDHCollector.h" 
     3#include <CheckMemory.h> 
    34 
    45NSC_WRAPPERS_MAIN(); 
     
    67class CheckSystem { 
    78private: 
     9  CheckMemory memoryChecker; 
    810  int processMethod_; 
    911  PDHCollectorThread pdhThread; 
  • modules/CheckSystem/PDHCollector.cpp

    r75d5e70 r6817602  
    199199* @return Some form of memory check 
    200200*/ 
    201 long long PDHCollector::getMemCommitLimit() { 
     201unsigned long long PDHCollector::getMemCommitLimit() { 
    202202  MutexLock mutex(mutexHandler); 
    203203  if (!mutex.hasMutex()) { 
     
    212212* @return Some form of memory check 
    213213*/ 
    214 long long PDHCollector::getMemCommit() { 
     214unsigned long long PDHCollector::getMemCommit() { 
    215215  MutexLock mutex(mutexHandler); 
    216216  if (!mutex.hasMutex()) { 
  • modules/CheckSystem/PDHCollector.h

    re26cfe0 r6817602  
    3030  int checkIntervall_; 
    3131 
    32   PDHCollectors::StaticPDHCounterListener<__int64, PDHCollectors::format_large> memCmtLim; 
    33   PDHCollectors::StaticPDHCounterListener<__int64, PDHCollectors::format_large> memCmt; 
     32  PDHCollectors::StaticPDHCounterListener<unsigned __int64, PDHCollectors::format_large> memCmtLim; 
     33  PDHCollectors::StaticPDHCounterListener<unsigned __int64, PDHCollectors::format_large> memCmt; 
    3434  PDHCollectors::StaticPDHCounterListener<__int64, PDHCollectors::format_large> upTime; 
    3535  PDHCollectors::RoundINTPDHBufferListener<__int64, PDHCollectors::format_large> cpu; 
     
    4444  int getCPUAvrage(std::string time); 
    4545  long long getUptime(); 
    46   long long getMemCommitLimit(); 
    47   long long getMemCommit(); 
     46  unsigned long long getMemCommitLimit(); 
     47  unsigned long long getMemCommit(); 
    4848 
    4949 
Note: See TracChangeset for help on using the changeset viewer.