Example #1
0
def getLocks( param=None ) :
        item_name = 'POSTGRES_'
        status = []
        perfdata = '-'
        output = ''
        if param != None :
		check = (param['check']).lower()
		findText = param['find']
		item_name = item_name + check.upper() + '_LOCKS'
		dbname = param['dbname']
		
		host = param['host'][0]
		port = param['port'][0]

		query = "SELECT substring(version() FROM '(\d.\d)')::double precision"
                results = sql.getSQLResult ( {'host': host , 'port' : port, 'dbname': dbname, 'user' : param['user'] ,'password' : param['password'] } ,query )
		
		if results[0] == None :
                        return '2' + ' ' + item_name + ' ' + '-' + ' ' + results[1]
		

		version = (results[1])[0][0]
		
		warning = fac.getTimeFactor(  param['warning'] )
		critical = fac.getTimeFactor(  param['critical'] )
		
		results = []


		if check == 'nonblocking' :
			results = sql.getSQLResult ( {'host': host , 'port' : port , 'dbname': dbname,\
				 'user' : param['user'] ,'password' : param['password'] } ,getNonBlockingVersionQuery(version,warning[0], warning[1])  )
		elif check == 'blocking' :
			results  = sql.getSQLResult ( {'host': host , 'port' : port , 'dbname': dbname,\
                                 'user' : param['user'] ,'password' : param['password'] } ,getBlockingVersionQuery(version)  )

		if results[0] == None :
			return '2' + ' ' + item_name + ' ' + '-' + ' ' + results[1]

		retval = []
		

		if len(results[1]) > 0 and check == 'nonblocking' : 	
			retval.append(getNonBlockingIterator(results[1],'POSTGRES_NONBLOCKING_LOCKS',warning,critical))
		elif len(results[1]) > 0 and check == 'blocking' :
			retval.append(getBlockingIterator(results[1],'POSTGRES_BLOCKING_LOCKS',findText))
		else :
			retval.append('0' + ' ' + item_name  + ' ' + '-' + ' ' + 'OK')

		if len(retval) > 0 :
			return retval[0]
	else :
		retval.append('0' + ' ' + item_name  + ' ' + '-' + ' ' + 'Invalid parameters passed to check')

		if len(retval) > 0 :
			return retval[0]
Example #2
0
def getVacuums(param=None):
    item_name = "POSTGRES_"
    status = []
    perfdata = "-"
    output = ""
    if param != None:
        check = param["check"]
        item_name = item_name + check.upper()
        operator = "="
        if param.get("ignoreNever") != None:
            if param["ignoreNever"] == 0:
                operator = ">"
        index = getReturnIndex(check)
        warning = fac.getTimeFactor(param["warning"])
        critical = fac.getTimeFactor(param["critical"])
        query = "SELECT \
				(schemaname || '.' || relname) table_name,\
				CASE WHEN {0:s} IS NULL THEN  \
					NULL \
				ELSE \
					date_part('epoch',clock_timestamp() - {0:s} ) /60 \
				END \
			FROM \
				pg_stat_user_tables \
		 	WHERE \
				( date_part('epoch',clock_timestamp() - {0:s} ) /60  >=  ( {2:d} * {3:d} ) )  OR \
				( {1:s} {4:s}  0 ) ".format(
            index[1], index[2], int(warning[0]), int(warning[1]), operator
        )

        results = sql.getSQLResult(
            {
                "host": param["host"][0],
                "port": param["port"][0],
                "dbname": param["dbname"],
                "user": param["user"],
                "password": param["password"],
            },
            query,
        )

        if results[0] == None:
            return "2" + " " + item_name + " " + "-" + " " + results[1]

        rows = results[1]

        if len(rows) > 0:
            for row in rows:
                out_unit = ""
                if row[index[0]] != None:
                    if int(row[index[0]]) >= int(critical[0]) * int(critical[1]):
                        status.append(2)
                        out_unit = [critical[1], str(critical[2]) + " ago "]
                    elif int(row[index[0]]) >= int(warning[0]) * int(warning[1]):
                        status.append(1)
                        out_unit = [warning[1], str(warning[2]) + " ago "]
                    else:
                        status.append(0)
                        out_unit = [warning[1], str(warning[2]) + " ago "]

                    div = str(int(row[index[0]]) / int(out_unit[0]))
                else:
                    status.append(2)
                    div = "Never"
                    out_unit = [critical[1], "  " + check]

                if perfdata == "-":
                    perfdata = row[0] + "=" + str(row[index[0]]) + ";" + str(warning[0]) + ";" + str(critical[0])
                    output = "{0:s} last {1:s} time was {2:s} {3:s} ".format(row[0], check, div, out_unit[1])
                elif perfdata != "-":
                    perfdata = (
                        perfdata
                        + "|"
                        + row[0]
                        + "="
                        + str(row[index[0]])
                        + ";"
                        + str(warning[0])
                        + ";"
                        + str(critical[0])
                    )
                    output = output + "; {0:s} last {1:s} time was {2:s} {3:s}".format(row[0], check, div, out_unit[1])
            status.sort(reverse=True)
            return str(status[0]) + " " + item_name + " " + str(perfdata) + " " + output
        else:
            return str("0") + " " + item_name + " " + "-" + " " + "OK"