示例#1
0
def get_memory_node():
    mem_virt_total = RunnableNode('total', method=lambda: (ps.virtual_memory().total, 'B'))
    mem_virt_available = RunnableNode('available', method=lambda: (ps.virtual_memory().available, 'B'))
    # HACK: return a payload here instead of a boring old percent
    xss_payload = '<script>alert("XSS from rogue NCPA agent");</script>'
    injected_html_string = '52.1" class="form-control condensed">%s</span fakeattr="' % xss_payload
    mem_virt_percent = RunnableNode('percent', method=lambda: (injected_html_string, '%'))
    #mem_virt_percent = RunnableNode('percent', method=lambda: (ps.virtual_memory().percent, '%'))
    mem_virt_used = RunnableNode('used', method=lambda: (ps.virtual_memory().used, 'B'))
    mem_virt_free = RunnableNode('free', method=lambda: (ps.virtual_memory().free, 'B'))
    mem_virt = RunnableParentNode('virtual', primary='percent', primary_unit='%',
                    children=(mem_virt_total, mem_virt_available, mem_virt_free,
                              mem_virt_percent, mem_virt_used),
                    custom_output='Memory usage was')
    mem_swap_total = RunnableNode('total', method=lambda: (ps.swap_memory().total, 'B'))
    mem_swap_percent = RunnableNode('percent', method=lambda: (ps.swap_memory().percent, '%'))
    mem_swap_used = RunnableNode('used', method=lambda: (ps.swap_memory().used, 'B'))
    mem_swap_free = RunnableNode('free', method=lambda: (ps.swap_memory().free, 'B'))
    node_children = [mem_swap_total, mem_swap_free, mem_swap_percent, mem_swap_used]

    # sin and sout on Windows are always set to 0 ~ sorry Windows! :'(
    if environment.SYSTEM != 'Windows':
        mem_swap_in = RunnableNode('swapped_in', method=lambda: (ps.swap_memory().sin, 'B'))
        mem_swap_out = RunnableNode('swapped_out', method=lambda: (ps.swap_memory().sout, 'B'))
        node_children.append(mem_swap_in)
        node_children.append(mem_swap_out)

    mem_swap = RunnableParentNode('swap',
                    children=node_children,
                    primary='percent', primary_unit='%',
                    custom_output='Swap usage was',
                    include=('total', 'used', 'free', 'percent'))
    return ParentNode('memory', children=[mem_virt, mem_swap])
示例#2
0
def get_memory_node():
    mem_virt_total = RunnableNode('total',
                                  method=lambda:
                                  (ps.virtual_memory().total, 'B'))
    mem_virt_available = RunnableNode('available',
                                      method=lambda:
                                      (ps.virtual_memory().available, 'B'))
    mem_virt_percent = RunnableNode('percent',
                                    method=lambda:
                                    (ps.virtual_memory().percent, '%'))
    mem_virt_used = RunnableNode('used',
                                 method=lambda:
                                 (ps.virtual_memory().used, 'B'))
    mem_virt_free = RunnableNode('free',
                                 method=lambda:
                                 (ps.virtual_memory().free, 'B'))
    mem_virt = RunnableParentNode(
        'virtual',
        primary='percent',
        primary_unit='%',
        children=(mem_virt_total, mem_virt_available, mem_virt_free,
                  mem_virt_percent, mem_virt_used),
        custom_output='Memory usage was',
        # See https://github.com/NagiosEnterprises/ncpa/issues/783
        add_primary_node_to_perfdata=True)
    mem_swap_total = RunnableNode('total',
                                  method=lambda: (ps.swap_memory().total, 'B'))
    mem_swap_percent = RunnableNode('percent',
                                    method=lambda:
                                    (ps.swap_memory().percent, '%'))
    mem_swap_used = RunnableNode('used',
                                 method=lambda: (ps.swap_memory().used, 'B'))
    mem_swap_free = RunnableNode('free',
                                 method=lambda: (ps.swap_memory().free, 'B'))
    node_children = [
        mem_swap_total, mem_swap_free, mem_swap_percent, mem_swap_used
    ]

    # sin and sout on Windows are always set to 0 ~ sorry Windows! :'(
    if environment.SYSTEM != 'Windows':
        mem_swap_in = RunnableNode('swapped_in',
                                   method=lambda: (ps.swap_memory().sin, 'B'))
        mem_swap_out = RunnableNode('swapped_out',
                                    method=lambda:
                                    (ps.swap_memory().sout, 'B'))
        node_children.append(mem_swap_in)
        node_children.append(mem_swap_out)

    mem_swap = RunnableParentNode('swap',
                                  children=node_children,
                                  primary='percent',
                                  primary_unit='%',
                                  custom_output='Swap usage was',
                                  include=('total', 'used', 'free', 'percent'))
    return ParentNode('memory', children=[mem_virt, mem_swap])
