CA Spectrum

Send monitoring events from CA Spectrum to BigPanda.

Supported VersionsTypeAuthentication Type
CA Spectrum Version 9.4.xCustom Spectrum Scripts, Python (Version 2.6.x - 2.7.x)Org Bearer Token

CA Spectrum delivers advanced scalability and features that enable your organization to effectively monitor and manage its dynamic, complex IT infrastructure—including physical, virtual, and cloud environments as well as software-defined networks (SDN). CA Spectrum is a single platform that features proactive network change management, fault isolation, and root cause analysis. With CA Spectrum, you can track, manage, and optimize not only the network infrastructure but also the business services running on top of it.

Before You Integrate

Before you start, you must have access to the following:

  • CA Spectrum
  • CA Spectrum Alarm Notification Manager (SANM)
  • CA Spectrum AlarmNotifier & AlarmNotifier Enhancements
  • BigPanda Account
  • CA Spectrum Admin User With Read/Write Access

Install the Integration

Create An AlarmNotifier

On your CA Spectrum server, create an AlarmNotifier. See Chapter 5 of your CA Spectrum & Alarm Notification User Manual.

In the following sections, you will edit the SetScript, UpdateScript, and ClearScript for the AlarmNotifier.

The directory path to your AlarmNotifier is typically located at: <$SPECROOT>/Notifier.

Edit The SetScript

Add the following code to the SetScript that is executed by the AlarmNotifier.


CURL=/usr/bin/curl # Define directory
URL="https://api.bigpanda.io/data/v2/alerts" #lambda endpoint
APP_KEY="<Your App Key>"
ORG_TOKEN="<Your Org Bearer Token>"

    if [ -n "$SANM_0x12b4c" ]
    then
            ALARM_TITLE="$SANM_0x12b4c"
    else
            PCAUSE_HEAD=`echo "$PCAUSE" | /usr/bin/head -1`
            ALARM_TITLE="$PCAUSE_HEAD"
    fi      
    if [ -n "$SANM_0x11f7e" ]
    then
            IFALIAS=${SANM_0x11f7e}
    else
            IFALIAS="NA"
    fi

    # CA Alarm Variables
    DATE=$1
    TIME=$2
    MODEL_TYPE=$3
    HOST=$4
    ALARM_ID=$5
    SEVERITY=$6
    CAUSE=$7
    REPAIR_PERSON=$8
    SPECTRO_SERVER=$9
    LANDSCAPE=${10}
    MODEL_HANDLE=${11}
    MODEL_TYPE_HANDLE=${12}
    IP_ADDRESS=${13}
    SECURITY_STRING=${14}
    ALARM_STATE=${15}
    ACKNOWLEDGED=${16}
    CLEARABLE=${17}
    DEVICE_TYPE=${18}
    CASTATUS=${STATUS}

    # define additional tags and variables here... e.g.
    # SERVERNAME=${SANM_0x00012b4c}
    # SWITCH=${SANM_0x13376}

    DESCRIPTION=`echo ${EVENTMSG} | sed -e "s/\"//g"`
    ADDITIONAL_INFO=`echo ${PCAUSE} | sed -e "s/\"//g"`
    echo "$(date) Sending SET event to BigPanda"
    DATA="{
    \"app_key\" : \"${APP_KEY}\",
    \"incident_identifier\" : \"${ALARM_ID}\",
    \"date\" : \"${DATE}\",
    \"time\" : \"${TIME}\",
    \"model_type\" : \"${MODEL_TYPE}\",
    \"host\" : \"${HOST}\",
    \"mac_address\" : \"${SANM_0X110DF}\",
    \"alarm_id\" : \"${ALARM_ID}\",
    \"alarm_severity\" : \"${SEVERITY}\",
    \"cause\" : \"${CAUSE}\",
    \"repair_person\" : \"${REPAIR_PERSON}\",
    \"spectro_server\" : \"${SPECTRO_SERVER}\",
    \"landscape\" : \"${LANDSCAPE}\",
    \"model_handle\" : \"${MODEL_HANDLE}\",
    \"model_type_handle\" : \"${MODEL_TYPE_HANDLE}\",
    \"ip_address\" : \"${IP_ADDRESS}\",
    \"security_string\" : \"${SECURITY_STRING}\",
    \"alarm_state\" : \"${ALARM_STATE}\",
    \"acknowledged\" : \"${ACKNOWLEDGED}\",
    \"clearable\" : \"${CLEARABLE}\",
    \"device_type\" : \"${DEVICE_TYPE}\",
    \"castatus\" : \"${CASTATUS}\",
    \"alarm_description\" : \"${DESCRIPTION}\",
    \"additional_info\" : \"${ADDITIONAL_INFO}\",
    \"device_location\" : \"${DEVICE_LOCATION}\",
    \"topology_model\" : \"${TOPOLOGY_MODEL}\",
    \"alarm_title\" : \"${ALARM_TITLE}\",
    \"ifalias\" : \"${IFALIAS}\",
    \"action\" : \"set\"
    }"

    echo `${CURL} -H "Authorization: Bearer ${ORG_TOKEN}" -H "Accept: application/json" -H "Content-Type: application/json" -X POST --data "${DATA}" ${URL}`
    echo "$(date) Sent SET event to BigPanda"


