Updated Dell MP released 3.1 A01
Just a few musings on the new Dell hardware MP.
Download Now
1. The MP comes in three files....
Dell.Connections.001.mp - for Servers and Printers
Dell.Connections.Client.mp - for Business Computers
Dell.Connections.StorageArray.mp - for MD3000™ and MD3000i™ Storage Arrays
So most of you will just need to import the Server MP. No need or benefit to import the storage array MP unless you support and monitor those specific array models above. I recommend deleting any Dell MP's you had previously imported.. along with any overrides, and starting from scratch on this one, but in place upgrade from 3.0 is supported on OpsMgr SP1.
2. To monitor an agent's hardware, OMSA 5.3 or later must be installed on the server. Updating OMSA will likely require several BIOS and driver updates on your servers... so plan accordingly. If you deploy this MP and some agents do not have OMSA 5.3 or later installed (they have an older version) then the MP will group them under "unknown", and Dell monitoring will be disabled. This is a huge improvement from previous versions.... where monitoring still tried to apply and ended up causing WMI problems on the agents. What would be *MUCH* better.... is to take any agent without OMSA 5.3 or newer.... and drop it into a group, or class, where ONLY event log and performance monitoring is done.... since these are native. That way - if an agent with OMSA 5.1 or 5.2 is out there - most of the critical events will still match event log expressions, as these do not change very often. Still... best to just update the OMSA version so your monitoring is complete and current, end-to-end.
3. Dell is still using their own internal terminology to revision MP's..... Such as..... "3.1 A01"..... what does that mean to an OpsMgr admin? Dell should put the actual MP version as seen in the OpsMgr console on their download page..... The previous version of the "Dell Management Pack" file "Dell.Connections.001.mp" was 3.0.0.27. The new MP imports as 3.1.0.118. The COOL thing.... is that Dell put the "3.1 A01" into the common name of the MP which shows up in the OpsMgr console.... so finally an OpsMgr admin can know if he is current or not based on Dell's download page. :-)
4. Dell MP's do not currently support Server 2008.... according to their support matrix in the guide. Hope this is coming out soon.
5. KB951526 IS REQUIRED!!! I think this needs a little more stress than a small blurb in the appendix.... if you plan on using this MP - you should first apply 951526 to your OpsMgr environment.
6. You REALLY need to read the guide on this one. After importing the Dell Server MP.... all your management servers will start logging a 31707 event error every 5 minutes, complaining about not being able to find a directory. You have to run the DellBMCLogSetup.exe on all management servers, which creates a local directory and file in C:\DellReports. Fundamentally - anything optional like this.... should be disabled by default.... instead of logging constant errors by default.... letting the end user enable it if they want this type of monitoring. The rules involved in this appear to be targeting the "Management Server" class, and run a script every 360 minutes, and another rule monitors the contents of a text file that would get created.
That's about all I could see initially. I'll be looking forward to testing it on live Dell servers... and see if they have solved the problems interacting with WMI that I experienced with previous versions.
Update 8-18-08
Apparently there is what appears to be a bug in this MP.... on all my management servers, I see the following events in the OpsMgr event log:
Event Type: Warning
Event Source: Health Service Modules
Event Category: None
Event ID: 21402
Date: 8/18/2008
Time: 3:15:46 PM
User: N/A
Computer: OMMS2
Description:
Forced to terminate the following process started at 3:14:46 PM because it ran past the configured timeout 60 seconds.
Command executed: "C:\WINDOWS\system32\cscript.exe" /nologo "BMCLogGet.vbs"
Working Directory: C:\Program Files\System Center Operations Manager 2007\Health Service State\Monitoring Host Temporary Files 15\2829\
One or more workflows were affected by this.
Workflow name: Dell.Connections.BMCLogRetrieve
Instance name: OMMS2.opsmgr.net
Instance ID: {7E69629F-1CAD-62A7-F706-6ED089BA940F}
Management group: OPS
Event Type: Warning
Event Source: Health Service Modules
Event Category: None
Event ID: 21413
Date: 8/18/2008
Time: 3:15:46 PM
User: N/A
Computer: OMMS2
Description:
The Event Policy for the process started at 3:14:46 PM has detected errors in the output. The 'ExitCode' policy expression:
[^0]+
matched the following output:
3
Command executed: "C:\WINDOWS\system32\cscript.exe" /nologo "BMCLogGet.vbs"
Working Directory: C:\Program Files\System Center Operations Manager 2007\Health Service State\Monitoring Host Temporary Files 15\2829\
One or more workflows were affected by this.
Workflow name: Dell.Connections.BMCLogRetrieve
Instance name: OMMS2.opsmgr.net
Instance ID: {7E69629F-1CAD-62A7-F706-6ED089BA940F}
Management group: OPS
The above is recurring every 6 hours... (360 minutes)... and also creating an application exception that is being picked up by AEM:
Some notes on the dell discovery:
The primary discovery (fist discovery that runs) is targeting Windows Computer. However - this discovery does not show up in the Ops console under "object" discoveries due to a problem with the MP.
You can see this in MPviewer, however:
So ALL Windows computers will be inspected to see if they are a "Dell System" every 6 hours. It does this by running a script on ALL Windows Computers every 6 hours to see if they are a Dell server.
The script appears to simply check WMI to see if a value for Manufacturer = Dell, and then collect BIOS information. Then it will populate instances of the Dell System Class. You can see these under Monitoring/Discovered inventory to see if this is working.
Here is the discovery script, which anyone can pull from the XML:
************************************
Option Explicit
On Error resume next
Dim oArgs
Set oArgs = WScript.Arguments
if oArgs.Count < 3 Then
Wscript.Quit -1
End If
Dim SourceID, ManagedEntityId, TargetComputer
SourceId = oArgs(0)
ManagedEntityId = oArgs(1)
TargetComputer = oArgs(2)
Dim oAPI, oDiscoveryData, oInst
Set oAPI = CreateObject("MOM.ScriptAPI")
set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)
Dim strComputer, WbemServices, wbemObjectSet, wbemObject, sQuery
Dim Manufacturer
strComputer="."
Set WbemServices = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
If IsEmpty(WbemServices) Then
MOMDebugLog "Unable to open WMI Namespace root-cimv2. Check to see if the WMI service is enabled and running, and ensure this WMI namespace exists." & Err.Description
Else
GetManufacturerName()
If Instr(Manufacturer, "Dell") Then
set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.DellSystem']$")
call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
call oDiscoveryData.AddInstance(oInst)
End If
End If
' Submit the data
Call oAPI.Return(oDiscoveryData)
Set oDiscoveryData = Nothing
Set oAPI = Nothing
Public Function GetManufacturerName ()
'Retrieving ManufactuferName
On Error resume next
Set wbemObjectSet = wbemServices.ExecQuery("select * from win32_bios")
If Err.Number <> 0 Then
ErrorMessage = "Number:" & Err.Number & "Description:" & Err.Description
MOMDebugLog (ErrorMessage)
End If
If (wbemObjectSet is Nothing) or (IsNull(wbemObjectSet)) Then
LogMessage = "Unable to retrieve Manufacturer"
MOMDebugLog (LogMessage)
Else
LogMessage = "Manufacturer Name retrieved successfully"
MOMDebugLog (LogMessage)
Dim objItem
For Each objItem in wbemObjectSet
'Error checking
If Err.Number <> 0 Then
ErrorMessage = "Number:" & Err.Number & "Description:" & Err.Description
MOMDebugLog (ErrorMessage)
End If
'Object Retrieval
If not objItem is nothing Then
Manufacturer = objItem.Manufacturer
End If
Next
End If
Set wbemObjectSet = Nothing
End Function
</ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS" />
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>
<DataSourceModuleType ID="Dell.Connections.DellServer.DiscoveryRule" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element name="IntervalSeconds" type="xsd:integer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
<xsd:element name="Computer" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime />
<ScriptName>DellServerDiscovery.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Config/Computer$</Arguments>
<ScriptBody>
******************************
Next.... we see the next discovery will target our newly populated "Dell System" class instances - and run the "Dell Server Discovery"..... and once again - this discovery does not show up in the Ops console under Object discoveries.... This would be a really good discovery to override - if you wanted to limit the number of Servers to initially receive the Dell Management Pack.... however by not exposing this to the ops console, that functionality has been somewhat limited. You can see it in MPViewer:
This discovery runs a script every 6 hours against all discovered instances of "Dell Systems Instances". The script is a bit long.... but this is the core script that discovers most of the Dell objects, to populate the other classes such as BIOS, hardware, software, etc... The script connects to WMI - polls some information, and checks to see if OMSAVersion = RequiredOMSAVersion = 5.3
It LOOKS like if you have a newer version of OMSA... like 5.4 - this wont work either... unless I am reading the script wrong. I cant test this as I don't have any Dell servers. Regardless.... it is designed to look for the supported OMSA version of 5.3, and if not - then it dumps the machines into an Unknown group. If it works properly, you will be able to go into Monitoring, Discovered Inventory, and load the "Dell Server Instance" class and see the discovered systems and their attributes.