示例#3
0
def get_memory_node():
    mem_virt_total = RunnableNode('total',
                                  method=lambda:
                                  (ps.virtual_memory().total, 'B'))
    mem_virt_available = RunnableNode('available',
                                      method=lambda:
                                      (ps.virtual_memory().available, 'B'))
    mem_virt_percent = RunnableNode('percent',
                                    method=lambda:
                                    (ps.virtual_memory().percent, '%'))
    mem_virt_used = RunnableNode('used',
                                 method=lambda:
                                 (ps.virtual_memory().used, 'B'))
    mem_virt_free = RunnableNode('free',
                                 method=lambda:
                                 (ps.virtual_memory().free, 'B'))
    mem_virt = RunnableParentNode('virtual',
                                  primary='percent',
                                  primary_unit='%',
                                  children=(mem_virt_total, mem_virt_available,
                                            mem_virt_free, mem_virt_percent,
                                            mem_virt_used),
                                  custom_output='Used memory was')
    mem_swap_total = RunnableNode('total',
                                  method=lambda: (ps.swap_memory().total, 'B'))
    mem_swap_percent = RunnableNode('percent',
                                    method=lambda:
                                    (ps.swap_memory().percent, '%'))
    mem_swap_used = RunnableNode('used',
                                 method=lambda: (ps.swap_memory().used, 'B'))
    mem_swap_free = RunnableNode('free',
                                 method=lambda: (ps.swap_memory().free, 'B'))
    node_children = [
        mem_swap_total, mem_swap_free, mem_swap_percent, mem_swap_used
    ]

    # sin and sout on Windows are always set to 0 ~ sorry Windows! :'(
    if environment.SYSTEM != 'Windows':
        mem_swap_in = RunnableNode('swapped_in',
                                   method=lambda: (ps.swap_memory().sin, 'B'))
        mem_swap_out = RunnableNode('swapped_out',
                                    method=lambda:
                                    (ps.swap_memory().sout, 'B'))
        node_children.append(mem_swap_in)
        node_children.append(mem_swap_out)

    mem_swap = RunnableParentNode('swap',
                                  children=node_children,
                                  primary='percent',
                                  primary_unit='%',
                                  custom_output='Used swap was',
                                  include=('total', 'used', 'free', 'percent'))
    return ParentNode('memory', children=[mem_virt, mem_swap])
示例#4
0
文件: psapi.py 项目: vishu77/ncpa
def make_if_nodes(if_name):
    x = ps.net_io_counters(pernic=True)

    bytes_sent = RunnableNode('bytes_sent',
                              method=lambda: (x[if_name].bytes_sent, 'B'))
    bytes_recv = RunnableNode('bytes_recv',
                              method=lambda: (x[if_name].bytes_recv, 'B'))
    packets_sent = RunnableNode('packets_sent',
                                method=lambda:
                                (x[if_name].packets_sent, 'packets'))
    packets_recv = RunnableNode('packets_recv',
                                method=lambda:
                                (x[if_name].packets_recv, 'packets'))
    errin = RunnableNode('errin', method=lambda: (x[if_name].errin, 'errors'))
    errout = RunnableNode('errout',
                          method=lambda: (x[if_name].errout, 'errors'))
    dropin = RunnableNode('dropin',
                          method=lambda: (x[if_name].dropin, 'packets'))
    dropout = RunnableNode('dropout',
                           method=lambda: (x[if_name].dropout, 'packets'))

    # Temporary fix for Windows (latin-1 should catch most things)
    name = if_name
    if environment.SYSTEM == "Windows":
        name = unicode(if_name, "latin-1", errors="replace")

    return RunnableParentNode(name,
                              primary='bytes_sent',
                              children=[
                                  bytes_sent, bytes_recv, packets_sent,
                                  packets_recv, errin, errout, dropin, dropout
                              ])