Edit The UpdateScript

Add the following code to the UpdateScript that is executed by the AlarmNotifier.


CURL=/usr/bin/curl # Define directory
URL="https://api.bigpanda.io/data/v2/alerts" #lambda endpoint
APP_KEY="<Your App Key>"
ORG_TOKEN="<Your Org Bearer Token>"

if [ -n "$SANM_0x12b4c" ]
            then
                ALARM_TITLE="$SANM_0x12b4c"
        else
                PCAUSE_HEAD=`echo "$PCAUSE" | /usr/bin/head -1`
                ALARM_TITLE="$PCAUSE_HEAD"
    fi      
    if [ -n "$SANM_0x11f7e" ]
        then
                IFALIAS=${SANM_0x11f7e}
        else
                IFALIAS="NA"
    fi

    # CA Alarm Variables
    DATE=$1
    TIME=$2
    MODEL_TYPE=$3
    HOST=$4
    ALARM_ID=$5
    SEVERITY=$6
    CAUSE=$7
    REPAIR_PERSON=$8
    SPECTRO_SERVER=$9
    LANDSCAPE=${10}
    MODEL_HANDLE=${11}
    MODEL_TYPE_HANDLE=${12}
    IP_ADDRESS=${13}
    SECURITY_STRING=${14}
    ALARM_STATE=${15}
    ACKNOWLEDGED=${16}
    CLEARABLE=${17}
    DEVICE_TYPE=${18}
    CASTATUS=${STATUS}

    # define additional tags and variables here... e.g.
    # SERVERNAME=${SANM_0x00012b4c}
    # SWITCH=${SANM_0x13376}

    DESCRIPTION=`echo ${EVENTMSG} | sed -e "s/\"//g"`
    ADDITIONAL_INFO=`echo ${PCAUSE} | sed -e "s/\"//g"`
    echo "$(date) Sending UPDATE event to BigPanda"
    DATA="{
            \"app_key\" : \"${APP_KEY}\",
            \"incident_identifier\" : \"${ALARM_ID}\",
            \"date\" : \"${DATE}\",
            \"time\" : \"${TIME}\",
            \"model_type\" : \"${MODEL_TYPE}\",
            \"host\" : \"${HOST}\",
            \"mac_address\" : \"${SANM_0X110DF}\",
            \"alarm_id\" : \"${ALARM_ID}\",
            \"alarm_severity\" : \"${SEVERITY}\",
            \"cause\" : \"${CAUSE}\",
            \"repair_person\" : \"${REPAIR_PERSON}\",
            \"spectro_server\" : \"${SPECTRO_SERVER}\",
            \"landscape\" : \"${LANDSCAPE}\",
            \"model_handle\" : \"${MODEL_HANDLE}\",
            \"model_type_handle\" : \"${MODEL_TYPE_HANDLE}\",
            \"ip_address\" : \"${IP_ADDRESS}\",
            \"security_string\" : \"${SECURITY_STRING}\",
            \"alarm_state\" : \"${ALARM_STATE}\",
            \"acknowledged\" : \"${ACKNOWLEDGED}\",
            \"clearable\" : \"${CLEARABLE}\",
            \"device_type\" : \"${DEVICE_TYPE}\",
            \"castatus\" : \"${CASTATUS}\",
            \"alarm_description\" : \"${DESCRIPTION}\",
            \"additional_info\" : \"${ADDITIONAL_INFO}\",
            \"device_location\" : \"${DEVICE_LOCATION}\",
            \"topology_model\" : \"${TOPOLOGY_MODEL}\",
            \"alarm_title\" : \"${ALARM_TITLE}\",
            \"ifalias\" : \"${IFALIAS}\",
            \"action\" : \"update\"
            }"
    
    echo `${CURL} -H "Authorization: Bearer ${ORG_TOKEN}" -H "Accept: application/json" -H "Content-Type: application/json" -X POST --data "${DATA}" ${URL}`
    echo "$(date) Sent UPDATE event to BigPanda"

Edit The ClearScript

Add the following code to the ClearScript that is executed by the AlarmNotifier.


