Solarwinds NPM Integration

SolarWinds® Network Performance Monitor (NPM) is powerful and affordable network monitoring software that enables you to quickly detect, diagnose, and resolve network performance problems & outages.

384

With SolarWinds NPM's quick installation, discover devices to start monitoring them. SolarWinds NPM monitors & displays response time, availability, and performance of network devices. It also has an intelligent alerting system and executes actions (sending email, using Get or Post URL Functions etc.) on alert creation and reset.

A SolarWinds alert is an automated notification that a network event has occurred, such as a server becoming unresponsive. The network event that triggers an alert is determined by conditions set up during alert configuration.

What does Opsgenie offer SolarWinds users?

Opsgenie provides a bidirectional integration for SolarWinds. The integration leverages SolarWinds's "Send a Post Request to a Web Server" functionality and Marid utility to automatically create alerts and synchronizes alert status between SolarWinds and Opsgenie.

With Opsgenie's SolarWinds NPM Integration, Opsgenie acts as a dispatcher for these alerts, determines the right people to notify based on on-call schedules– notifies via email, text messages (SMS), phone calls, and iPhone & Android push notifications, and escalates alerts until the alert is acknowledged or closed.

Opsgenie has a specific API for SolarWinds NPM Integration, SolarWinds sends alerts to Opsgenie and Opsgenie handles the automatic creation of alerts.

Functionality of the integration

  • SolarWinds triggers an alert when a monitored object satisfies the alert's conditions. When an alert is created in SolarWinds, an alert is also created in Opsgenie automatically through the integration.
  • When the alert is acknowledged in Opsgenie, alert is acknowledged automatically in SolarWinds as well, by executing the script in Marid.
  • When a note added to the alert in Opsgenie, a note is also added to the alert in SolarWinds as well, by executing the script in Marid.

🚧

Important Note: Make sure that Microsoft servers in use have the following update installed: https://support.microsoft.com/en-us/kb/3109853
Microsoft servers (.NET based apps, MS S Channel, etc.) have problems with handling TLS(https) against Cloudflare; connection failures occur every one hour. Install this update for a more stable integration

Add SolarWinds NPM Integration in Opsgenie

  1. Please create an Opsgenie account if you haven't done so already.
  2. Go to Opsgenie's SolarWinds NPM Integration page.
  3. Specify who is notified of SolarWinds NPM alerts using the Teams field. Auto-complete suggestions are provided as you type.
  4. Copy the API Key.
  5. Click Save Integration.
1229

Configuration in SolarWinds NPM

  1. In SolarWinds NPM, navigate to the Alert Manager from "Settings" -> "Manage Alerts".
  2. In "Alert Manager" click Add New Alert.
  3. Set alert properties. Provide information about the alert, including its name, severity, how frequently to evaluate the conditions, and whether to restrict access to the alert using account limitations.
1024
  1. Set trigger conditions. The trigger action is executed when trigger conditions meet. SolarWinds NPM has a strong conditioning mechanism that gives users the opportunity to build complex conditions. All fields available in the database can be used in these conditions.

🚧

Because of available variable variety and flexibility, building conditions in SolarWinds rather than Opsgenie is highly recommended.

1024
  1. Set a reset condition. The reset action is executed when the condition is met.
800
  1. Set the time interval for the alert to monitor your network, either always enabled or restricted to a specified time.
800
  1. Set the trigger action. With this trigger action, SolarWinds NPM posts alert data to Opsgenie and an alert is created in Opsgenie. To POST data to Opsgenie, set the trigger action to Send a Get or Post Request to a Web Server.
800 967

Choose Post Method, paste the Integration URL copied previously while saving SolarWinds NPM Integration in Opsgenie.

Then, enter the variables to send to Opsgenie with the format variable1=val1&variable2=val2. All variables sent with a Trigger action to Opsgenie can be used in the alerts field "Create Alert Action" of the SolarWinds NPM Integration.

Specify teams, recipients, and tags by putting them into the content. The default trigger action body can be sent from SolarWinds here.

The "alias" field in the following example becomes the SolarWinds alerts alias field. To make different alias configurations, change the value of the alias field in post content. Make sure the alias configurations in both "Trigger" and "Reset" are the same.

751

Opsgenie parses incoming data and creates robust alerts according to the incoming content. Modifying alert fields with incoming data can be done via draggable fields.

Create alerts for any monitored object (Nodes, Volumes, Interfaces etc.) in SolarWinds. Use a "Send Http Request" action to send common fields and monitored object-specific fields. In the Opsgenie SolarWinds NPM Integration, alert specific fields are available as custom integration fields. It still supports dynamic fields to be sent to Opsgenie.

2288

Example: To include a NodeID variable in an alert in Opsgenie– It's not one of the integration fields available so send it from the SolarWinds NPM to use it in alert configuration, dynamically. Make sure the variable name used in Opsgenie and SolarWinds NPM is the same.

Add NodeID variable to Http Post Body by:
NodeID=${N=SwisEntity;M=NodeID} and then use it the SolarWinds NPM Integration "Create Alert Action" alert fields like in the following example of {{NodeID}}:

800
  1. Set the reset action. With a reset action, SolarWinds NPM posts the data that closes the corresponding alert in Opsgenie. Configure the reset action with Send a Get or Post Request to a Web Server option. Find the default reset action body to send from SolarWinds here.
800
  1. After reviewing the alert configuration, click SUBMIT.

Configure Opsgenie to SolarWinds Integration (Optional)

🚧

