コード例 #1
0
def home(request):
    hosts_sql = """
    SELECT COUNT( * ) AS quantity
    FROM nagios_hosts a, nagios_hoststatus b
    WHERE a.host_object_id = b.host_object_id
    AND a.instance_id = b.instance_id
    AND b.current_state !=0
    """
    hosts_cursor = raw_sql(hosts_sql)
    hosts_rows = hosts_cursor.fetchall()
    problem_hosts = int(hosts_rows[0][0])
    
    services_sql = """
    SELECT COUNT( * ) AS quantity
    FROM nagios_services a, nagios_servicestatus b
    WHERE a.service_object_id = b.service_object_id
    AND a.instance_id = b.instance_id
    AND b.current_state !=0
    """
    services_cursor = raw_sql(services_sql)
    services_rows = services_cursor.fetchall()
    problem_services = int(services_rows[0][0])
    
    notifications = Notification.objects.filter(has_processed=None)
    unhandled_notifications = len(notifications)
    
    jobs = Notification_Result.objects.filter(to_user=request.session.get('username',None),op_processed_result=None)
    unhandled_jobs = len(jobs)
    
    return render('users/home.html',{'problem_hosts':problem_hosts,
                                    'problem_services':problem_services,
                                    'unhandled_notifications':unhandled_notifications,
                                    'unhandled_jobs':unhandled_jobs
                                     },request)
コード例 #2
0
def get_hosts_list():
    sql = "select display_name from nagios_hosts"
    cursor = raw_sql(sql)
    rows = cursor.fetchall()
    ret_list = list()
    for row in rows:
        ret_list.append(row[0])
    return ret_list
コード例 #3
0
def get_hosts_state():
    sql = """
    SELECT a.host_object_id, b.current_state
    FROM nagios_services a, nagios_servicestatus b
    WHERE a.service_object_id = b.service_object_id
    AND a.instance_id = b.instance_id
    ORDER BY a.host_object_id, a.display_name ASC 
    """
    cursor = raw_sql(sql)
    rows = cursor.fetchall()
    return rows
コード例 #4
0
def get_host_list():
    """
    get host list from nagios database by raw sql.
    """
    sql = """
    SELECT host_object_id, display_name
    FROM nagios_hosts;
    """
    arr = list()
    cursor = raw_sql(sql)
    rows = cursor.fetchall()
    for row in rows:
            arr.append(row)
    return arr
コード例 #5
0
def get_user_list():
    """
    get user list from nagios database by raw sql.
    """
    sql = """
    SELECT username
    FROM users_account
    """
    arr = list()
    cursor = raw_sql(sql)
    rows = cursor.fetchall()
    for row in rows:
        arr.append(row[0])
    return arr
コード例 #6
0
def get_host_service_list():
    """
    get service list from nagios database by raw sql.
    """
    arr = list()
    hosts_list = get_host_list()
    for k,v in hosts_list:
        temp = dict()
        temp[v] = list()
        sql = """
        SELECT display_name
        FROM nagios_services
        WHERE host_object_id=%s
        """ % k
        cursor = raw_sql(sql)
        rows = cursor.fetchall()
        for row in rows:
            temp[v].append(row[0])
        arr.append(temp)
    return arr
コード例 #7
0
def host_list(request):
    host_type = request.REQUEST.get('host_type',None)
    if not host_type:
        sql = """
        SELECT
        a.host_object_id,a.display_name,a.address,
        b.current_state,(select now()) as status_update_time,b.last_state_change,b.output
        FROM nagios_hosts a, nagios_hoststatus b
        WHERE a.host_object_id = b.host_object_id AND a.instance_id = b.instance_id
        ORDER by a.display_name ASC
        """
    elif host_type == "unhandled":
        sql = """
        SELECT
        a.host_object_id,a.display_name,a.address,
        b.current_state,(select now()) as status_update_time,b.last_state_change,b.output
        FROM nagios_hosts a, nagios_hoststatus b
        WHERE a.host_object_id = b.host_object_id AND a.instance_id = b.instance_id
        AND b.current_state !=0
        ORDER by a.display_name ASC
        """
    
    cursor = raw_sql(sql)
    rows = cursor.fetchall()
    host_list = list()
    for line in rows:
        temp = dict()
        temp['host_object_id'] = line[0]
        temp['display_name'] = line[1]
        temp['address'] = line[2]
        temp['current_state'] = line[3]
        duration = line[4] - line[5]
        hms = time.gmtime(duration.seconds)
        temp['state_duration'] = str(duration.days) + ' d ' + \
            str(hms.tm_hour) + ' h ' + str(hms.tm_min) +  ' m ' + str(hms.tm_sec) + ' s'
        temp['output'] = line[6]
        host_list.append(temp)
    return render('host_list/main.html',{'host_list':host_list,'services_list':get_hosts_state()},request)
