同时使用 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 请求选项。
提供一个动作名称。
选择 "使用 HTTP/S POST",然后从 SW-Reset.txt 文件中复制正文文本。
将身份验证选择为 "无",内容类型选择为 application/json(如下截图所示),然后保存变更。