Ejemplo n.º 1
0
 def get_connections_used(self, request):
     current = nagios.to_num(
         self.run_query(request, "db.serverStatus().connections.current"))
     available = nagios.to_num(
         self.run_query(request, "db.serverStatus().connections.available"))
     value = int(float(current / (available + current)) * 100)
     return self.get_result(request,
                            value,
                            str(value) + '% connections used',
                            'conns_used',
                            UOM="%")
Ejemplo n.º 2
0
 def get_current_queue_readers(self, request):
     query = "db.serverStatus().globalLock.currentQueue.readers"
     value = nagios.to_num(self.run_query(request, query))
     print value
     return self.get_result(request, value,
                            '%s operations waiting for read-lock' % value,
                            'cur_queue_readers')
Ejemplo n.º 3
0
 def _parse_output(self, request, output):
     fields = output.split('\n')[1].strip().split()
     headers = [
         "insert", "query", "update", "delete", "getmore", "command",
         "flushes", "mapped", "vsize", "res", "faults", "locked %",
         "idx miss %", "qr|qw", "ar|aw", "netIn", "netOut", "conn", "time"
     ]
     for k, v in zip(headers, fields):
         if k == "time":
             uptime = [int(t) for t in v.split(":")]
             if len(uptime) != 3:
                 raise nagios.OutputFormatError(request, output)
             sec = datetime.timedelta(hours=uptime[0],
                                      minutes=uptime[1],
                                      seconds=uptime[2]).total_seconds()
             yield k, sec
         elif "|" in k:
             for k, v in zip(k.split("|"), v.split("|")):
                 value = nagios.to_num(v)
                 if value:
                     yield k, value
         else:
             pattern = re.compile('(\d+)[mkb]?')
             matchResult = pattern.match(v)
             if not matchResult:
                 raise nagios.OutputFormatError(request, output)
             value = int(matchResult.groups(1)[0])
             yield k, value
Ejemplo n.º 4
0
 def _parse_output(self, request, output):
     fields = output.split('\n')[1].strip().split()
     headers = ["insert",     "query",   "update",  "delete",
                "getmore",    "command", "flushes", "mapped",
                "vsize",      "res",     "faults",  "locked %",
                "idx miss %", "qr|qw",   "ar|aw",   "netIn",
                "netOut",     "conn",    "time"]
     for k, v in zip(headers, fields):
         if k == "time":
             uptime = [int(t) for t in v.split(":")]
             if len(uptime) != 3:
                 raise nagios.OutputFormatError(request, output)
             sec = datetime.timedelta(hours=uptime[0],
                                      minutes=uptime[1],
                                      seconds=uptime[2]).total_seconds()
             yield k, sec
         elif "|" in k:
             for k, v in zip(k.split("|"), v.split("|")):
                 value = nagios.to_num(v)
                 if value:
                     yield k, value
         else:
             pattern = re.compile('(\d+)[mkb]?')
             matchResult = pattern.match(v)
             if not matchResult:
                 raise nagios.OutputFormatError(request, output)
             value = int(matchResult.groups(1)[0])
             yield k, value
Ejemplo n.º 5
0
 def get_memory_used(self, request):
     query = "db.serverStatus().mem.resident"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request,
                            value,
                            '%sMB resident size' % value,
                            'res',
                            UOM='MB')
Ejemplo n.º 6
0
 def get_delta_value(self, statkey, request, query):
     output = self.run_query(request, query)
     value = nagios.to_num(output)
     laststats = self.retrieve_last_status(request)
     last_value = laststats.setdefault(statkey, 0)
     laststats[statkey] = value
     self.save_status(request, laststats)
     return value - last_value
Ejemplo n.º 7
0
 def get_delta_value(self, statkey, request, query):
     output = self.run_query(request, query)
     value = nagios.to_num(output)
     laststats = self.retrieve_last_status(request)
     last_value = laststats.setdefault(statkey, 0)
     laststats[statkey] = value
     self.save_status(request, laststats)
     return value - last_value
Ejemplo n.º 8
0
 def _parse_output(self, request, output):
     for l in output.split('\n')[3:-1]:
         fields = l.split('|')[1:3]
         k = fields[0].strip()
         v = fields[1].strip()
         value = nagios.to_num(v)
         if value is not None:
             yield k, value
Ejemplo n.º 9
0
 def _parse_output(self, request, output):
     for l in output.split('\n')[3:-1]:
         fields = l.split('|')[1:3]
         k = fields[0].strip()
         v = fields[1].strip()
         value = nagios.to_num(v)
         if value is not None:
             yield k, value
