Cisco ASA + Cisco 1300 – Prometheus Monitoring/Grafana

# Auf dem Host, braucht: make, unzip, curl/wget
apt install -y make unzip
git clone --depth 1 https://github.com/prometheus/snmp_exporter.git /tmp/snmp_exporter_src
cd /tmp/snmp_exporter_src/generator
make mibs
cd ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64
cp -r /tmp/snmp_exporter_src/generator/mibs .

apt update
apt install -y snmp-mibs-downloader
download-mibs
mkdir -p ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/mibs/
cp /var/lib/mibs/ietf/ENTITY-MIB \
   /var/lib/mibs/ietf/ENTITY-STATE-MIB \
   /var/lib/mibs/ietf/ENTITY-SENSOR-MIB \
   /var/lib/mibs/ietf/UUID-TC-MIB \
   /var/lib/mibs/ietf/ENTITY-STATE-TC-MIB\
      ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/mibs/
cat > ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/mibs/IANA-ENTITY-MIB << 'EOF'
IANA-ENTITY-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, mib-2        FROM SNMPv2-SMI     -- RFC 2578
    TEXTUAL-CONVENTION            FROM SNMPv2-TC       -- RFC 2579
    ;

ianaEntityMIB MODULE-IDENTITY
    LAST-UPDATED "201507160000Z"  -- July 16, 2015
    ORGANIZATION "IANA"
    CONTACT-INFO
        "Internet Assigned Numbers Authority

        Postal: ICANN
                12025 Waterfront Drive, Suite 300
                Los Angeles, CA  90094-2536

        Phone: +1-310-301-5800
        EMail: iana&iana.org"
    DESCRIPTION
        "This MIB module defines a TEXTUAL-CONVENTION that
        provides an indication of the general hardware type
        of a particular physical entity.

        Copyright (c) 2013 IETF Trust and the persons identified
        as authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with
        or without modification, is permitted pursuant to, and
        subject to the license terms contained in, the
        Simplified BSD License set forth in Section 4.c of the
        IETF Trust's Legal Provisions Relating to IETF Documents
        (http://trustee.ietf.org/license-info).

        The initial version of this MIB module was published in
        RFC 6933; for full legal notices see the RFC itself."
    REVISION "201507160000Z"  -- July 16, 2015
    DESCRIPTION
        "Removed space between 'battery' and '(14)'."
    REVISION "201507150000Z"  -- July 15, 2015
    DESCRIPTION
        "Added storageDrive(15)."
    REVISION "201304050000Z"  -- April 5, 2013
    DESCRIPTION
        "Initial version of this MIB as published in RFC 6933."
    ::= { mib-2 216 }

-- Textual Conventions

IANAPhysicalClass ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "An enumerated value that provides an indication of
        the general hardware type of a particular physical
        entity.

        There are no restrictions as to the number of
        entPhysicalEntries of each entPhysicalClass, which
        must be instantiated by an agent.

        The enumeration 'other' is applicable if the physical
        entity class is known but does not match any of the
        supported values.

        The enumeration 'unknown' is applicable if the physical
        entity class is unknown to the agent.

        The enumeration 'chassis' is applicable if the physical
        entity class is that of a chassis.

        The enumeration 'backplane' is applicable if the
        physical entity class is that of a backplane.

        The enumeration 'container' is applicable if the
        physical entity class is that of a container, e.g., a
        card slot or daughter-card.

        The enumeration 'powerSupply' is applicable if the
        physical entity class is that of a power supply.

        The enumeration 'fan' is applicable if the physical
        entity class is that of a fan.

        The enumeration 'sensor' is applicable if the physical
        entity class is that of a sensor.

        The enumeration 'module' is applicable if the physical
        entity class is that of a module, e.g., a plug-in card
        or daughter-card.

        The enumeration 'port' is applicable if the physical
        entity class is that of a port or connector.

        The enumeration 'stack' is applicable if the physical
        entity class is that of a stack, e.g., a stack of
        multiple chassis.

        The enumeration 'cpu' is applicable if the physical
        entity class is that of a CPU.

        The enumeration 'energyObject' is applicable if the
        physical entity class is that of an energy-related
        object.

        The enumeration 'battery' is applicable if the physical
        entity class is that of a battery.

        The enumeration 'storageDrive' is applicable if the
        physical entity is a storage drive."
    SYNTAX      INTEGER {
                    other(1),
                    unknown(2),
                    chassis(3),
                    backplane(4),
                    container(5),
                    powerSupply(6),
                    fan(7),
                    sensor(8),
                    module(9),
                    port(10),
                    stack(11),
                    cpu(12),
                    energyObject(13),
                    battery(14),
                    storageDrive(15)
                }

END
EOF
cat > ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/generator.yml << 'EOF'
# generator.yml — Eingabe für den snmp_exporter "generator"
# Erzeugt daraus die finale snmp.yml inkl. vollständigem metrics:-Block.
#
# Voraussetzung: die Cisco-spezifischen MIBs müssen im mibs/-Verzeichnis
# neben dieser Datei liegen (Standard-IETF-MIBs bringt der Generator
# bereits mit). Benötigt werden mindestens:
#   - CISCO-SMI, CISCO-TC
#   - CISCO-PROCESS-MIB          (CPU)
#   - CISCO-MEMORY-POOL-MIB      (Memory)
#   - CISCO-ENVMON-MIB           (Temperatur)
#   - CISCO-FIREWALL-MIB         (Connections, nur ASA)
#   - POWER-ETHERNET-MIB         (PoE-Basis, nur Catalyst 1300)
#   - CISCO-POWER-ETHERNET-EXT-MIB (PoE-Watt pro Port, nur Catalyst 1300)
#   - IF-MIB (in Standard-MIBs enthalten)
#
# Download z.B. über https://mibs.cloudapps.cisco.com/ITDIT/MIBS/MainServlet
# oder via snmp-mibs-downloader / Ciscos GitHub-MIB-Repo.

auths:
  cisco_v3_authpriv:
    version: 3
    username: klwmon
    security_level: authPriv
    password: "AUTH_PASSWORT_HIER"
    auth_protocol: SHA256
    priv_protocol: AES
    priv_password: "PRIV_PASSWORT_HIER"   # bewusst ANDERS als password!

modules:

  # ---------------------------------------------------------------
  # Cisco ASA
  # ---------------------------------------------------------------
  cisco_asa:
    walk:
      - sysUpTime
      - sysName
      # Interfaces
      - ifDescr
      - ifAlias
      - ifOperStatus
      - ifAdminStatus
      - ifHighSpeed
      - ifHCInOctets
      - ifHCOutOctets
      - ifInErrors
      - ifOutErrors
      - ifInDiscards
      - ifOutDiscards
      # CPU
      - cpmCPUTotal5min
      - cpmCPUTotal5minRev
      # Memory
      - ciscoMemoryPoolName
      - ciscoMemoryPoolUsed
      - ciscoMemoryPoolFree
      # Temperatur
      - ciscoEnvMonTemperatureStatusDescr
      - ciscoEnvMonTemperatureStatusValue
      - ciscoEnvMonTemperatureState
      # Firewall-Connections (ASA-spezifisch)
      - cfwConnectionStatValue
    lookups:
      - source_indexes: [ifIndex]
        lookup: ifDescr
      - source_indexes: [ifIndex]
        lookup: ifAlias
      - source_indexes: [ciscoMemoryPoolType]
        lookup: ciscoMemoryPoolName
      - source_indexes: [ciscoEnvMonTemperatureStatusIndex]
        lookup: ciscoEnvMonTemperatureStatusDescr
    overrides:
      ifAlias:
        ignore: false
      ifDescr:
        ignore: false
    max_repetitions: 10
    timeout: 30s
    retries: 2
  # ---------------------------------------------------------------
  # Cisco Catalyst 1300
  # ---------------------------------------------------------------
  cisco_switch:
    walk:
      - sysUpTime
      - sysName
      # Interfaces
      - ifDescr
      - ifAlias
      - ifOperStatus
      - ifAdminStatus
      - ifHighSpeed
      - ifHCInOctets
      - ifHCOutOctets
      - ifInErrors
      - ifOutErrors
      - ifInDiscards
      - ifOutDiscards
      # CPU
      - cpmCPUTotal5min
      - cpmCPUTotal5minRev
      # Memory
      - ciscoMemoryPoolName
      - ciscoMemoryPoolUsed
      - ciscoMemoryPoolFree
      # PoE (Standard IETF POWER-ETHERNET-MIB)
      - pethPsePortDetectionStatus
      - pethMainPsePower
      - pethMainPseConsumptionPower
      - pethMainPseUsageThreshold
      # PoE-Leistung pro Port (Cisco-Erweiterung, mW)
      - cpeExtPsePortPwrConsumption
    lookups:
      - source_indexes: [ifIndex]
        lookup: ifDescr
      - source_indexes: [ifIndex]
        lookup: ifAlias
      - source_indexes: [ciscoMemoryPoolType]
        lookup: ciscoMemoryPoolName
    overrides:
      ifAlias:
        ignore: false
      ifDescr:
        ignore: false
    max_repetitions: 10
    timeout: 30s
    retries: 2
EOF
cat > ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/mibs/POWER-ETHERNET-MIB << 'EOF'
POWER-ETHERNET-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, mib-2, OBJECT-TYPE, Integer32,
    Gauge32, Counter32, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    TruthValue
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB;

powerEthernetMIB MODULE-IDENTITY
    LAST-UPDATED "200311240000Z"
    ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group"
    CONTACT-INFO
        "WG Charter:
        http://www.ietf.org/html.charters/hubmib-charter.html

        Mailing lists:
        General Discussion: hubmib@ietf.org
        To Subscribe:       hubmib-requests@ietf.org
        In Body:            subscribe your_email_address

        Chair: Dan Romascanu
        Avaya
        Tel:  +972-3-645-8414
        Email: dromasca@avaya.com

        Editor: Avi Berger
        PowerDsine Inc.
        Tel: 972-9-7755100 Ext 307
        Fax: 972-9-7755120
        E-mail: avib@PowerDsine.com"
    DESCRIPTION
        "The MIB module for managing Power Source Equipment (PSE)
        working according to the IEEE 802.af Powered
        Ethernet (DTE Power via MDI) standard.

        The following terms are used throughout this
        MIB module.  For complete formal definitions,
        the IEEE 802.3 standards should be consulted
        wherever possible:

        Group  - A recommended, but optional, entity
        defined by the IEEE 802.3 management standard,
        in order to support a modular numbering scheme.
        The classical example allows an implementor to
        represent field-replaceable units as groups of
        ports, with the port numbering matching the
        modular hardware implementation.

        Port  - This entity identifies the port within the group
        for which this entry contains information.  The numbering
        scheme for ports is implementation specific.

        Copyright (c) The Internet Society (2003).  This version
        of this MIB module is part of RFC 3621; See the RFC
        itself for full legal notices."
    REVISION    "200311240000Z"
    DESCRIPTION "Initial version, published as RFC 3621."
    ::= { mib-2 105 }

pethNotifications OBJECT IDENTIFIER ::= { powerEthernetMIB 0 }
pethObjects       OBJECT IDENTIFIER ::= { powerEthernetMIB 1 }
pethConformance   OBJECT IDENTIFIER ::= { powerEthernetMIB 2 }

-- PSE Objects

pethPsePortTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PethPsePortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of objects that display and control the power
        characteristics of power Ethernet ports on a Power
        Source Entity (PSE) device.  This group will be
        implemented in managed power Ethernet switches and
        mid-span devices."
    ::= { pethObjects 1 }

pethPsePortEntry OBJECT-TYPE
    SYNTAX      PethPsePortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A set of objects that display and control the power
        characteristics of a power Ethernet PSE port."
    INDEX       { pethPsePortGroupIndex, pethPsePortIndex }
    ::= { pethPsePortTable 1 }

PethPsePortEntry ::= SEQUENCE {
    pethPsePortGroupIndex               Integer32,
    pethPsePortIndex                    Integer32,
    pethPsePortAdminEnable              TruthValue,
    pethPsePortPowerPairsControlAbility TruthValue,
    pethPsePortPowerPairs               INTEGER,
    pethPsePortDetectionStatus          INTEGER,
    pethPsePortPowerPriority            INTEGER,
    pethPsePortMPSAbsentCounter         Counter32,
    pethPsePortType                     SnmpAdminString,
    pethPsePortPowerClassifications     INTEGER,
    pethPsePortInvalidSignatureCounter  Counter32,
    pethPsePortPowerDeniedCounter       Counter32,
    pethPsePortOverLoadCounter          Counter32,
    pethPsePortShortCounter             Counter32
}

pethPsePortGroupIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This variable uniquely identifies the group
        containing the port to which a power Ethernet PSE is
        connected.  Group means box in the stack, module in a
        rack and the value 1 MUST be used for non-modular devices.
        Furthermore, the same value MUST be used in this variable,
        pethMainPseGroupIndex, and pethNotificationControlGroupIndex
        to refer to a given box in a stack or module in the rack."
    ::= { pethPsePortEntry 1 }

pethPsePortIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This variable uniquely identifies the power Ethernet PSE
        port within group pethPsePortGroupIndex to which the
        power Ethernet PSE entry is connected."
    ::= { pethPsePortEntry 2 }

pethPsePortAdminEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "true (1) An interface which can provide the PSE functions.
        false(2) The interface will act as it would if it had no PSE
        function."
    REFERENCE
        "IEEE Std 802.3af Section 30.9.1.1.2 aPSEAdminState"
    ::= { pethPsePortEntry 3 }

pethPsePortPowerPairsControlAbility OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Describes the capability of controlling the power pairs
        functionality to switch pins for sourcing power. The
        value true indicates that the device has the capability
        to control the power pairs functionality."
    ::= { pethPsePortEntry 4 }

pethPsePortPowerPairs OBJECT-TYPE
    SYNTAX      INTEGER { signal(1), spare(2) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "If pethPsePortPowerPairsControlAbility is true, this
        object is writable to switch pairs. signal means the
        signal pairs only (1,2,3,6) will supply the power. spare
        means the spare pairs only (4,5,7,8) will supply the
        power."
    ::= { pethPsePortEntry 5 }

pethPsePortDetectionStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabled(1),
                    searching(2),
                    deliveringPower(3),
                    fault(4),
                    test(5),
                    otherFault(6)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This variable indicates the port PSE status of the
        given port. disabled(1) means that the PSE functionality
        is currently disabled. searching(2) means that the PSE
        is currently detecting the PD. deliveringPower(3) means
        that the PSE is currently delivering power. fault(4)
        means that the PSE encountered a problem with the
        implementation. test(5) means that the PSE port is
        currently in test mode. otherFault(6) means the PSE
        state is unknown."
    ::= { pethPsePortEntry 6 }

pethPsePortPowerPriority OBJECT-TYPE
    SYNTAX      INTEGER { critical(1), high(2), low(3) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This variable indicates the port power priority
        that the PSE Application device applies to a given
        port."
    ::= { pethPsePortEntry 7 }

pethPsePortMPSAbsentCounter OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This counter is incremented when the PSE state
        diagram transitions directly from the POWER_ON state
        to the IDLE state due to tmpdo_timer_done being
        asserted."
    ::= { pethPsePortEntry 8 }

pethPsePortType OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(0..255))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This is a user-configurable value that describes the
        type of port."
    ::= { pethPsePortEntry 9 }

pethPsePortPowerClassifications OBJECT-TYPE
    SYNTAX      INTEGER {
                    class0(1),
                    class1(2),
                    class2(3),
                    class3(4),
                    class4(5)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This variable indicates the port power classification
        of the given port. This object takes effect only when
        the PD is being powered."
    ::= { pethPsePortEntry 10 }

pethPsePortInvalidSignatureCounter OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This counter is incremented when the PSE state
        diagram enters the SIGNATURE_INVALID state."
    ::= { pethPsePortEntry 11 }

pethPsePortPowerDeniedCounter OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This counter is incremented when the PSE state
        diagram enters the POWER_DENIED state."
    ::= { pethPsePortEntry 12 }

pethPsePortOverLoadCounter OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This counter is incremented when the PSE state
        diagram enters the ERROR_DELAY_OVER state."
    ::= { pethPsePortEntry 13 }

pethPsePortShortCounter OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This counter is incremented when the PSE state
        diagram enters the ERROR_DELAY_SHORT state."
    ::= { pethPsePortEntry 14 }

-- Main PSE group

pethMainPseObjects OBJECT IDENTIFIER ::= { pethObjects 3 }

pethMainPseTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PethMainPseEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of objects that display and control the power
        characteristics of a PSE device."
    ::= { pethMainPseObjects 1 }

pethMainPseEntry OBJECT-TYPE
    SYNTAX      PethMainPseEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row of the pethMainPseTable."
    INDEX       { pethMainPseGroupIndex }
    ::= { pethMainPseTable 1 }

PethMainPseEntry ::= SEQUENCE {
    pethMainPseGroupIndex       Integer32,
    pethMainPsePower            Integer32,
    pethMainPseOperStatus       INTEGER,
    pethMainPseConsumptionPower Integer32,
    pethMainPseUsageThreshold   Integer32
}

pethMainPseGroupIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This variable uniquely identifies the group containing
        the Main PSE on behalf of which this entry contains
        information."
    ::= { pethMainPseEntry 1 }

pethMainPsePower OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The nominal power, expressed in Watts, that the PSE
        can deliver."
    ::= { pethMainPseEntry 2 }

pethMainPseOperStatus OBJECT-TYPE
    SYNTAX      INTEGER { on(1), off(2), faulty(3) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The operational status of the Main PSE."
    ::= { pethMainPseEntry 3 }

pethMainPseConsumptionPower OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Measured usage power expressed in Watts."
    ::= { pethMainPseEntry 4 }

pethMainPseUsageThreshold OBJECT-TYPE
    SYNTAX      Integer32 (1..99)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This variable controls the power usage threshold,
        expressed as a percentage, that the Main PSE uses to
        determine whether to generate a notification."
    ::= { pethMainPseEntry 5 }

-- Notification Control Table

pethNotificationControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PethNotificationControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table controlling the transmission of notifications
        by the agent to a management application."
    ::= { pethObjects 4 }

pethNotificationControlEntry OBJECT-TYPE
    SYNTAX      PethNotificationControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row of pethNotificationControlTable."
    INDEX       { pethNotificationControlGroupIndex }
    ::= { pethNotificationControlTable 1 }

PethNotificationControlEntry ::= SEQUENCE {
    pethNotificationControlGroupIndex Integer32,
    pethNotificationControlEnable     TruthValue
}

pethNotificationControlGroupIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This variable uniquely identifies the group for
        notification control."
    ::= { pethNotificationControlEntry 1 }

pethNotificationControlEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "If this object is true, then it enables the
        generation of pethPsePortOnOffNotification."
    ::= { pethNotificationControlEntry 2 }

-- Notifications

pethPsePortOnOffNotification NOTIFICATION-TYPE
    OBJECTS { pethPsePortDetectionStatus }
    STATUS  current
    DESCRIPTION
        "This notification indicates a change in the value of
        pethPsePortDetectionStatus."
    ::= { pethNotifications 1 }

pethMainPowerUsageOnNotification NOTIFICATION-TYPE
    OBJECTS { pethMainPseConsumptionPower }
    STATUS  current
    DESCRIPTION
        "This notification indicates that a Main PSE
        consumption power threshold has been crossed."
    ::= { pethNotifications 2 }

pethMainPowerUsageOffNotification NOTIFICATION-TYPE
    OBJECTS { pethMainPseConsumptionPower }
    STATUS  current
    DESCRIPTION
        "This notification indicates that a Main PSE
        consumption power threshold is no longer crossed."
    ::= { pethNotifications 3 }

-- Conformance

pethCompliances OBJECT IDENTIFIER ::= { pethConformance 1 }
pethGroups      OBJECT IDENTIFIER ::= { pethConformance 2 }

pethCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for power Ethernet Power
        Source Equipment."
    MODULE
        MANDATORY-GROUPS { pethPsePortGroup, pethMainPseGroup,
                            pethNotificationControlGroup,
                            pethNotificationGroup }
    ::= { pethCompliances 1 }

pethPsePortGroup OBJECT-GROUP
    OBJECTS {
        pethPsePortAdminEnable,
        pethPsePortPowerPairsControlAbility,
        pethPsePortPowerPairs,
        pethPsePortDetectionStatus,
        pethPsePortPowerPriority,
        pethPsePortMPSAbsentCounter,
        pethPsePortType,
        pethPsePortPowerClassifications,
        pethPsePortInvalidSignatureCounter,
        pethPsePortPowerDeniedCounter,
        pethPsePortOverLoadCounter,
        pethPsePortShortCounter
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information and
        control of power Ethernet ports."
    ::= { pethGroups 1 }

pethMainPseGroup OBJECT-GROUP
    OBJECTS {
        pethMainPsePower,
        pethMainPseOperStatus,
        pethMainPseConsumptionPower,
        pethMainPseUsageThreshold
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information and
        control of the Main PSE."
    ::= { pethGroups 2 }

pethNotificationControlGroup OBJECT-GROUP
    OBJECTS { pethNotificationControlEnable }
    STATUS      current
    DESCRIPTION
        "A collection of objects controlling the generation of
        notifications."
    ::= { pethGroups 3 }

pethNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        pethPsePortOnOffNotification,
        pethMainPowerUsageOnNotification,
        pethMainPowerUsageOffNotification
    }
    STATUS      current
    DESCRIPTION
        "A collection of notifications for power Ethernet."
    ::= { pethGroups 4 }

END
EOF
cd ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64

rm ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/mibs/readynas
rm ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/mibs/readydataos

cd ~/snmp-generator/snmp_exporter-0.28.0.linux-amd64/mibs
git clone --depth 1 https://github.com/cisco/cisco-mibs.git /tmp/cisco-mibs
cp /tmp/cisco-mibs/v2/CISCO-PROCESS-MIB.my .
cp /tmp/cisco-mibs/v2/CISCO-MEMORY-POOL-MIB.my .
cp /tmp/cisco-mibs/v2/CISCO-ENVMON-MIB.my .
cp /tmp/cisco-mibs/v2/CISCO-FIREWALL-MIB.my .
cp /tmp/cisco-mibs/v2/CISCO-SMI.my .
cp /tmp/cisco-mibs/v2/CISCO-TC.my .
cp /tmp/cisco-mibs/v2/CISCO-QOS-PIB-MIB.my .
cp /tmp/cisco-mibs/v2/CISCO-POWER-ETHERNET-EXT-MIB.my .
docker run --rm -it \
  -v "$(pwd)":/opt \
  -w /opt \
  prom/snmp-generator:v0.28.0 generate

Grafana Dashboard

{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": {
          "type": "grafana",
          "uid": "-- Grafana --"
        },
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "fiscalYearStartMonth": 0,
  "graphTooltip": 1,
  "id": null,
  "links": [],
  "panels": [
    {
      "collapsed": false,
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 0
      },
      "id": 1,
      "panels": [],
      "title": "Übersicht",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "red",
                "value": null
              },
              {
                "color": "green",
                "value": 1
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 6,
        "x": 0,
        "y": 1
      },
      "id": 2,
      "options": {
        "colorMode": "value",
        "graphMode": "area",
        "justifyMode": "auto",
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "textMode": "auto"
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "count(up{job=~\"$job\", instance=~\"$instance\"} == 1)",
          "legendFormat": "online",
          "refId": "A"
        }
      ],
      "title": "Geräte Online",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 1
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 6,
        "x": 6,
        "y": 1
      },
      "id": 3,
      "options": {
        "colorMode": "value",
        "graphMode": "area",
        "justifyMode": "auto",
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "textMode": "auto"
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "count(up{job=~\"$job\", instance=~\"$instance\"} == 0) OR vector(0)",
          "legendFormat": "offline",
          "refId": "A"
        }
      ],
      "title": "Geräte Offline",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 6,
        "x": 12,
        "y": 1
      },
      "id": 4,
      "options": {
        "colorMode": "value",
        "graphMode": "area",
        "justifyMode": "auto",
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "textMode": "auto"
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "count(ifOperStatus{instance=~\"$instance\"} == 1)",
          "legendFormat": "up",
          "refId": "A"
        }
      ],
      "title": "Interfaces Up",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "orange",
                "value": 1
              },
              {
                "color": "red",
                "value": 3
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 6,
        "x": 18,
        "y": 1
      },
      "id": 5,
      "options": {
        "colorMode": "value",
        "graphMode": "area",
        "justifyMode": "auto",
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "textMode": "auto"
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "count(ifOperStatus{instance=~\"$instance\"} == 2)",
          "legendFormat": "down",
          "refId": "A"
        }
      ],
      "title": "Interfaces Down",
      "type": "stat"
    },
    {
      "collapsed": false,
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 5
      },
      "id": 6,
      "panels": [],
      "title": "CPU & Memory",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "percent"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 6
      },
      "id": 7,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "cpmCPUTotal5min{instance=~\"$instance\"}",
          "legendFormat": "{{instance}} - CPU {{cpmCPUTotalIndex}}",
          "refId": "A"
        }
      ],
      "title": "CPU-Auslastung (%) — 5-Minuten-Mittel",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "percent"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 6
      },
      "id": 8,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "(ciscoMemoryPoolUsed{instance=~\"$instance\"} / (ciscoMemoryPoolUsed{instance=~\"$instance\"} + ciscoMemoryPoolFree{instance=~\"$instance\"})) * 100",
          "legendFormat": "{{instance}} - {{ciscoMemoryPoolName}}",
          "refId": "A"
        }
      ],
      "title": "Memory-Auslastung (%)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "max": 100,
          "min": 0,
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "yellow",
                "value": 70
              },
              {
                "color": "red",
                "value": 90
              }
            ]
          },
          "unit": "percent"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 6,
        "w": 6,
        "x": 0,
        "y": 14
      },
      "id": 9,
      "options": {
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showThresholdLabels": false,
        "showThresholdMarkers": true
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "cpmCPUTotal5min{instance=~\"$instance\"}",
          "legendFormat": "{{instance}}",
          "refId": "A"
        }
      ],
      "title": "CPU aktuell",
      "type": "gauge"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "max": 100,
          "min": 0,
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "yellow",
                "value": 70
              },
              {
                "color": "red",
                "value": 90
              }
            ]
          },
          "unit": "percent"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 6,
        "w": 6,
        "x": 6,
        "y": 14
      },
      "id": 10,
      "options": {
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showThresholdLabels": false,
        "showThresholdMarkers": true
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "(ciscoMemoryPoolUsed{instance=~\"$instance\"} / (ciscoMemoryPoolUsed{instance=~\"$instance\"} + ciscoMemoryPoolFree{instance=~\"$instance\"})) * 100",
          "legendFormat": "{{instance}}",
          "refId": "A"
        }
      ],
      "title": "Memory aktuell",
      "type": "gauge"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "bytes"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 6,
        "w": 12,
        "x": 12,
        "y": 14
      },
      "id": 11,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "ciscoMemoryPoolFree{instance=~\"$instance\"}",
          "legendFormat": "{{instance}} - {{ciscoMemoryPoolName}}",
          "refId": "A"
        }
      ],
      "title": "Freier Speicher (Bytes)",
      "type": "timeseries"
    },
    {
      "collapsed": false,
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 20
      },
      "id": 12,
      "panels": [],
      "title": "Interface Bandbreite",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "Mbits"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 21
      },
      "id": 13,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "irate(ifHCInOctets{instance=~\"$instance\"}[5m]) * 8 / 1000000",
          "legendFormat": "{{instance}} - {{ifDescr}} in",
          "refId": "A"
        }
      ],
      "title": "Interface Traffic — Eingehend (Mbps)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "Mbits"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 21
      },
      "id": 14,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "irate(ifHCOutOctets{instance=~\"$instance\"}[5m]) * 8 / 1000000",
          "legendFormat": "{{instance}} - {{ifDescr}} out",
          "refId": "A"
        }
      ],
      "title": "Interface Traffic — Ausgehend (Mbps)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "percent"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 29
      },
      "id": 15,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "(irate(ifHCInOctets{instance=~\"$instance\"}[5m]) * 8) / (ifHighSpeed{instance=~\"$instance\"} * 1000000) * 100",
          "legendFormat": "{{instance}} - {{ifDescr}} in",
          "refId": "A"
        }
      ],
      "title": "Interface Auslastung — Eingehend (%)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "percent"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 29
      },
      "id": 16,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "(irate(ifHCOutOctets{instance=~\"$instance\"}[5m]) * 8) / (ifHighSpeed{instance=~\"$instance\"} * 1000000) * 100",
          "legendFormat": "{{instance}} - {{ifDescr}} out",
          "refId": "A"
        }
      ],
      "title": "Interface Auslastung — Ausgehend (%)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "custom": {
            "align": "auto",
            "cellOptions": {
              "type": "auto"
            },
            "filterable": true
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          }
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 24,
        "x": 0,
        "y": 37
      },
      "id": 17,
      "options": {
        "cellHeight": "sm",
        "footer": {
          "countRows": false,
          "fields": "",
          "reducer": [
            "sum"
          ],
          "show": false
        },
        "showHeader": true
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "ifOperStatus{instance=~\"$instance\"}",
          "legendFormat": "",
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "ifAdminStatus{instance=~\"$instance\"}",
          "legendFormat": "",
          "refId": "B"
        }
      ],
      "title": "Interface Status Übersicht",
      "type": "table"
    },
    {
      "collapsed": false,
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 45
      },
      "id": 18,
      "panels": [],
      "title": "Interface Fehler & Discards",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "pps"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 46
      },
      "id": 19,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "irate(ifInErrors{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{instance}} - {{ifDescr}} errors-in",
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "irate(ifInDiscards{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{instance}} - {{ifDescr}} discards-in",
          "refId": "B"
        }
      ],
      "title": "Eingehende Fehler / Discards (Rate/s)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "pps"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 46
      },
      "id": 20,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "irate(ifOutErrors{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{instance}} - {{ifDescr}} errors-out",
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "irate(ifOutDiscards{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{instance}} - {{ifDescr}} discards-out",
          "refId": "B"
        }
      ],
      "title": "Ausgehende Fehler / Discards (Rate/s)",
      "type": "timeseries"
    },
    {
      "collapsed": false,
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 54
      },
      "id": 21,
      "panels": [],
      "title": "ASA-spezifisch",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 55
      },
      "id": 22,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "cfwConnectionStatValue{instance=~\"$instance\", cfwConnectionStatDescr=\"Value of the number of active connections\"}",
          "legendFormat": "{{instance}}",
          "refId": "A"
        }
      ],
      "title": "Aktive Verbindungen (Connections)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 55
      },
      "id": 23,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "ciscoEnvMonTemperatureStatusValue{instance=~\"$instance\"}",
          "legendFormat": "{{instance}} - {{ciscoEnvMonTemperatureStatusDescr}}",
          "refId": "A"
        }
      ],
      "title": "Gehäusetemperatur (°C)",
      "type": "timeseries"
    },
    {
      "collapsed": false,
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 63
      },
      "id": 24,
      "panels": [],
      "title": "Switch-spezifisch (Catalyst 1300 / PoE)",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "unit": "watt"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 64
      },
      "id": 25,
      "options": {
        "legend": {
          "calcs": [
            "mean",
            "max",
            "lastNotNull"
          ],
          "displayMode": "table",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "multi",
          "sort": "desc"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "pethPsePortPowerDrawn{instance=~\"$instance\"} / 1000",
          "legendFormat": "{{instance}} - Port {{pethPsePortDetectionStatus}}",
          "refId": "A"
        }
      ],
      "title": "PoE Leistungsaufnahme (W)",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "custom": {
            "align": "auto",
            "cellOptions": {
              "type": "auto"
            },
            "filterable": true
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          }
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 64
      },
      "id": 26,
      "options": {
        "cellHeight": "sm",
        "footer": {
          "countRows": false,
          "fields": "",
          "reducer": [
            "sum"
          ],
          "show": false
        },
        "showHeader": true
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "pethPsePortDetectionStatus{instance=~\"$instance\"}",
          "legendFormat": "",
          "refId": "A"
        }
      ],
      "title": "PoE Port-Status",
      "type": "table"
    },
    {
      "collapsed": false,
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 72
      },
      "id": 27,
      "panels": [],
      "title": "System",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          },
          "unit": "s"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 8,
        "x": 0,
        "y": 73
      },
      "id": 28,
      "options": {
        "colorMode": "value",
        "graphMode": "area",
        "justifyMode": "auto",
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "textMode": "auto"
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "sysUpTime{instance=~\"$instance\"} / 100",
          "legendFormat": "{{instance}}",
          "refId": "A"
        }
      ],
      "title": "Uptime",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "red",
                "value": null
              },
              {
                "color": "green",
                "value": 1
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 8,
        "x": 8,
        "y": 73
      },
      "id": 29,
      "options": {
        "colorMode": "value",
        "graphMode": "area",
        "justifyMode": "auto",
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "textMode": "auto"
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "up{job=~\"$job\", instance=~\"$instance\"}",
          "legendFormat": "{{instance}}",
          "refId": "A"
        }
      ],
      "title": "SNMP Scrape Erfolgreich",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "${DS_PROMETHEUS}"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          },
          "unit": "s"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 8,
        "x": 16,
        "y": 73
      },
      "id": 30,
      "options": {
        "colorMode": "value",
        "graphMode": "area",
        "justifyMode": "auto",
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "textMode": "auto"
      },
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "${DS_PROMETHEUS}"
          },
          "expr": "scrape_duration_seconds{job=~\"$job\", instance=~\"$instance\"}",
          "legendFormat": "{{instance}}",
          "refId": "A"
        }
      ],
      "title": "Scrape-Dauer (s)",
      "type": "stat"
    }
  ],
  "refresh": "30s",
  "schemaVersion": 39,
  "tags": [
    "cisco",
    "asa",
    "catalyst-1300",
    "snmp-exporter",
    "network"
  ],
  "templating": {
    "list": [
      {
        "current": {
          "selected": false,
          "text": "Prometheus",
          "value": "Prometheus"
        },
        "hide": 0,
        "includeAll": false,
        "label": "Datenquelle",
        "multi": false,
        "name": "DS_PROMETHEUS",
        "options": [],
        "query": "prometheus",
        "queryValue": "",
        "refresh": 1,
        "regex": "",
        "skipUrlSync": false,
        "type": "datasource"
      },
      {
        "current": {
          "selected": false,
          "text": "All",
          "value": "$__all"
        },
        "datasource": {
          "type": "prometheus",
          "uid": "${DS_PROMETHEUS}"
        },
        "definition": "label_values(up, job)",
        "hide": 0,
        "includeAll": true,
        "label": "SNMP Exporter Job",
        "multi": true,
        "name": "job",
        "options": [],
        "query": {
          "query": "label_values(up, job)",
          "refId": "StandardVariableQuery"
        },
        "refresh": 2,
        "regex": "",
        "skipUrlSync": false,
        "sort": 1,
        "type": "query"
      },
      {
        "current": {
          "selected": false,
          "text": "All",
          "value": "$__all"
        },
        "datasource": {
          "type": "prometheus",
          "uid": "${DS_PROMETHEUS}"
        },
        "definition": "label_values(up{job=~\"$job\"}, instance)",
        "hide": 0,
        "includeAll": true,
        "label": "Gerät (Instance)",
        "multi": true,
        "name": "instance",
        "options": [],
        "query": {
          "query": "label_values(up{job=~\"$job\"}, instance)",
          "refId": "StandardVariableQuery"
        },
        "refresh": 2,
        "regex": "",
        "skipUrlSync": false,
        "sort": 1,
        "type": "query"
      }
    ]
  },
  "time": {
    "from": "now-6h",
    "to": "now"
  },
  "timepicker": {},
  "timezone": "browser",
  "title": "Cisco ASA & Catalyst 1300 – Performance Übersicht",
  "uid": "cisco-asa-c1300-perf",
  "version": 1,
  "weekStart": ""
}