Стандартное начало. Открываем журнал событий Operations Manger на серверах и видим много красных событий, так или иначе связанных с мониторингом серверов DHCP.

Это всё – попытки открыть несуществующие журналы в папке журналов событий DHCP Server. Вот SCOM пытался открыть журнал “Microsoft-Windows-Dhcp-Server/Operational”:

А вот это была неудачная попытка прочитать события из журнала “Microsoft-Windows-Dhcp-Server/FilterNotifications”:

И ещё ворох аналогичных событий. Неудачи SCOM’а легко объяснимы. Активность сия происходит действительно на сервере DHCP, но операционка там Windows Server 2003,  а в ней ещё не было папок в журналах событий. То есть путей вида “Microsoft-Windows-Dhcp-Server/что-то” просто не существует. Более того, в Windows Server 2003 вообще не было выделенного журнала событий DHCP, все события, относящиеся к этой службе попадали в журнал System. Также такие ошибки возникают на Windows Server 2008, там папки в журналах событий уже были, но выделенных журналов для DHCP ещё не было. Таких ошибок нет только на Windows 2008R2, вот там уже такие журналы есть.

Копаем дальше, видим кучу жёлтых событий. Они – о невозможности прочитать данные из счётчиков производительности:

В основном речь идёт о сервисе DHCP, относящемся к IPv6.

Ещё пример.

 Но иногда попадаются и другие счётчики:

Таких счётчиков и правда нет на Windows Server 2003.

На Windows Server 2008 тоже возникают такие ошибки. Проверяем, что там со счётчиками. Счётчиков “DHCP Server/Offer Queue Length”, “DHCP Server/Denied due to nonmatch”, и “DHCP Server/OfferQueueLength” просто нет, как и в случае с Windows Server 2003. А вот счётчики, связанные с DHCPv6 в наличии. Ошибка тут кроется в названии объекта. На Windows Server 2008 R2 и в пакете управления счётчики имеют вид “DHCP Server v6/Active Queue Length”:

А на Windows Server 2008 они имеют вид “DHCPV6 Server/Active Queue Length”:

Разница в написании не велика, но для SCOM она является критической. На Windows Server 2008 он найти нужные счётчики не может, из-за этого появляются ошибки.

На Windows Server 2008R2 всё в порядке, ошибок нет.

В общем, проблема локализована, она возникает на серверах с операционых системах Windows Server 2003 и Windows Server 2008 и связана с мониторингом DHCP. Давайте разбираться, какой пакет управления отвечает за мониторинг DHCP на Windows Server 2003 и 2008. По всему выходит, что вот этот: “Microsoft.Windows.2008R2.DHCP.Server”.

Остальные явно отвечают за Windows Server 2012 и Windows Server 2012 R2. К тому же в поддерживаемых операционках у подозреваемого указаны Windows Server 2003 и 2008: Вот список серверов, обнаруженных этим пакетом управления.

Странный список, на самом деле. В нём мы видим серверы DHCP не только с Windows Server 2003, 2008 и 2008R2, но и серверы Windows Server 2012/2012 R2, хотя их там совершенно точно не должно быть. Серверы эти – с красным статусом, хотя в нативном пакете управления для DHCP 2012/2012 R2 эти серверы зелёные.

Резюмируем. Имеют место как минимум 4 проблемы в пакете управления “Microsoft.Windows.2008R2.DHCP.Server”:

  1. он дискаверит DHCP на серверах Windows 2012/2012R2, чего ему не следовало бы делать, так как судя по всему, корректно мониторить их он не умеет, к тому же для них есть отдельный пакет управления.
  2. он пытается открывать несуществующие на Windows Server 2003 и Windows Server 2008 журналы событий,
  3. он пытается обращаться к несуществующим на Windows Server 2003 и Windows Server 2008 счётчикам производительности DHCP,
  4. он пытается обращаться к счётчикам производительности DHCP на Windows Server 2008 по неправильному пути.

Попробуем разобраться с причинами этих проблем. Для начала вскроем пакет управления. Мы будем работать в старой xml-схеме, чтобы пакет управления был работоспособен в старых версиях SCOM, включая версию 2007, поэтому, до самого последнего шага никакого экспорта из SCOM2012.

Если у нас SCOM2007 или SCOM2007R2, то из консоли Operations Management Shell нужно выполнить команду:

Если у нас SCOM2012 или 2012R2, то копируем дистрибутев пакета управления – файл Microsoft.Windows.2008R2.DHCP.Server.mp в директорию c:\Temp и из консоли Operations Management Shell выполняем команду:

В папке c:\temp (её нужно предварительно создать) у нас должен появиться файл Microsoft.Windows.2008R2.DHCP.Server.xml. Откроем его в любом редакторе с подсветкой синтаксиса и посмотрим, из чего он сделан.

Первое, что удивляет: в пакете управления всего лишь 1 (один) дискавер. Он срабатывает на компьютерах с любой серверной операционной системой Windows, проверяет, есть ли там служба DHCPServer и равно ли её свойство Start значениям Auto или Manual. Если да, то пакет управления создаёт инстанс класса Microsoft.Windows.2008R2.DHCP.Server.Role и дальше на этом инстансе будут отрабатывать все правила и мониторы.

Что из этого следует? А вот что:

  1. дискавярятся вообще все серверы со службой DHCP, независимо от версии Windows Server, из-за этого у нас обнаруживаются в том числе и Windows Server 2012/2012R2,
  2. в пакете управления нет отдельных правил и мониторов для разных операционных систем, все правила и мониторы отрабатывают на всех серверах DHCP, поэтому у нас  и лезут ошибки в логах.

Теперь, когда мы разобрались с причинами проблем, мы понимаем, что нужно сделать:

  1. запретить пакету управления дискаверить DHCP на Windows Server 2012/2012R2, оставим ему только 2003/2008/2008R2,
  2. сделать так, чтобы правила и мониторы, обращающиеся к журналам “Microsoft-Windows-Dhcp-Server/FilterNotifications” и “Microsoft-Windows-Dhcp-Server/Operational”, не отрабатывали на операционных системах Windows Server 2003 и Windows Server 2008,
  3. сделать так, чтобы правила и мониторы, обращающиеся к уникальным для Windows Server 2008/2008R2 счётчикам производительности, не отрабатывали на операционной системе Windows Server 2003, выяснить также, каких счётчиков нет на Windows Server 2008 и перенацелить соответствующие правила и мониторы исключительно на Windows Server 2008R2.
  4. как-то исправить пути к счётчикам на Windows Server 2008, чтобы правила и мониторы на этой ОС отрабатывали корректно.