Ejemplo n.º 1
0
register.snmp_section(
    name="cisco_fp_entity_sensors",
    supersedes=["entity_sensors"],
    detect=all_of(
        startswith(OIDSysDescr, "Cisco Firepower"),
        contains(OIDSysDescr, "security appliance"),
    ),
    parsed_section_name="entity_sensors",
    parse_function=parse_cisco_fp_entity_sensors,
    fetch=[
        SNMPTree(
            base=".1.3.6.1.2.1.47.1.1.1.1",  # ENTITY-MIB
            oids=[
                OIDEnd(),
                "7",  # ENTITY-MIB::entPhysicalName
            ],
        ),
        SNMPTree(
            base=".1.3.6.1.4.1.9.9.91.1.1.1.1",  # CISCO-ENTITY-SENSOR-MIB
            oids=[
                OIDEnd(),
                "1",  # entPhySensorType
                "2",  # entPhySensorScale
                "4",  # entPhySensorValue
                "5",  # entPhySensorOperStatus
                "6",  # entPhySensorUnitsDisplay
            ],
        ),
    ],
)
Ejemplo n.º 2
0
        yield Result(
            state=State.CRIT,
            summary=
            f'Failover link state is {_get_cisco_asa_state_name(section.failover_link_status)}',
        )


register.snmp_section(
    name='cisco_asa_failover',
    parse_function=parse_cisco_asa_failover,
    fetch=SNMPTree(
        base=
        '.1.3.6.1.4.1.9.9.147.1.2.1.1.1',  # CISCO-FIREWALL-MIB::cfwHardwareStatusEntry
        oids=[
            '2',  # CISCO-FIREWALL-MIB::cfwHardwareInformation
            '3',  # CISCO-FIREWALL-MIB::cfwHardwareStatusValue
            '4',  # CISCO-FIREWALL-MIB::cfwHardwareStatusDetail
        ],
    ),
    detect=any_of(
        startswith('.1.3.6.1.2.1.1.1.0', 'cisco adaptive security'),
        contains('.1.3.6.1.2.1.1.1.0', 'cisco pix security'),
    ),
)

