SolarWinds 集成

SolarWinds 集成

同时使用 ServiceDesk Plus 和 SolarWinds 的组织现在可以集成这两个应用程序,以便在 ServiceDesk Plus 中为 SolarWinds 中发出的警报自动记录工单。每当警报再次发生时,工单将重新打开,并仅在警报重置时关闭。


请注意,目前只有云版本的 ServiceDesk Plus 支持这些功能;不过,内部部署版本也将很快支持这些功能。

 

该集成包括的一些主要功能有:

 

  • 触发警报时自动记录事件。

  • 从 ServiceDesk Plus 工单中确认警报。

  • 根据警报状态更新工单,即警报重置时关闭工单,警报再次发生时重新打开工单。

  • 在 ServiceDesk Plus 中生成报告,以进一步分析与警报相关的工单指标。 


下面的截图显示了为一个警报创建的工单、为一个重复出现的警报重新打开的工单以及通过重置警报解决的工单。






 配置集成 

 

要使该集成发挥作用,用户需要分别在 ServiceDesk Plus 和 SolarWinds 中配置以下内容。


 ServiceDesk Plus 配置

 

  • 在 ServiceDesk Plus 中,转到设置 > 开发人员空间 > 自定义函数。

  • 从下拉菜单中选择回调函数,然后单击新建自定义函数按钮。

 

 



 

  • 提供名称和 api 名称,并在发布复选框上打勾。

  • 在参数下选择原始数据。

  • 复制下面提到的代码并保存页面。

body = body.toString();
/*Specify the portal of the request to which the note must be added*/
portal_name = "itdesk";
/*Input data provided is a raw data, which will come as a String so converting it to a Map, so that it will be available in the JS Object format*/
inputMap = body.toMap();
/*Provide the corresponding status name in SDP Cloud application, for the incident to reopen, when the same alert has been raised again*/
reopenStatus = "Open";
/*Provide the corresponding status name in SDP Cloud application, for the incident to be completed, when the reset alert has been raised*/
completedStatus = "Resolved";
/*Please provide the content to be added as the note, when the alert has been reset*/
resetContent = "Alert has been reset";
/*Please provide the content to be added as the note, when the alert has been reopen*/
reopenContent = "Alert has been reopened";
/*Please provide the additional field key of the alert id*/
alertIdUdfKey = "udf_char46";
//Code flow begins here
alertId = inputMap.get("alertId");
operation = "ADD";
if(inputMap.get("operation") != null && inputMap.get("operation") == "RESET")
{
    operation = "RESET";
}
if(alertId != null)
{
    requests = zoho.sdp.invokeurl
    [
        url :"/app/" + portal_name + "/api/v3/requests"
        type :GET
        parameters:{"input_data":{"list_info":{"search_criteria":{"field":"udf_fields." + alertIdUdfKey,"condition":"is","values":{alertId}},"row_count":1,"sort_fields":{{"field":"display_id","order":"desc"}}}}}
    ];
    requests = requests.get("requests");
    respone = Map();
    if(requests.size() > 0)
    {
        requestDetails = requests.get(0);
        requestId = requestDetails.get("id");
        statusName = reopenStatus;
        noteContent = "Alert has been reopened <br> " + body;
        if(operation == "RESET")
        {
            statusName = "Resolved";
            noteContent = "Alert has been reset <br>" + body;
        }
        addNote = zoho.sdp.invokeurl
        [
            url :"/app/" + portal_name + "/api/v3/requests/" + requestId + "/notes"
            type :POST
            parameters:{"input_data":{"request_note":{"description":noteContent}}}
        ];
        response = zoho.sdp.invokeurl
        [
            url :"/app/" + portal_name + "/api/v3/requests/" + requestId
            type :PUT
            parameters:{"input_data":{"request":{"status":{"name":statusName}}}}
        ];
    }
    else
    {
        requestData = Map();
        requestData.put("subject",inputMap.get("alertMessage") + " - " + inputMap.get("nodeName"));
        description = "Node Name : " + inputMap.get("nodeName") + "<br>Alert Description: " + inputMap.get("alertDescription") + "<br>Alert ID: " + inputMap.get("alertId") + "<br>Alert Trigger Time: " + inputMap.get("alertTriggerTime") + "<br>Severity: " + inputMap.get("severity") + "<br>Alert Definition ID: " + inputMap.get("alertDefinitionId") + "<br>Alert Acknowledgement Link: <a href='" + inputMap.get("alertAcknowledgementLink") + "'>" + inputMap.get("alertAcknowledgementLink") + "</a>";
        requestData.put("description",description);
        /*If you want to store the alert data to the additional fields, the following is the format.*/
        udfFields = Map();
        udfFields.put(alertIdUdfKey,alertId);
        /*adding the udf fields object to the request data*/
        requestData.put("udf_fields",udfFields);
        response = zoho.sdp.invokeurl
        [
            url :"/app/" + portal_name + "/api/v3/requests/"
            type :POST
            parameters:{"input_data":{"request":requestData}}
        ];
        info response;
    }
}

return response.toMap();




 

 

 

 

 

 SolarWinds 配置

 

在 SolarWinds 中,转至管理警报部分并创建新警报或编辑现有警报,并在 ServiceDesk Plus 中为其创建事件。

 

 



 

 

 

 

 

 

创建触发器动作

 

使用触发器动作,可以配置警报发出时要执行的动作。

 

  • 转到警报内的触发动作选项卡。

 


 

 

  • 点击添加动作,然后选择向网络服务器发送 GET 或 POST 请求选项。



  • 提供一个动作名称。

 

 

  • 要获取 URL,请访问 ServiceDesk Plus > 设置 > 开发人员空间 > 自定义功能,然后编辑已配置的自定义功能,并在 URL 字段中复制 URL 以执行此自定义功能。

 

 

 

 

 

  • 选择 "使用 HTTP/S POST",然后从 SW-Trigger.txt 文件中复制正文文本。

    请将身份验证选择为 "无",内容类型选择为 application/json(如下截图所示),然后保存变更。


 

 


重置触发器动作

  • 转到重置动作选项卡。

  • 点击添加动作按钮并选择向网络服务器发送 GET 或 POST 请求选项。


 

  • 提供一个动作名称。

 



要获取 URL,请访问 ServiceDesk Plus > 设置 > 开发人员空间 > 自定义功能,然后编辑已配置的自定义功能,并从字段 URL 中复制 URL 以执行此自定义功能。


  • 选择 "使用 HTTP/S POST",然后从 SW-Reset.txt 文件中复制正文文本。

  • 将身份验证选择为 "无",内容类型选择为 application/json(如下截图所示),然后保存变更。


 

注意:默认的请求模板用于在 SDP 上创建事件。如果要变更模板,请相应自定义回调功能(设置 > 开发人员空间)。
当警报实际重置时,将关闭工单并备注警报已重置。如果工单仍处于打开状态,请检查您是否配置了请求关闭规则/请求生命周期。