Archive for December 2008

Fixed MPs

December 22, 2008

The MP Catalogue shows that a new DNS MP (6.0.6480.0) has been released and according to the history

  • 10/23/2007 – Original release of DNS 2000/2003 MP for OpsMgr 2007, version 6.0.5000.0
  • 8/14/2008 – Updated version 6.0.6278.27. Added support for Windows DNS 2008.
  • 12/19/2008 – Updated vesion 6.0.6480.0. Fixed high CPU utilizations and DNS servers disappeared from the discovery. 

So the fix for the previous MP to stop the DNS servers disappearing should no longer be needed. MP available from http://www.microsoft.com/downloads/details.aspx?FamilyID=633b718f-5fe8-47d5-a395-8203f8ec354f&displaylang=en&displaylang=en 4 months from previous release.

The SQL MP (6.0.6460.0)  was released on 3rd December which fixed the problem with large databases – “fixed an issue with the database discovery script to prevent overflows”. The good thing about this one was that the problem was blogged about by the Microsoft Product Team and Support so you knew that there was a problem unlike the DNS one. Released 5 weeks after previous version.

  • 10/29/2008 – Updated version 6.0.6441.0, which introduced SQL Server 2008 support in addition to other new features and fixes. Refer to the MP guide for a complete list of changes.
  • 12/3/2008 – Updated version 6.0.6460.0, fixed an issue with the database discovery script to prevent overflows
  • The Exchange 2007 MP (v6.0.6461.0) was released on the 8th December and fixed an annoying problem with the disk alerts which run every 60 secs with alert suppression! This has been changed. Four and a half months since previous release.

  • 7/24/2008 – Updated Release, version 6.0.6363.0
  • 12/8/2008 – Updated Release, version 6.0.6461.0
  • They still not have released WSS 3 MP v6.0.6447.0 again which had a problem with importing. That was in early November. I wonder what happened with that MP?

    It is nice that the MPs are updated with fixes but why so song between them if they are simple fixes? I know some time for investigation and testing is necessary but the 5 weeks between the release for the SQL MP seems reasonable. Over 4 months for the others does not seem reasonable – especially if they are not going to mention these problems unless you go to a newsgroup.

    AD Integration and Default MP

    December 19, 2008

    This is something that I can not remember seeing being documented. When you do AD Integration it puts the information into the Default MP. There is no option of where to save the data when you are doing the AD Integration wizard. I assumed that it went into the SQL database but I have found all the info embedded in the Default MP.

    This makes it more important to keep all other overrides and changes in a separate MP as you do not want to have to delete the Default MP if you need to delete another MP and there is an overrode in it which will then create a dependency to the MP you are trying to delete.

    Relevant to OpsMgr SP1. Other versions may differ.

    SQL Server 2005 SP3 Released

    December 18, 2008

    If you are using SQL 2005 to back end MOM or OpsMgr or any other product and you like to keep up with the latest SP then SP3 for SQL Server 2005 has been released.

    http://www.microsoft.com/downloads/details.aspx?FamilyID=ae7387c3-348c-4faa-8ae5-949fdfbe59c4&displaylang=en

    So SQL becomes version 9.00.4035.

    Bug fixes listed at http://support.microsoft.com/Default.aspx?kbid=955706

    Resolve Rule Alerts with PowerShell

    December 17, 2008

    I was working last week on a little PowerShell script to help me clear off old rule alerts but did not get around to posting about it. Then I saw that Scott Moss has just done a post on the same subject. http://myitforum.com/cs2/blogs/smoss/archive/2008/12/12/om07-powershell-close-all-open-alerts-generated-by-a-rule.aspx

    Well as I have done the work and mine is more of a script with parameters I thought that I would post it anyway. His one line is neat if you want to clear all rule alerts.

    get-alert -criteria ‘ResolutionState = ”0” AND IsMonitorAlert = ”False”’| resolve-alert -comment “Closing rule generated alerts” | out-null

    Note that these are all single apostrophes done 2 (or 3) times rather than double apostrophes. I have read that criteria is better/faster way to do a large number of objects in PowerShell but my script uses the more popularly used where-object.

    Like Scott I found that one of the alert properties is IsMonitorAlert with a value of True or False. This value is not available as a column in the console which is a shame as it would be useful. I have been using Type but I have found that certain MPs put rules into Types that I would associate with monitors so it is not 100% reliable way of sorting alerts from rules and monitors. I am finding more and more uses for PowerShell but this is mainly due to the fact that the console is limited in many areas which need to be fixed.

    Monitors should auto resolve when the problem is fixed unless it is a monitor with a manual reset! A parameter for that would also be useful. If the problem is not fixed and you clear the alert it does not generate another alert as Health Explorer is still showing the problem. You have to clear Health Explorer to remove the alert and then if the problem still exists then the alert will be generated again. But in general if a monitor alert is in the console it shows an underlying problem that needs fixed, or the monitor needs to be overridden or the monitor alert has not auto resolved correctly and needs investigation. In any case alerts from monitors are best done through the console.

    Rules, on the other hand, always need to be manually resolved. One alert that keeps on coming up is script failures. The first thing I do is change that from Warning to Information. You can get a lot of these but if it is a one off then it is likely that it was trying to run when the server was busy. If it keeps on repeating then the problem needs looking at.

    Normally in the console I would sort by last modified date (and group by Type to help) and look for rules that have not incremented their counters for a few days. Not too bad if you are at the customer site each day but if I am away for a while and come back I need to quickly clear the console and so I came up with this script. You can chose how many days and whether or not you want to close the alerts, count them or list them. The number of days is the number of days of alerts to keep.  If you put in 3 then the last 3 days will be kept and everything older will be closed. Note that this gets the date AND time so if you run it at 10 am then it keeps alerts from 10 am 3 days ago. In order to close alerts you must have close as the second parameter to avoid someone accidentally running the script and clearing alerts that they should not have done. Mind you with rules the alert just reappears if there is still a problem.

    I prefer just deleting resolution state of 0 as I use different resolution states for different actions but if you want all change that to ($_.ResolutionState -lt 255) in the script and that covers all alerts that are not already closed.

    Give the script a name like resolverules.ps1 and cut and paste the following text into it.

    #START
    #Resolve alerts from rules only – not monitors
    # 2 parameters – number of days and close or count
    #use 0 for all alerts
    #if close or count is not used as the 2nd parameter then alerts will be shown only
    #to use close or count then there MUST be a valid number as the first parameter
    #if no parameters are used then show all is done i.e. days = 0

    param ($noofdays, $action)

    $targetdate = (get-date).AddDays(-$noofdays)

    If ($action -match “close”)
     {
     get-alert | where-object { ($_.LastModified -lt $targetdate) -and ($_.ResolutionState -eq 0) -and ($_.IsMonitorAlert -match “False”)} | resolve-alert -comment “Resolve-Alert by PowerShell”
     }
    ElseIf ($action -match “count”)
     {
     get-alert | where-object { ($_.LastModified -lt $targetdate) -and ($_.ResolutionState -eq 0) -and ($_.IsMonitorAlert -match “false”)} | ForEach-Object {$totalno++}
     $totalno
     }
    Else
     {
     get-alert | where-object { ($_.LastModified -lt $targetdate) -and ($_.ResolutionState -eq 0) -and ($_.IsMonitorAlert -match “false”)} | select-object Name, MonitoringObjectDisplayName, IsMonitorAlert, LastModified
     }
    #END

    Strange Things With The Script

    Although Scott’s line uses IsMonitorAlert = ”False” which correctly gives the rules when I tried something similar in my script it gave monitors and so I have had to use ($_.IsMonitorAlert -ne “False”) which seems wrong but gives the correct results. On further investigation it transpires that –ne always gives False regardless of whether you put it equal to true or false and if you use –eq it always returns true regardless of whether you check it against true or false.

    In the script I also tried it as
    ($_.IsMonitorAlert -ne “zzz”)  – this returns False
    ($_.IsMonitorAlert -eq “zzz”) – this returns True.

    But when I used –match instead using True and False work correctly. If  I had used ($_.IsMonitorAlert -ne “True”) it would have worked and I would not have discovered this bug but I started with ($_.IsMonitorAlert -eq “False”) as the logical way to do it but as I have found –eq will always return true.

    Just to check I also tried
    get-Childitem “C:\Program Files\outlook express”  | where {$_.extension -eq “.exe”}
    This works correctly using –eq and –ne.

    Mystifying. I changed them all to -match in the script as that looks better.

    Good Views Bad Views

    December 10, 2008

    I am still on a theme of views as I believe they are important. What has come to light is that targeting is just as important for views as it is for reports.

    Good views are easy to spot. They help you to identify problems, see patterns or check that everything is OK at a glance. However, bad views do exist and the type that I dislike most are the ones that target Entity and then use a computer group to filter. Some of the ones that do this are the Exchange Alerts view and the IBM Hardware view. This means that you see all alerts related to those computers in that group whether or not they are relevant to Exchange or hardware etc. I can see a situation where this may be useful. If the Exchange team is responsible not just for Exchange but for the whole server including the OS and the hardware then this would be a good view. However in large organisations you generally find that the team supports just the application and there are teams that specialise in Windows and hardware etc.

     view-exchange-alerts

    Bad View – All alerts from the computers in the Exchange group are shown.

    view-ibm-alerts

    Bad view – IBM hardware alerts are linked to Windows Computer object so that all alerts are shown and not just relevant hardware alerts.

    A good view is provided by the AD, DNS and SQL MPs. When you look at the alerts from their views you only see alerts that are relevant to that application which in my mind is much better. The difference is that they use a class as the target for the view. This makes it easier to create a view that is focused on one thing.

    view-sql-alerts

    Good view – only SQL alerts how up in this view.

    So why doesn’t the Exchange team do the same? I looked at that and tried to create an Exchange view that showed only Exchange alerts.  The Exchange MP provides many classes but there does not seem to be one that is the “top” that you can use. Very frustrating. The BPA part of the MP gets around this by using Custom Field 6 which means that you can create a view around that. Very neat and good forward thinking by that team.

    view-exchange-bpa-alerts

    Actually I have found a few other MPs use that but not consistently. The SCCM MP uses it but sometimes it starts ConfigMgr and sometimes SMS Server and occasionally it is blank. If all MPs were to use it it would make life so much simpler. And using the custom field in the MP means that the product group don’t have to change the product. The fact that some MPs do (and always custom field 6) sounds like there was a recommendation to use this but it has not been widely adopted. So getting the classes right in your initial MP is crucial to helping creating good views and reports.

    Getting the fields right to show in the view is also important. Look at this IBM state view for physical memory. Actually all the views in this node are the same.

    view-ibm-state-pysical-memory

    Bad view – you have no idea what any of these are relevant to unless you click on one to see the details. But as you can see from the properties it could have been a useful view out of the box if Path had been ticked. As it is you have to go into each view and tick it to make the view useful by showing the actual server name.

    view-ibm-state-pysical-memory-properties

    Bad view – the Path column is not ticked so it is not very useful until you do that.

    Another pet dislike I have is the fact that each time I create a new custom view I have to go in and personalise it with the fields that I want and groups. It would be much easier if I could cut and past that view and then just amend the target. The other issue I have is with creating a dashboard. Once you create it with the number of panes then you can not change that number. You need to create a new dashboard from scratch. I do hope that the next version does this. I may be surprised when I get R2 installed and find these things are fixed but I am not holding my breath yet. And if not then hopefully the next version will fix those.

    Note – This post is relevant to Operations Manager 2007 SP1 with current MPs at this date.

    I am going to start adding what version and if required the version of MP I am working with in order to make it clear as changes will probably make this obsolete (I hope).

    DNS MP Fix Works

    December 2, 2008

    Having posted a potential fix to the DNS disappearing servers problem (DNS MP 6.0.6278.27) I was looking for a chance to test it properly. I installed it in a customers pre production test environment on Tuesday 18th Nov. The servers duly disappeared on Saturday the 29th (11 days later) as can be see by the performance figures no longer being collected. I put in the fix MP and the servers reappeared and the counters started being collected again. Nice job Daniele.

    dns-response-time-stops

    Still no idea why it works as normal and then decides not to work.


    Follow

    Get every new post delivered to your Inbox.