====== SAP HANA SDI Monitoring ====== SDI (Smart Data Integration) is a complementary tool to SAP HANA. It enables data to be integrated into SAP HANA in real time. This monitor supervises SAP HANA SDI remote subscriptions and raises alarms when replication transactions are not processed within expected delays. ===== What Can Be Monitored ===== You can detect and alert on: * Replication lag for SDI subscriptions (last processed transaction too old) * Missing expected SDI subscription flow (when a row is marked as mandatory) * Number of delayed SDI transactions for a filter set (aggregate mode) This supports proactive detection of stopped or delayed SDI replication pipelines. ===== Monitored Data ===== The monitor queries SAP HANA view ''M_REMOTE_SUBSCRIPTIONS'' and collects: ^ Field ^ Description ^ | ''SCHEMA_NAME'' | Schema owning the remote subscription. | | ''SUBSCRIPTION_NAME'' | SDI subscription name. | | ''REMOTE_SOURCE_NAME'' | Remote source associated with the subscription. | | ''STATE'' | Current subscription state. | | ''LAST_PROCESSED_TRANSACTION_TIME'' | Timestamp of the last processed transaction (timezone-adjusted before evaluation). | ===== Configuration Hints ===== * One surveillance row targets a subset of SDI entries using filters (Schema, Subscription, Remote source, State). * Filters support ''*'' and special matching patterns. * **Max age (in minutes)** is mandatory in practice: define a numeric threshold or a threshold expression. * Threshold breach is evaluated when ''age_in_minutes >= configured_threshold''. * If **Aggregates** is enabled, one alarm is generated per row with the number of delayed transactions. * If **Aggregates** is disabled, one alarm is generated per delayed SDI entry. * If **Mandatory** is enabled and no SDI entry matches the row filters, a "not found" alarm is generated. * If **Severity** is disabled, no alarm is raised for the row. * **Auto clear** controls whether alarms are clearable when condition recovers. ===== Configuration ===== ==== Monitoring Parameters ==== ^ Parameter ^ Type ^ Required ^ Default ^ Description ^ | Auto clear | Boolean | Yes | ''true'' | Alarms generated by this monitor are clearable when condition recovers. | ==== Surveillance Table ==== ^ Field ^ Required ^ Default ^ Description ^ | Active | Yes | ''true'' | Enables/disables this surveillance row. | | Mandatory | Yes | ''false'' | If enabled, raises an alarm when no SDI entry matches row filters. | | Schema | Yes | ''*'' | Schema filter for SDI entries. | | Subscription | Yes | ''*'' | Subscription filter for SDI entries. | | Remote source | Yes | ''*'' | Remote source filter for SDI entries. | | State | Yes | ''*'' | State filter for SDI entries. | | Max age (in minutes) | Yes | (empty) | Delay threshold expression for transaction age. Alarm when current age reaches/exceeds threshold. | | Aggregates | Yes | ''true'' | If enabled, sends one aggregated alarm per row; otherwise sends one alarm per matching delayed SDI entry. | | Severity | Yes | ''Minor'' | Alarm severity used when threshold is breached. | | Alarm tag | No | (empty) | Optional custom alarm tag. | | Alarm | No | ''true'' | Enables/disables alarm generation for this row. | ===== Alarm Conditions ===== For each active surveillance row: * Row is evaluated only if **Alarm** is enabled and **Severity** is not disabled. * SDI entries are matched by Schema, Subscription, Remote source, and State filters. * For each matched SDI entry, delay is computed from current time and ''LAST_PROCESSED_TRANSACTION_TIME''. * **Delay alarm**: triggered when ''delay_minutes >= Max age threshold''. * If **Mandatory=true** and no SDI entry matches filters, a "not found" alarm is triggered. * If **Aggregates=true**, delayed entries are grouped into one alarm for the row. ===== Generated Metrics ===== This monitor does not emit dedicated time-series metrics. It generates alarms based on SDI transaction age evaluation. ===== Generated Alarms ===== Alarm messages include SDI context, for example: * ''transaction not processed since more than X minutes (>=Y) for :: on state '' * ''N transaction(s) not processed since more than X minutes, Schema:, Subscription:, Source:'' * ''SDI transaction not found for ::'' ===== Example ===== ^ Active ^ Mandatory ^ Schema ^ Subscription ^ Remote source ^ State ^ Max age (in minutes) ^ Aggregates ^ Severity ^ Alarm tag ^ Alarm ^ | true | false | ''*'' | ''*'' | ''*'' | ''*'' | ''G2W:15 W2M:30 M2C:60'' | true | 3 | ''HANA,SDI'' | true | | true | true | ''INSTANCE_SDI_DB_1'' | ''ALG_SRV_SUB'' | ''AGL_REMOTE_DB_1'' | ''AGL_CHANGE_DATA'' | ''10'' | false | 4 | ''HANA,SDI,MANDATORY'' | true |