Ejemplo n.º 10
0
 def _parse_output(self, request, output):
     for l in output.split('\n'):
         try:
             k, v = l.split(':')
             value = nagios.to_num(v)
             if value is not None:
                 yield k, value
         except ValueError:
             pass
Ejemplo n.º 11
0
 def _single_value_stat(self, request, query):
     rows = self.run_query(request, query)
     if len(rows) > 0 or len(rows[0]) > 0:
         value = nagios.to_num(rows[0][0])
         if value is None:
             raise nagios.OutputFormatError(request, rows)
         return value
     else:
         raise nagios.StatusUnknownError(request.option)
Ejemplo n.º 12
0
 def _single_value_stat(self, request, query):
     rows = self.run_query(request, query)
     if len(rows) > 0 or len(rows[0]) > 0:
         value = nagios.to_num(rows[0][0])
         if value is None:
             raise nagios.OutputFormatError(request, rows)
         return value
     else:
         raise nagios.StatusUnknownError(request.option)
Ejemplo n.º 13
0
    def get_miss_ratio(self, request):
        # Checks versioning, btree used for monogdb v2.2
	version = self.run_query(request,"db.version()").split('.')
	v22 = False
	query = "db.serverStatus().indexCounters.missRatio"
	if (version[0] is 2):
            if (version[1] <= 2):
		query = "db.serverStatus().indexCounters.btree.missRatio"
        value = nagios.to_num(self.run_query(request, query))
        return self.get_result(request, value, str(value) + '% missed', 'ratio', UOM="%")            
Ejemplo n.º 14
0
 def _multi_value_stats(self, request, query):
     sub_stats = {}
     rows = self.run_query(request, query)
     for substatname, value in rows:
         value = nagios.to_num(value)
         if value is None:
             raise nagios.OutputFormatError(request, rows)
         sub_stats[substatname] = value
     stat = reduce(lambda x, y: x + y, sub_stats.itervalues(), 0)
     return stat, sub_stats
Ejemplo n.º 15
0
 def _parse_output(self, request, output):
     for l in output.split('\n'):
         pair = l.split('=')
         if len(pair) == 2:
             k = pair[0].strip()
             v = pair[1].strip()
             value = nagios.to_num(v)
             if value is None:
                 raise nagios.OutputFormatError(request, output)
             yield k, value
Ejemplo n.º 16
0
 def _parse_output(self, request, output):
     for l in output.split('\r\n'):
         triple = l.split(" ")
         if triple[0] != "STAT":
             continue
         k = triple[1]
         v = triple[2]
         value = nagios.to_num(v)
         if value is not None:
             yield k, value
Ejemplo n.º 17
0
 def _parse_output(self, request, output):
     for l in output.split('\r\n'):
         triple = l.split(" ")
         if triple[0] != "STAT":
             continue
         k = triple[1]
         v = triple[2]
         value = nagios.to_num(v)
         if value is not None:
             yield k, value
Ejemplo n.º 18
0
 def _multi_value_stats(self, request, query):
     sub_stats = {}
     rows = self.run_query(request, query)
     for substatname, value in rows:
         value = nagios.to_num(value)
         if value is None:
             raise nagios.OutputFormatError(request, rows)
         sub_stats[substatname] = value
     stat = reduce(lambda x,y:x+y, sub_stats.itervalues(), 0)
     return stat, sub_stats
Ejemplo n.º 19
0
 def _parse_output(self, request, output):
     for l in output.split('\n'):
         pair = l.split('=')
         if len(pair) == 2:
             k = pair[0].strip()
             v = pair[1].strip()
             value = nagios.to_num(v)
             if value is None:
                 raise nagios.OutputFormatError(request, output)
             yield k, value
Ejemplo n.º 20
0
 def get_miss_ratio(self, request):
     # Checks versioning, btree used for monogdb v2.2
     version = self.run_query(request, "db.version()").split('.')
     v22 = False
     query = "db.serverStatus().indexCounters.missRatio"
     if (version[0] is 2):
         if (version[1] <= 2):
             query = "db.serverStatus().indexCounters.btree.missRatio"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request,
                            value,
                            str(value) + '% missed',
                            'ratio',
                            UOM="%")
Ejemplo n.º 21
0
    def get_active_clients_writers(self, request):
        query = "db.serverStatus().globalLock.activeClients.writers"
	value = nagios.to_num(self.run_query(request, query))
        return self.get_result(request, value, '%s active writers clients' % value, 'writers')
