--- /dev/null
+CEPH-PROMETHEUS-ALERT-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+ MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, enterprises, TimeTicks
+ FROM SNMPv2-SMI
+ DisplayString
+ FROM SNMPv2-TC
+;
+
+ceph OBJECT IDENTIFIER ::= { enterprises 50495 }
+prometheus OBJECT IDENTIFIER ::= { ceph 15 }
+
+prometheusAlert MODULE-IDENTITY
+ LAST-UPDATED "201904010000Z" -- 1. Apr 2019
+ ORGANIZATION "The Ceph Project"
+ CONTACT-INFO "https://ceph.com"
+ DESCRIPTION "Prometheus Alert SNMP MIB"
+ REVISION "201904010000Z" -- 1. Apr 2019
+ DESCRIPTION "Initial version."
+ ::= { prometheus 1 }
+
+prometheusAlertObjects OBJECT IDENTIFIER ::= { prometheusAlert 1 }
+prometheusAlertTraps OBJECT IDENTIFIER ::= { prometheusAlert 2 }
+
+--
+-- Objects
+--
+
+prometheusAlertNotificationAlertName OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "The name of the Prometheus alert."
+::= { prometheusAlertObjects 1 }
+
+prometheusAlertNotificationStatus OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "The status of the Prometheus alert."
+::= { prometheusAlertObjects 2 }
+
+prometheusAlertNotificationSeverity OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "The severity of the Prometheus alert."
+::= { prometheusAlertObjects 3 }
+
+prometheusAlertNotificationInstance OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "Unique identifier for the Prometheus instance."
+::= { prometheusAlertObjects 4 }
+
+prometheusAlertNotificationJob OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "The name of the Prometheus job."
+::= { prometheusAlertObjects 5 }
+
+prometheusAlertNotificationDescription OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "The Prometheus alert description field."
+::= { prometheusAlertObjects 6 }
+
+prometheusAlertNotificationLabels OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "Additional Prometheus alert labels as JSON string."
+::= { prometheusAlertObjects 7 }
+
+prometheusAlertNotificationTimestamp OBJECT-TYPE
+ SYNTAX TimeTicks
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "The time when the Prometheus alert occurred."
+::= { prometheusAlertObjects 8 }
+
+prometheusAlertNotificationRawData OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION "The raw Prometheus alert as JSON string."
+::= { prometheusAlertObjects 9 }
+
+--
+-- Traps
+--
+
+prometheusAlertTrapDefault NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "Default trap."
+::= { prometheusAlertTraps 1 }
+
+prometheusAlertClusterHealthTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 2 }
+prometheusAlertMonTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 3 }
+prometheusAlertOsdTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 4 }
+prometheusAlertMdsTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 5 }
+prometheusAlertMgrTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 6 }
+prometheusAlertPgsTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 7 }
+prometheusAlertNodesTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 8 }
+prometheusAlertPoolsTraps OBJECT IDENTIFIER ::= { prometheusAlertTraps 9 }
+
+prometheusAlertClusterHealthTrapHealthError NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "Ceph in health_error state for more than 5m."
+::= { prometheusAlertClusterHealthTraps 1 }
+
+prometheusAlertClusterHealthTrapHealthWarn NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "Ceph in health_warn for more than 15m."
+::= { prometheusAlertClusterHealthTraps 2 }
+
+prometheusAlertMonTrapLowMonitorQuorumCount NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "Monitor count in quorum is low."
+::= { prometheusAlertMonTraps 1 }
+
+prometheusAlertOsdTrap10PercentOsdsDown NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "More than 10% of OSDs are down."
+::= { prometheusAlertOsdTraps 1 }
+
+prometheusAlertOsdTrapOsdDown NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "One or more OSDs down for more than 15 minutes."
+::= { prometheusAlertOsdTraps 2 }
+
+prometheusAlertOsdTrapOsdsNearFull NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "An OSD is dangerously full, over 80%."
+::= { prometheusAlertOsdTraps 3 }
+
+prometheusAlertOsdTrapFlapOsd NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "An OSD was marked down at back up at least once a minute for 5 minutes."
+::= { prometheusAlertOsdTraps 4 }
+
+prometheusAlertOsdTrapHighPgCountDeviation NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "An OSD deviates by more then 30% from average PG count."
+::= { prometheusAlertOsdTraps 5 }
+
+prometheusAlertPgsTrapPgsInactive NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "One or more PGs are inactive for more than 5 minutes."
+::= { prometheusAlertPgsTraps 1 }
+
+prometheusAlertPgsTrapPgsUnclean NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "One or more PGs are not clean for more than 15 minutes."
+::= { prometheusAlertPgsTraps 2 }
+
+prometheusAlertNodesTrapRootVolumeFull NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "Root volume (OSD and MON store) is dangerously full (< 5% free)."
+::= { prometheusAlertNodesTraps 1 }
+
+prometheusAlertNodesTrapNetworkPacketsDropped NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "A node experiences packet drop > 1 packet/s on an interface."
+::= { prometheusAlertNodesTraps 2 }
+
+prometheusAlertNodesTrapNetworkPacketErrors NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "A node experiences packet errors > 1 packet/s on an interface."
+::= { prometheusAlertNodesTraps 3 }
+
+prometheusAlertNodesTrapStorageFilling NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "A mountpoint will be full in less then 5 days assuming the average fillup rate of the past 48 hours."
+::= { prometheusAlertNodesTraps 4 }
+
+prometheusAlertPoolsTrapPoolFull NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "A pool is at 90% capacity or over."
+::= { prometheusAlertPoolsTraps 1 }
+
+prometheusAlertPoolsTrapPoolFillingUp NOTIFICATION-TYPE
+ OBJECTS {
+ prometheusAlertNotificationAlertName,
+ prometheusAlertNotificationStatus,
+ prometheusAlertNotificationSeverity,
+ prometheusAlertNotificationInstance,
+ prometheusAlertNotificationJob,
+ prometheusAlertNotificationDescription,
+ prometheusAlertNotificationLabels,
+ prometheusAlertNotificationTimestamp,
+ prometheusAlertNotificationRawData
+ }
+ STATUS current
+ DESCRIPTION "A pool will be full in less then 5 days assuming the average fillup rate of the past 48 hours."
+::= { prometheusAlertPoolsTraps 2 }
+
+END