CURL=/usr/bin/curl # Define directory
URL="https://api.bigpanda.io/data/v2/alerts" #lambda endpoint
APP_KEY="<Your App Key>"
ORG_TOKEN="<Your Org Bearer Token>"

    if [ -n "$SANM_0x12b4c" ]
            then
                    ALARM_TITLE="$SANM_0x12b4c"
            else
                    PCAUSE_HEAD=`echo "$PCAUSE" | /usr/bin/head -1`
                    ALARM_TITLE="$PCAUSE_HEAD"
    fi      
    if [ -n "$SANM_0x11f7e" ]
            then
                    IFALIAS=${SANM_0x11f7e}
            else
                    IFALIAS="NA"
    fi

    # CA Alarm Variables
    DATE=$1
    TIME=$2
    MODEL_TYPE=$3
    HOST=$4
    ALARM_ID=$5
    SEVERITY=$6
    CAUSE=$7
    REPAIR_PERSON=$8
    SPECTRO_SERVER=$9
    LANDSCAPE=${10}
    MODEL_HANDLE=${11}
    MODEL_TYPE_HANDLE=${12}
    IP_ADDRESS=${13}
    SECURITY_STRING=${14}
    ALARM_STATE=${15}
    ACKNOWLEDGED=${16}
    CLEARABLE=${17}
    DEVICE_TYPE=${18}
    CASTATUS=${STATUS}

    # define additional tags and variables here... e.g.
    # SERVERNAME=${SANM_0x00012b4c}
    # SWITCH=${SANM_0x13376}

    DESCRIPTION=`echo ${EVENTMSG} | sed -e "s/\"//g"`
    ADDITIONAL_INFO=`echo ${PCAUSE} | sed -e "s/\"//g"`
    echo "$(date) Sending CLEAR event to BigPanda"
    DATA="{
            \"app_key\" : \"${APP_KEY}\",
            \"incident_identifier\" : \"${ALARM_ID}\",
            \"date\" : \"${DATE}\",
            \"time\" : \"${TIME}\",
            \"model_type\" : \"${MODEL_TYPE}\",
            \"host\" : \"${HOST}\",
            \"mac_address\" : \"${SANM_0X110DF}\",
            \"alarm_id\" : \"${ALARM_ID}\",
            \"alarm_severity\" : \"${SEVERITY}\",
            \"cause\" : \"${CAUSE}\",
            \"repair_person\" : \"${REPAIR_PERSON}\",
            \"spectro_server\" : \"${SPECTRO_SERVER}\",
            \"landscape\" : \"${LANDSCAPE}\",
            \"model_handle\" : \"${MODEL_HANDLE}\",
            \"model_type_handle\" : \"${MODEL_TYPE_HANDLE}\",
            \"ip_address\" : \"${IP_ADDRESS}\",
            \"security_string\" : \"${SECURITY_STRING}\",
            \"alarm_state\" : \"${ALARM_STATE}\",
            \"acknowledged\" : \"${ACKNOWLEDGED}\",
            \"clearable\" : \"${CLEARABLE}\",
            \"device_type\" : \"${DEVICE_TYPE}\",
            \"castatus\" : \"${CASTATUS}\",
            \"alarm_description\" : \"${DESCRIPTION}\",
            \"additional_info\" : \"${ADDITIONAL_INFO}\",
            \"device_location\" : \"${DEVICE_LOCATION}\",
            \"topology_model\" : \"${TOPOLOGY_MODEL}\",
            \"alarm_title\" : \"${ALARM_TITLE}\",
            \"ifalias\" : \"${IFALIAS}\",
            \"action\" : \"clear\"
            }"
    
    echo `${CURL} -H "Authorization: Bearer ${ORG_TOKEN}" -H "Accept: application/json" -H "Content-Type: application/json" -X POST --data "${DATA}" ${URL}`
    echo "$(date) Sent CLEAR event to BigPanda"

Test the Integration by Sending a Test Alert

  1. Restart the AlarmNotifier application service.
  2. Test the custom SetScript by generating an alert on a system that is monitored by Spectrum.

Delete the Integration

Deleting an integration requires that you remove the integration in both the integrated system and BigPanda. We recommend that you first uninstall the integration on the integrated system to prevent traffic from being sent and rejected by BigPanda, since the app key will not exist once you delete the integration in BigPanda.

❗️

Caution During Replacement

When replacing an existing integration with a new tool or system, we recommend configuring the new integration first to ensure no data is lost.

Deactivate Inbound Integration

If you want to stop sending data to BigPanda but don’t want to delete your integration, you can temporarily deactivate it.

This feature is currently only available for inbound integrations.

To deactivate an inbound integration:

  1. In BigPanda, navigate to the Integrations tab and select the desired integration from the list. This will open integration details on the right side of the window.
  2. At the top of the integration details, click the Active/Inactive toggle next to the application name to change the status of the integration.

In the integrations list, inactive integrations will be marked with a gray bar.

Stop Sending Data to BigPanda

Within the integrated system, disable any settings that send data to BigPanda.

Each system requires specific changes to disable the integration with BigPanda. For example, you must delete the topic in CloudWatch, and you must disable the alert channel in New Relic. To determine the changes for your integrated system, reference the relevant documentation or contact BigPanda support.

Delete the Integration in BigPanda

Take the following steps to delete the integration from BigPanda:

  1. In BigPanda, navigate to the Integrations tab and select the desired integration from the list.
  2. In the integration details on the right of the page, click the trash icon, then confirm you want to delete the integration. The integration will be removed immediately.

👍

️Automatic Alert Resolution for Deleted Integrations

All active alerts from the integration will be resolved after deletion.

❗️

Data Removal

This procedure does not remove any data from the integrated system.