Ejemplo n.º 22
0
 def _parse_output(self, request, output):
     for l in output.split('\r\n'):
         k, v = l.split(':')
         value = nagios.to_num(v)
         if value is not None:
             yield k, value
Ejemplo n.º 23
0
 def get_current_queue_total(self, request):
     query = "db.serverStatus().globalLock.currentQueue.total"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value, '%s operations waiting for locks' % value, 'cur_queue_total')
Ejemplo n.º 24
0
    def get_active_clients_total(self, request):
        query = "db.serverStatus().globalLock.activeClients.total"
	value = nagios.to_num(self.run_query(request, query))
        return self.get_result(request, value, '%s total active clients' % value, 'total')
Ejemplo n.º 25
0
 def get_current_queue_total(self, request):
     query = "db.serverStatus().globalLock.currentQueue.total"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value,
                            '%s operations waiting for locks' % value,
                            'cur_queue_total')
Ejemplo n.º 26
0
 def _parse_output(self, request, output):
     for l in output.split('\r\n'):
         k, v = l.split(':')
         value = nagios.to_num(v)
         if value is not None:
             yield k, value
Ejemplo n.º 27
0
    def get_backgroundflushing_average(self, request):
        query = "db.serverStatus().backgroundFlushing.average_ms"
	value = nagios.to_num(self.run_query(request, query))
        return self.get_result(request, value, '%s average ms spent flushing' % value, 'average_ms')
Ejemplo n.º 28
0
 def get_backgroundflushing_last(self, request):
     query = "db.serverStatus().backgroundFlushing.last_ms"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value,
                            '%s ms spent last flush' % value, 'last_ms')
Ejemplo n.º 29
0
 def get_connections_used(self, request):
     current = nagios.to_num(self.run_query(request, "db.serverStatus().connections.current"))
     available = nagios.to_num(self.run_query(request, "db.serverStatus().connections.available"))
     value = int(float(current / (available + current)) * 100)
     return self.get_result(request, value, str(value) + '% connections used', 'conns_used', UOM="%")  
Ejemplo n.º 30
0
    def get_backgroundflushing_last(self, request):
        query = "db.serverStatus().backgroundFlushing.last_ms"
	value = nagios.to_num(self.run_query(request, query))
        return self.get_result(request, value, '%s ms spent last flush' % value, 'last_ms')
Ejemplo n.º 31
0
 def get_active_clients_total(self, request):
     query = "db.serverStatus().globalLock.activeClients.total"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value,
                            '%s total active clients' % value, 'total')
Ejemplo n.º 32
0
 def get_connections(self, request):
     query = "db.serverStatus().connections.current"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value,
                            '%s current connections' % value, 'conns')
Ejemplo n.º 33
0
 def get_connections(self, request):
     query = "db.serverStatus().connections.current"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value, '%s new connections' % value, 'conns')
Ejemplo n.º 34
0
 def get_memory_used(self, request):
     query = "db.serverStatus().mem.resident"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value, '%sMB resident size' % value, 'res', UOM='MB')
Ejemplo n.º 35
0
    def get_current_queue_readers(self, request):
        query = "db.serverStatus().globalLock.currentQueue.readers"
        value = nagios.to_num(self.run_query(request, query))
	print value
        return self.get_result(request, value, '%s operations waiting for read-lock' % value, 'cur_queue_readers')
Ejemplo n.º 36
0
 def get_miss_ratio(self, request):
     query = "db.serverStatus().indexCounters.btree.missRatio"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value, str(value) + '% missed', 'ratio', UOM="%")
Ejemplo n.º 37
0
 def get_active_clients_writers(self, request):
     query = "db.serverStatus().globalLock.activeClients.writers"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value,
                            '%s active writers clients' % value, 'writers')
Ejemplo n.º 38
0
 def get_connections_available(self, request):
     query = "db.serverStatus().connections.available"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value,
                            '%s available connections' % value,
                            'conns_available')
Ejemplo n.º 39
0
 def get_backgroundflushing_average(self, request):
     query = "db.serverStatus().backgroundFlushing.average_ms"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value,
                            '%s average ms spent flushing' % value,
                            'average_ms')
Ejemplo n.º 40
0
 def get_connections_available(self, request):
     query = "db.serverStatus().connections.available"
     value = nagios.to_num(self.run_query(request, query))
     return self.get_result(request, value, '%s available connections' % value, 'conns_available')