To see what object types are being duplicated, take a look through the FMS log. If the duplicate objects are LogicalDisk, PhysicalDisk or NetworkInterface, then below is a script which you can run in Tooling | Script Editor which will help you find the exact object names so you can go to DataManagement dashboard and remove them.
Please read the first part of the script for instructions.
For other "duplicate" objects, you will need to sort through DataManagement dashboard.
def msg = new StringBuilder()
msg.append("The following output examines Topology Objects which frequently cause these errors in the FMS log files:\n")
msg.append("WARN Unable to evaluate the following derivation: DerivationCalculation for ... rate() is expecting a series of value from one metric\n")
msg.append("If any of the following LogicalDisk, PhysicalDisk or NetworkInterface objects display more than one object:\n")
msg.append(" 1. Examine the collecting Agent, and the last updated date/time.\n")
msg.append(" 2. If you see two Agents, and they are both updated very recently, one of the agents should be deleted so as not to create these separate objects.\n")
msg.append(" 3. The object that has not updated recently should be deleted. You can delete the object with the following groovy code in the Script Editor:\n\n")
msg.append("server.TopologyService.deleteObject(server.TopologyService.getObject(\"UNIQUEID\"))\n\n");
msg.append(" where UNIQUEID is the unique id of the object listed below (for example, \"00dfb901-4db6-4848-b5c8-f210b8d919c2\")\n\n\n")
#!LogicalDisk#.getTopologyObjects().each { disk ->
msg.append("LogicalDisk " + disk.get("name") + ":\n")
disk.get("detail").findAll { it.get("topologyTypeName").equals("DiskIO_Volumes") }.each { Volume ->
msg.append(" DiskIO_Volumes: " + Volume.get("uniqueId") + " last collected by " + Volume.get("monitoringAgent/name") + " at " + Volume.get("lastUpdated") + "\n")
}
msg.append("\n")
}
#!PhysicalDisk#.getTopologyObjects().each { disk ->
msg.append("PhysicalDisk " + disk.get("name") + ":\n")
disk.get("detail").findAll { it.get("topologyTypeName").equals("DiskIO_Disks") }.each { Disk ->
msg.append(" DiskIO_Disks: " + Disk.get("uniqueId") + " last collected by " + Disk.get("monitoringAgent/name") + " at " + Disk.get("lastUpdated")+ "\n")
}
msg.append("\n")
}
#!NetworkInterface#.getTopologyObjects().each { network ->
msg.append("NetworkInterface " + network.get("name") + ":\n")
network.get("detail").findAll { it.get("topologyTypeName").equals("NIC_NICStats") }.each { NIC ->
msg.append(" NIC_NICStats: " + NIC.get("uniqueId") + " last collected by " + NIC.get("monitoringAgent/name") + " at " + NIC.get("lastUpdated")+ "\n")
}
msg.append("\n")
}
return msg;