If you are using Opsgenie Edge Connector instead of Marid, you can find the integration specific script and its sample config from here. For more information about OEC, please refer OEC Integration documentation

Use Marid utility with a SolarWinds-specific script to update the state of the alerts in SolarWinds when they are updated in Opsgenie. For example, when a SolarWinds alert is acknowledged in Opsgenie from a mobile device using the Opsgenie app, the alert is acknowledged in SolarWinds, and when users add comments to alerts in Opsgenie, comments are posted to SolarWinds as well. Marid subscribes to alert actions in Opsgenie and reflects these actions on Solarwind alerts by using the SolarWinds API.

Download the Marid zip file including solarwind-specific script from downloads page.

For 32 bit systems

  • To install Marid as a service in a Windows server: marid.exe -install
  • To start Marid, run the following command: marid.exe -start
  • To stop Marid, run the following command: marid.exe -stop

For 64 bit systems

  • To install Marid as a service in a Windows server: marid_64.exe -install
  • To start Marid, run the following command: marid_64.exe -start
  • To stop Marid, run the following command: marid_64.exe -stop

Marid is a java application; therefore requires the Java Runtime version 1.6+ Both the Open JDK and Oracle JVMs can be used.

📘

In order to use this feature, the "Send Alert Actions To SolarWinds" checkbox should be enabled in Opsgenie SolarWinds Integration.

📘

To set JAVA_HOME environment variable, refer to Setting JAVA_HOME for more information.

To execute actions in SolarWinds, Marid gets the configuration parameters from <MARID_HOME>/conf/marid.conf file.

Configuration Parameters
solarwinds.urlURL to update SolarWinds alerts when alerts get acknowledged, commented, etc.
solarwinds.host SolarWinds host.
solarwinds.login Credentials to authenticate SolarWinds web server to get update alerts when alerts get acknowledged, commented, etc.
solarwinds.password Credentials to authenticate SolarWinds web server to get update alerts when alerts get acknowledged, commented, etc.

For more information refer to Marid Integration Server and Alert Action Execution

🚧

SolarWinds integration package does not support SSL v1.0. If your SolarWinds Server has SSL v1.0, we suggest you to upgrade your SSL server.

Sample parameters sent from SolarWinds to Opsgenie

ActionType:Create
alias:1
ObjectID:1
NodeName:172.31.14.211
Acknowledged:Not Acknowledged
AcknowledgedBy:
AcknowledgedTime:Never
AcknowledgeUrl:http://WIN-PM7542TQNF9:8787/Orion/Netperfmon/AckAlert.aspx?AlertDefID=1
AlertDefID:e896e98d-b36b-4d7d-a32b-d6016269841d
AlertDescription:default description
AlertDetailsUrl:http://WIN-PM7542TQNF9:8787/Orion/View.aspx?NetObject=AAT:1
AlertID:49
AlertMessage:deneme was triggered
AlertName:deneme
AlertTriggerCount:312
AlertTriggerTime:Tuesday, January 5, 2016 8:16 AM
Application:SolarWinds.Core.Common
DateTime:Tuesday, January 5, 2016 8:16 AM
DownTime:0
LastEdit:Tuesday, January 5, 2016 8:16 AM
ObjectType:Node
Severity:Critical
TimeOfDay:Alert is always enabled
teams:team1, team2
recipients:[email protected], [email protected]
tags:tag1,tag2

These parameters are parsed by Opsgenie as:

[
    "ActionType": "Create",
    "ObjectID": "1",
    "NodeName": "172.31.14.211",
    "AlertDefID": "e896e98d-b36b-4d7d-a32b-d6016269841d",
    "DownTime": 0,
    "AlertTriggerTime": "Tuesday, January 5, 2016 8:16 AM",
    "DateTime": "Tuesday, January 5, 2016 8:16 AM",
    "AlertTriggerCount": 312,
    "ObjectType": "Node",
    "AlertID": "49",
    "alias": "1",
    "AcknowledgedTime": "Never",
    "AlertMessage": "deneme was triggered",
    "TimeOfDay": "Alert is always enabled",
    "AcknowledgedBy": "",
    "AlertName": "deneme",
    "teams": "[team1, team2]",
    "originalTags": "[tag1, tag2]",
    "AcknowledgeUrl": "http://WIN-PM7542TQNF9:8787/Orion/Netperfmon/AckAlert.aspx?AlertDefID=1",
    "Severity": "Critical",
    "originalExtraProperties": "[AlertDefinitionID:e896e98d-b36b-4d7d-a32b-d6016269841d, ObjectType:Node, ObjectID:1]",
    "tags": "[tag1, tag2]",
    "AlertDescription": "default description",
    "LastEdit": "Tuesday, January 5, 2016 8:16 AM",
    "recipients": "[[email protected], [email protected]]",
    "AlertDetailsUrl": "http://WIN-PM7542TQNF9:8787/Orion/View.aspx?NetObject=AAT:1",
    "Application": "SolarWinds.Core.Common",
    "Acknowledged": "Not Acknowledged"
]

Troubleshooting

SolarWinds NPM sends body without making any escapes on data. So, if any variables contain any characters that need to be escaped (like &), please send the data in advanced mode. Use µ#µ instead of = and §#§ instead of &. You can find a troubleshooting version of the default content for trigger action here and reset action here.

Sending the data from SolarWinds NPM to Opsgenie in either of the following two formats produces the same result in Opsgenie.

800 800

Please make sure that the Body to Post text matches the one in here to be able to Acknowledge/Close/AddNote actions on SolarWinds side.

Source

The source code of the Marid script is also available at GitHub Opsgenie Integration repository.