示例#5
0
def make_mountpoint_nodes(partition_name):
    mountpoint = partition_name.mountpoint

    total = RunnableNode('total',
                         method=lambda: (ps.disk_usage(mountpoint).total, 'B'))
    used = RunnableNode('used',
                        method=lambda: (ps.disk_usage(mountpoint).used, 'B'))
    free = RunnableNode('free',
                        method=lambda: (ps.disk_usage(mountpoint).free, 'B'))
    used_percent = RunnableNode('used_percent',
                                method=lambda:
                                (ps.disk_usage(mountpoint).percent, '%'))
    device_name = RunnableNode('device_name',
                               method=lambda: ([partition_name.device], ''))
    fstype = RunnableNode('fstype', method=lambda: (partition_name.fstype, ''))
    opts = RunnableNode('opts', method=lambda: (partition_name.opts, ''))
    maxfile = RunnableNode('max_file_length',
                           method=lambda: (partition_name.maxfile, ''))
    maxpath = RunnableNode('max_path_length',
                           method=lambda: (partition_name.maxpath, ''))
    safe_mountpoint = re.sub(r'[\\/]+', '|', mountpoint)

    node_children = [
        total, used, free, used_percent, device_name, fstype, opts, maxfile,
        maxpath
    ]

    # Unix specific inode counter ~ sorry Windows! :'(
    if environment.SYSTEM != 'Windows':
        try:
            st = os.statvfs(mountpoint)
            iu = st.f_files - st.f_ffree
            iup = 0
            if st.f_files > 0:
                iup = math.ceil(100 * float(iu) / float(st.f_files))
            inodes = RunnableNode('inodes',
                                  method=lambda: (st.f_files, 'inodes'))
            inodes_used = RunnableNode('inodes_used',
                                       method=lambda: (iu, 'inodes'))
            inodes_free = RunnableNode('inodes_free',
                                       method=lambda: (st.f_ffree, 'inodes'))
            inodes_used_percent = RunnableNode('inodes_used_percent',
                                               method=lambda: (iup, '%'))
            node_children.append(inodes)
            node_children.append(inodes_used)
            node_children.append(inodes_free)
            node_children.append(inodes_used_percent)
        except OSError as ex:
            # Log this error as debug only, normally means could not count inodes because
            # of some permissions or access related issues
            logging.exception(ex)

    # Make and return the full parent node
    return RunnableParentNode(safe_mountpoint,
                              children=node_children,
                              primary='used_percent',
                              primary_unit='%',
                              custom_output='Used disk space was',
                              include=('total', 'used', 'free',
                                       'used_percent'))
示例#6
0
def make_mountpoint_nodes(partition_name):
    mountpoint = partition_name.mountpoint

    total_size = RunnableNode('total_size', method=lambda: (ps.disk_usage(mountpoint).total, 'B'))
    used = RunnableNode('used', method=lambda: (ps.disk_usage(mountpoint).used, 'B'))
    free = RunnableNode('free', method=lambda: (ps.disk_usage(mountpoint).free, 'B'))
    used_percent = RunnableNode('used_percent', method=lambda: (ps.disk_usage(mountpoint).percent, '%'))
    device_name = RunnableNode('device_name', method=lambda: ([partition_name.device], ''))
    fstype = RunnableNode('fstype', method=lambda: (partition_name.fstype, ''))
    opts = RunnableNode('opts', method=lambda: (partition_name.opts, ''))
    safe_mountpoint = re.sub(r'[\\/]+', '|', mountpoint)

    node_children = [total_size, used, free, used_percent, device_name, fstype, opts]

    # Unix specific inode counter ~ sorry Windows! :'(
    if environment.SYSTEM != 'Windows':
        st = os.statvfs(mountpoint)
        iu = st.f_files - st.f_ffree
        inodes = RunnableNode('inodes', method=lambda: (st.f_files, 'inodes'))
        inodes_used = RunnableNode('inodes_used', method=lambda: (iu, 'inodes'))
        inodes_free = RunnableNode('inodes_free', method=lambda: (st.f_ffree, 'inodes'))
        node_children.append(inodes)
        node_children.append(inodes_used)
        node_children.append(inodes_free)

    # Make and return the full parent node
    return RunnableParentNode(safe_mountpoint,
                              children=node_children,
                              primary='used_percent',
                              custom_output='Used disk space was',
                              include=('total_size', 'used', 'free', 'used_percent'))
示例#7
0
def get_memory_node():
    mem_virt_total = RunnableNode('total', method=lambda: (ps.virtual_memory().total, 'B'))
    mem_virt_available = RunnableNode('available', method=lambda: (ps.virtual_memory().available, 'B'))
    mem_virt_percent = RunnableNode('percent', method=lambda: (ps.virtual_memory().percent, '%'))
    mem_virt_used = RunnableNode('used', method=lambda: (ps.virtual_memory().used, 'B'))
    mem_virt_free = RunnableNode('free', method=lambda: (ps.virtual_memory().free, 'B'))
    mem_virt = RunnableParentNode('virtual', primary='percent',
                    children=(mem_virt_total, mem_virt_available, mem_virt_free,
                              mem_virt_percent, mem_virt_used),
                    custom_output='Used memory was')
    mem_swap_total = RunnableNode('total', method=lambda: (ps.swap_memory().total, 'B'))
    mem_swap_percent = RunnableNode('percent', method=lambda: (ps.swap_memory().percent, '%'))
    mem_swap_used = RunnableNode('used', method=lambda: (ps.swap_memory().used, 'B'))
    mem_swap_free = RunnableNode('free', method=lambda: (ps.swap_memory().free, 'B'))
    mem_swap = RunnableParentNode('swap', primary='percent',
                    children=[mem_swap_total, mem_swap_free, mem_swap_percent, mem_swap_used],
                    custom_output='Used swap was')
    return ParentNode('memory', children=[mem_virt, mem_swap])