コード例 #8
0
def service_list(request):
    host = request.REQUEST.get('host',None)
    service_type = request.REQUEST.get('service_type',None)
    
    if host:
        sql = """
        SELECT host_object_id
        FROM nagios_hosts
        WHERE display_name =  '%s'
        """ % host
        cursor = raw_sql(sql)
        rows = cursor.fetchall()
        try:
            host_object_id = rows[0][0]
        except:
            return render('service_list/main.html',{'host_not_exist':True},request)
        
        sql = """
        SELECT 
        a.host_object_id, a.service_object_id, a.display_name,
        (select now()) as status_update_time,b.last_state_change,b.current_state,b.output
        FROM nagios_services a, nagios_servicestatus b
        WHERE a.service_object_id = b.service_object_id
        AND a.instance_id = b.instance_id
        AND a.host_object_id = %d
        ORDER BY a.host_object_id,a.display_name ASC
        """ % host_object_id
        cursor = raw_sql(sql)
        rows = cursor.fetchall()
    else:
        if not service_type:
            sql = """
            SELECT
            a.host_object_id, a.service_object_id, a.display_name,
            (select now()) as status_update_time,b.last_state_change,b.current_state,b.output
            FROM nagios_services a, nagios_servicestatus b
            WHERE a.service_object_id = b.service_object_id
            AND a.instance_id = b.instance_id
            ORDER BY a.host_object_id,a.display_name ASC
            """
            cursor = raw_sql(sql)
            rows = cursor.fetchall()
        elif service_type == "unhandled":
            sql = """
            SELECT
            a.host_object_id, a.service_object_id, a.display_name,
            (select now()) as status_update_time,b.last_state_change,b.current_state,b.output
            FROM nagios_services a, nagios_servicestatus b
            WHERE a.service_object_id = b.service_object_id
            AND a.instance_id = b.instance_id
            AND b.current_state !=0
            ORDER BY a.host_object_id,a.display_name ASC
            """
            cursor = raw_sql(sql)
            rows = cursor.fetchall()
            
    ############### get unique host list ################
    sql = """
        SELECT host_object_id,display_name
        FROM nagios_hosts
        """
    cursor = raw_sql(sql)
    rows_temp = cursor.fetchall()
    unique_hostname_list = list()
    for line in rows_temp:
        unique_hostname_list.append({line[0]:line[1]})
    def get_hostname_from_id(host_id):
        for item in unique_hostname_list:
            for k,v in item.items():
                if host_id ==k:
                    return v
    ################## end get unique host list############
    
    service_list = list()
    for line in rows:
        temp = dict()
        temp['hostname'] = get_hostname_from_id(line[0])
        temp['host_object_id'] = line[0]
        temp['service_object_id'] = line[1]
        temp['display_name'] = line[2]
        duration = line[3] - line[4]
        hms = time.gmtime(duration.seconds)
        temp['state_duration'] = str(duration.days) + ' d ' + str(hms.tm_hour) + ' h ' + str(hms.tm_min) +  ' m ' + str(hms.tm_sec) + ' s'
        temp['current_state'] = line[5]
        temp['output'] = line[6]
        service_list.append(temp)
    return render('service_list/main.html',{'hostname_list':unique_hostname_list,'service_list':service_list},request)