Notifications

24 views

Description

This article details how to modify Patterns/Service Mapping in order to support Top-Down Discovery with Netscalers that utilize Service Groups (multiple IPs per Load Balancer service, instead of a single IP), which is currently unsupported.

NOTE: Dependent on Pattern fixes in PRB1360774

Release or Environment

All, as of NYP1

Cause

Currently the Netscaler SSH pattern doesn't properly gather multiple IP addresses for cmdb_ci_lb_pool records to match the configured Service Group IP information on the Netscaler end. As a result, VIPs are not able to be properly correlated to cmdb_ci_lb_service records which reference back to the Netscaler CI record in Service Mapping.

Additionally, Service Mapping does not search on any other tables (only cmdb_ci_lb_service and LB CI records) to match VIPs to Load Balancers.

Resolution

PRB1360774 contains the Pattern fixes to properly gather the IP information in cmdb_ci_lb_pool and cmdb_ci_lb_pool_member records

We can utilize the DiscoveryHostUtils script include to workaround the Service Mapping component and search on these additional tables and return the proper Load Balancer CI record. Modify the "findHostByIp" function in "DiscoveryHostUtils" as follows:

findHostByIp : function(ip){

// Check for IP matches manually on cmdb_ci_lb_pool, and cmdb_ci_lb_pool_members to support Service Groups configuration
var grLbP = new GlideRecord("cmdb_ci_lb_pool");
grLbP.addQuery("ip_address","=",ip);
grLbP.query();

while (grLbP.next()) {
if (grLbP.load_balancer.operational_status == "1")
return grLbP.load_balancer;
}

var grLbPM = new GlideRecord("cmdb_ci_lb_pool_member");
grLbPM.addQuery("ip_address","=",ip);
grLbPM.query();

while (grLbPM.next()) {
if (grLbPM.load_balancer.operational_status == "1")
return grLbPM.load_balancer;
}


return null;
},

Article Information

Last Updated:2019-11-01 09:56:42
Published:2019-11-01