register.check_plugin(
    name='cisco_asa_failover',
    service_name='Cluster Status',
    discovery_function=discovery_cisco_asa_failover,
    check_function=check_cisco_asa_failover,
    check_default_parameters={
Ejemplo n.º 3
0
register.snmp_section(
    name='cisco_fp_entity_sensors',
    supersedes=['entity_sensors'],
    detect=all_of(
        startswith(OIDSysDescr, 'Cisco Firepower'),
        contains(OIDSysDescr, 'security appliance'),
    ),
    parsed_section_name='entity_sensors',
    parse_function=parse_cisco_fp_entity_sensors,
    fetch=[
        SNMPTree(
            base='.1.3.6.1.2.1.47.1.1.1.1',  # ENTITY-MIB
            oids=[
                OIDEnd(),
                '7',  # ENTITY-MIB::entPhysicalName
            ],
        ),
        SNMPTree(
            base='.1.3.6.1.4.1.9.9.91.1.1.1.1',  # CISCO-ENTITY-SENSOR-MIB
            oids=[
                OIDEnd(),
                '1',  # entPhySensorType
                '2',  # entPhySensorScale
                '4',  # entPhySensorValue
                '5',  # entPhySensorOperStatus
                '6',  # entPhySensorUnitsDisplay
            ],
        ),
    ],
)
Ejemplo n.º 4
0
def parse(string_table: StringTable) -> Optional[Section]:
    """
    assert parse([]) is None
    assert parse([["DSM 7", "0"]]) == Section(version="DSM 7", status=0)
    """
    if not string_table:
        return None
    return Section.from_row(string_table[0])


register.snmp_section(
    name="synology_update",
    detect=synology.detect(),
    parse_function=parse,
    fetch=SNMPTree(
        base=".1.3.6.1.4.1.6574.3.1.1",
        oids=[
            "3",  # Version
            "4",  # Status
        ],
    ),
)


def discovery(section: Section) -> DiscoveryResult:
    yield Service()


def check(params: Mapping[str, Any], section: Section) -> CheckResult:
    state = State.UNKNOWN
    if section.status in params["ok_states"]:
        state = State.OK
Ejemplo n.º 5
0
    """
    >>> assert parse([]) is None
    >>> assert parse([["model", "SN7", "DSM"]]) == Section(model="model", serialnumber="SN7", os="DSM")
    """
    if not string_table:
        return None
    return Section.from_row(string_table[0])


register.snmp_section(
    name="synology_info",
    detect=synology.detect(),
    parse_function=parse,
    fetch=SNMPTree(
        base=".1.3.6.1.4.1.6574.1.5",
        oids=[
            "1",  # Model
            "2",  # SerialNumber
            "3",  # OS Version
        ],
    ),
)


def discovery(section: Section) -> DiscoveryResult:
    yield Service()


def check(section: Section) -> CheckResult:
    summary = f"Model: {section.model}, S/N: {section.serialnumber}, OS Version: {section.os}"
    yield Result(state=State.OK, summary=summary)
Ejemplo n.º 6
0

def parse_checkpoint_connections(string_table: StringTable) -> Section:
    """
    >>> parse_checkpoint_connections([["19190"]])
    Section(current=19190)
    """
    return Section(int(string_table[0][0]))


register.snmp_section(
    name="checkpoint_connections",
    parse_function=parse_checkpoint_connections,
    detect=checkpoint.DETECT,
    fetch=SNMPTree(
        base=".1.3.6.1.4.1.2620.1.1.25",
        oids=[
            "3",  # CHECKPOINT-MIB - fwNumConn - current connections
        ],
    ),
)


def discover_checkpoint_connections(section: Section) -> DiscoveryResult:
    yield Service()


def check_checkpoint_connections(
    params,
    section: Section,
) -> CheckResult:
Ejemplo n.º 7
0
def parse(string_table: StringTable) -> Optional[Section]:
    """
    assert parse([]) is None
    assert parse([["1","1"]]) == Section(system=1, power=1)
    """
    if not string_table:
        return None
    return Section.from_row(string_table[0])


register.snmp_section(
    name="synology_status",
    detect=synology.detect(),
    parse_function=parse,
    fetch=SNMPTree(
        base=".1.3.6.1.4.1.6574.1",
        oids=[
            "1",  # System Status
            "3",  # Power Status
        ],
    ),
)


def discovery(section: Section) -> DiscoveryResult:
    yield Service()


def check(section: Section) -> CheckResult:
    if section.system != 1:
        yield Result(state=State.CRIT, summary="System Failure")
    else:
Ejemplo n.º 8
0
            state=State(params["failover_link_state"]),
            summary=(
                f"Failover link {section.failover_link_name} state is "
                f"{_get_cisco_asa_state_name(section.failover_link_status)}"),
        )


register.snmp_section(
    name="cisco_asa_failover",
    parse_function=parse_cisco_asa_failover,
    fetch=SNMPTree(
        base=
        ".1.3.6.1.4.1.9.9.147.1.2.1.1.1",  # CISCO-FIREWALL-MIB::cfwHardwareStatusEntry
        oids=[
            "2",  # CISCO-FIREWALL-MIB::cfwHardwareInformation
            "3",  # CISCO-FIREWALL-MIB::cfwHardwareStatusValue
            "4",  # CISCO-FIREWALL-MIB::cfwHardwareStatusDetail
        ],
    ),
    detect=any_of(
        startswith(".1.3.6.1.2.1.1.1.0", "cisco adaptive security"),
        contains(".1.3.6.1.2.1.1.1.0", "cisco pix security"),
        startswith(".1.3.6.1.2.1.1.1.0", "cisco firepower threat defense"),
    ),
)

register.check_plugin(
    name="cisco_asa_failover",
    service_name="Failover state",
    discovery_function=discovery_cisco_asa_failover,
    check_function=check_cisco_asa_failover,
    check_default_parameters={
Ejemplo n.º 9
0

Section = Mapping[str, Disk]


def parse_synology(string_table: StringTable) -> Section:
    return {row[0]: Disk.from_row(row) for row in string_table}


register.snmp_section(
    name="synology_disks",
    detect=synology.detect(),
    parse_function=parse_synology,
    fetch=SNMPTree(
        base=".1.3.6.1.4.1.6574.2.1.1",
        oids=[
            "2",  # SYNOLOGY-DISK-MIB::diskID
            "3",  # SYNOLOGY-DISK-MIB::diskModel
            "5",  # SYNOLOGY-DISK-MIB::diskStatus
            "6",  # SYNOLOGY-DISK-MIB::diskTemperature
        ],
    ),
)


def discover_synology_disks(section: Section) -> DiscoveryResult:
    for item, disk in section.items():
        # SSD and NVME used as cache are "not initialized". We remember that
        # here. TODO: Really true always in todays time and age?
        if (("SSD" in disk.model) or ("NVME" in disk.model)) and disk.state == 3:
            params = {"used_as_cache": True}
        else:
Ejemplo n.º 10
0

register.snmp_section(
    name='entity_sensors',
    detect=any_of(
        startswith(OIDSysDescr, "palo alto networks"),
        startswith(OIDSysDescr, "cisco adaptive security appliance"),
    ),
    parse_function=parse_entity_sensors,
    fetch=[
        SNMPTree(
            base=".1.3.6.1.2.1.47.1.1.1.1",
            oids=[
                OIDEnd(),
                "7",  # ENTITY-MIB::entPhysicalName
            ],
        ),
        SNMPTree(
            base=".1.3.6.1.2.1.99.1.1.1",
            oids=[
                OIDEnd(),
                "1",  # entPhySensorType
                "2",  # entPhySensorScale
                "4",  # entPhySensorValue
                "5",  # entPhySensorOperStatus
                "6",  # entPhySensorUnitsDisplay
            ],
        ),
    ],
)

Ejemplo n.º 11
0
register.snmp_section(
    name="juniper_trpz_aps_sessions",
    detect=any_of(startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.14525.3.1"),
                  startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.14525.3.3")),
    parse_function=parse_juniper_trpz_aps_sessions,
    trees=[
        SNMPTree(
            base=".1.3.6.1.4.1.14525.4.5.1.1.2.1",
            oids=[
                OIDEnd(),
                "5",  #  trpzApStatApStatusMacApState         -> status of access point
                "8",  #  trpzApStatApStatusMacApName          -> name of access point
            ]),
        SNMPTree(
            base=".1.3.6.1.4.1.14525.4.5.1.1.10.1",
            oids=[
                OIDEnd(),
                "3",  #  trpzApStatRadioOpStatsTxUniPkt       -> unicast packets transmitted
                "4",  #  trpzApStatRadioOpStatsTxUniOct       -> octets transmitted in unicast packets
                "5",  #  trpzApStatRadioOpStatsTxMultiPkt     -> multicast packets transmitted
                "6",  #  trpzApStatRadioOpStatsTxMultiOct     -> octets transmitted in multicast packets
                "7",  #  trpzApStatRadioOpStatsRxPkt          -> packets received
                "8",  #  trpzApStatRadioOpStatsRxOctet        -> octets received
                "11",  # trpzApStatRadioOpStatsPhyErr         -> nr. physical errors occurred
                "12",  # trpzApStatRadioOpStatsResetCount     -> nr. reset operations
                "14",  # trpzApStatRadioOpStatsRxRetriesCount -> nr. transmission retries
                "15",  # trpzApStatRadioOpStatsUserSessions   -> current client sessions
                "16",  # trpzApStatRadioOpStatsNoiseFloor     -> noise floor (dBm)
            ]),
    ],
)
Ejemplo n.º 12
0
        return

    yield from check_temperature(
        reading=temperature,
        params=params,
        unique_name=item,
        value_store=get_value_store(),
    )


register.snmp_section(
    name="cisco_ie_temp",
    parse_function=parse,
    fetch=SNMPTree(
        base=".1.3.6.1.4.1.9.9.832.1.24.1.3.6.1",  #  cie1000SysutilStatusTemperatureMonitorEntry
        oids=[
            OIDEnd(),
            "5",  # cie1000SysutilStatusTemperatureMonitorTemperature
        ],
    ),
    detect=startswith(".1.3.6.1.2.1.1.1.0", "IE1000"),
)

register.check_plugin(
    name="cisco_ie_temp",
    service_name="Temperature %s",
    discovery_function=discover,
    check_default_parameters={},
    check_function=check,
    check_ruleset_name="temperature",
)
Ejemplo n.º 13
0
    """
    >>> assert parse([]) is None
    >>> assert parse([["0","1"]]) == {"System": 0, "CPU": 1}
    """
    if not string_table:
        return None
    row = string_table[0]
    return {"System": int(row[0]), "CPU": int(row[1])}


register.snmp_section(
    name="synology_fans",
    detect=synology.detect(),
    parse_function=parse,
    fetch=SNMPTree(
        base=".1.3.6.1.4.1.6574.1.4",
        oids=[
            "1",  # System fan
            "2",  # CPU fan
        ],
    ),
)


def discovery(section: Section) -> DiscoveryResult:
    for item in section:
        yield Service(item=item)


def check(item: str, section: Section) -> CheckResult:
    if section[item] != 1:
        state, summary = (State.OK, "No failure reported")
        if item == id:
            yield Result(state=State.OK, summary="HWCache %s: ok" % item)
            yield Metric("read_utilization", int(ru))
            yield Metric("write_utilization", int(wu))
            yield Metric("mirror_write_utilization", int(mwu))
            yield Metric("hit_ratio", int(hr))


register.snmp_section(
    name="huawei_storage_hwcache",
    #parse_function = parse_huawei_storage_hwcache,
    detect=startswith(".1.3.6.1.2.1.1.1.0", "ISM SNMP Agent"),
    fetch=SNMPTree(
        base='.1.3.6.1.4.1.34774.4.1.21.7.1',
        oids=[
            '1',  # hwPerfCacheID
            '2',  # hwPerfCacheReadUtilization
            '3',  # hwPerfCacheWriteUtilization
            '4',  # hwPerfCacheMirrorWriteUtilization
            '5',  # hwPerfCacheHitRatio
        ],
    ),
)

register.check_plugin(
    name="huawei_storage_hwcache",
    service_name="HWCache %s",
    discovery_function=discovery_huawei_storage_hwcache,
    check_function=check_huawei_storage_hwcache,
    check_default_parameters={},
)