Page 1
HP Insight Management WBEM Provider for
Windows Server 2003および Windows
Server 2008
通知の使用法ガイド
製品番号 482896-191
初版 2008 年3 月
Page 2
ご注意
© 2008 Hewlett-Packard Development Company, L.P.
本書の内容は、将来予告なしに変更されることがあります。HP 製品およびサービスに対する保証については、当該製品およびサービス
の保証規定書に記載されています。本書のいかなる内容も、新たな保証を追加するものではありません。本書の内容につきましては万
全を期しておりますが、本書中の技術的あるいは校正上の誤り、脱落に対して、責任を負いかねますのでご了承ください。
本書で取り扱っているコンピュータ ソフトウェアは秘密情報であり、その保有、使用、または複製には、HPから使用許諾を得る必要が
あります。FAR 12.211および12.212に従って、商業用コンピュータ ソフトウェア、コンピュータ ソフトウェア ドキュメンテーション、
および商業用製品の技術データ(Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial
Items)は、ベンダ標準の商業用使用許諾のもとで米国政府に使用許諾が付与されます。
Microsoftおよび Windowsは、 Microsoft Corporationの米国における登録商標です。 Windows Server 2003および Windows Server 2008
は、Microsoft Corporation の米国における商標です。
本製品は、日本国内で使用するための仕様になっており、日本国外で使用される場合は、仕様の変更を必要とすることがあります。
本書に掲載されている製品情報には、日本国内で販売されていないものも含まれている場合があります。
2008 年3 月
Page 3
目次
概要 ...................................................................................................................................................................... 4
イベントの概念の概要 ............................................................................................................................................ 5
通知 ...................................................................................................................................................................... 6
組み込み通知 ............................................................................................................................................................ 6
非組み込み通知 ......................................................................................................................................................... 8
HP による非組み込み通知クラスの拡張................................................................................................................... 9
通知階層内の共通プロパティ.................................................................................................................................... 11
クライアント アプリケーションの通知先登録の方法 ............................................................................................... 16
HP_AlertIndication の通知先登録................................................................................................................................. 16
一時的な通知先登録の例..................................................................................................................................... 16
永続的な通知先登録の例..................................................................................................................................... 18
カスタム通知先登録................................................................................................................................................. 19
例— プロパティ変化の監視.................................................................................................................................. 19
例— スレッショルドの監視.................................................................................................................................. 21
インスタンス作成または削除の監視..................................................................................................................... 25
追加情報.............................................................................................................................................................. 26
目次 3
Page 4
概要
この通知の使用法ガイドは、HP Insight Management Web-Based Enterprise Management (WBEM )Provider
(Insight Provider )の通知についての導入書です。このガイドでは、通知の概念を説明し、スクリプトの例を
示し、HP ProLiant のWMI (Windows
ンでのWMI 通知の優れた活用方法について詳しく説明します。また、このガイドでは、HP 固有の通知で定義
されるプロパティについても詳しく説明します。
®
Management Instrumentation)通知の実装によるカスタム ソリューショ
概要 4
Page 5
イベントの概念の概要
イベントとは、管理領域または管理領域を表すデータ モデルによって監視されるプロパティの、ある側面で
の変化のことです。たとえば、あるサービスを実装した管理ソフトウェアがこのサービスを監視している場合
に、そのサービスの動作状態が開始から停止に変化することなどがイベントです。また、監視対象のディスク
ドライブのヘルス状態が正常から故障に変化することなどもイベントの例です。状態の変化は、以下のように、
いくつかの側面について監視されます。
• 動作 開始から停止へ
• ヘルス - 正常から劣化へ
• 通信 - 接続から切断へ
• データ モデルの変化 — インスタンス作成、インスタンス削除など
図1
図1 は、イベントの概要を示しています。管理対象要素は、CPU 、ソフトウェア サービス、温度センサ、WMI
Instrumentation が監視している要素などを表します。この管理対象要素は、一般に、 CIM ( Common
Information Model)クラスのインスタンスとしてWMIレポジトリに格納されます。この管理対象要素の状態が
実際に変化したことが検出されると、プロバイダは通知のインスタンスを生成します。この通知は、WMI イ
ンフラストラクチャを介して、通知の送信先として登録されている管理アプリケーションに送信されます。
通知とは、管理領域または管理領域を監視する管理アプリケーションにとって重要なイベントをCIM ベースで
表現したものです。管理対象要素について多数の状態変化が発生しても、通知は、管理領域における状態変化
についてのみ生成されます。このため、通知は、実際のイベントのうちの一部(管理領域の管理ポリシーに
とって重要なもの)となります。
イベントの概念の概要 5
Page 6
通知
通知とは、イベント表現をCIM クラスのインスタンスとして形式化するもので、DMTF ( Distributed
Management Task Force)によって規定された概念です。インスツルメンテーション プロバイダまたは
CIMOM( CIM Object Manager)は、状態の変化を監視し、通知のインスタンスを生成して、管理アプリケー
ションに特定のイベントを通知するように設定されています。CIM は、CIM_Indication と呼ばれる通知を
表すために抽象クラスを定義します。通知とCIM_Indication はDMTF の概念であり、WMI ではこれらをイベ
ントと呼びます。このガイドでは、イベントは実際のイベントを指し、通知は、CIM におけるイベントの表現
を指します。
WMI では、通知は2 つのカテゴリに大別されます。組み込み通知と非組み込み通知です。
組み込み通知
WMIは、組み込みイベントを、データ モデルの任意の状態変化として定義します。変化には、次のものが含
まれます。
• クラス定義の作成、削除、または変更
• インスタンスの作成、削除、または変更
図2
図2 は、組み込みイベントの機能を示しています。この例では、HP_ComputerSystem (または任意のCIM ク
ラス)のインスタンスが作成されると、組み込みイベントが発生します。WMI CIMOM は、インスタンス作成
イベントを検出し、__InstanceCreationEvent 通知のインスタンスを生成して、この通知を通知先として
登録されたクライアントに送信します。クライアント登録は、このタイプのイベントが
__InstanceCreationEvent 通知のインスタンスをトリガするために必要です。HP_ComputerSystem のインスタ
ンスが作成されたときの通知先として登録されたクライアントがない場合、CIMOM は、イベントを検出せず、
__InstanceCreationEvent 通知を生成しません。この図は、プロパティ変化またはインスタンス変更に
よってトリガされるイベントも示しています。この例では、HP_ComputerSystemのOperationalStatus
プロパティのインスタンスが正常から劣化に変化します。クライアントがこのイベントの通知先として登録さ
れている場合、CIMOM は、__InstanceModificationEvent 通知のインスタンスを生成して、登録されて
いるクライアントに配信します。
通知 6
Page 7
ここで、クライアントが組み込みイベントを使用してスレッショルドを監視する方法について考えてみます。
クライアントは、__InstanceModificationEvent 通知の通知先として登録され、特定のプロパティの変化
(プロセッサ使用率など)を監視します。__InstanceModificationEvent 通知の各通知登録先はWMI
CIMOM によってポーリングされる必要があり、これがシステムのパフォーマンスに影響を与える可能性があ
ります。このため、クライアントは、__InstanceModificationEvent 通知の通知先登録または任意の組み
込みイベント通知先登録を使用してスレッショルドを監視する際に、管理対象システムへのパフォーマンス上
の影響を考慮する必要があります。
DMTFの仕様や文献では、WMI組み込みイベントはライフサイクル イベントと呼ばれていますが、これらは同
じ基本概念を表しています。ただし、通知クラスの階層は、DMTFライフサイクル通知とWMI組み込み通知で
は異なります。
図3
__IndicationRelated
__InstanceOperationEvent
TargetInstance:object
WMI
__Event
CIM_ClassIndication CIM_InstIndicati on
__ClassOperationEvent
TargetClass:object
CIM_ClassModification
PreviousClassDefinition
DMTF
CIM_Indication
IndicationIdentifier:string
CorrelatedIndications[]:string
IndicationTime:datetime
OtherSeverity:string
PerceivedSeverity:uint16
SourceInstance:string
SourceInstanceHost:string
SourceInstanceModelPath:string
CIM_InstModification
PreviousInstance:string
__InstanceCreationEvent
__InstanceModificationEvent
PreviousInstance:object
__InstanceDeletionEvent
__ClassCreationEvent
__ClassDeletionEvent
__ClassModificationEvent
PreviousClass:object
CIM_ClassDeletion
CIM_InstCreation
CIM_InstDeletion CIM_ClassCreation
階層におけるこの違いは、WMIが、WMIクラス階層に示される組み込みイベントに関する一連の通知を生成
することを意味します(図3を参照)。たとえば、CIMクラスが作成され、クライアントがそのイベントの通
知先に登録されている場合、DMTFで定義されるCIM_InstCreation クラス インスタンスの代わりに
__InstanceCreationEventのインスタンスが生成されます。クラス階層における違いは、DMTFライフサイクル
イベントと比較する場合、WMI組み込みイベントに関するクライアントの通知先登録の方法に影響します。
たとえば、基本システム(HP_ComputerSystem )を表すクラスのインスタンスにおける変化について通知先
を登録する場合、WMIクエリ文字列は次のようになります。
“SELECT * FROM __InstanceModificationEvent WHERE TargetInstance ISA
'HP_ComputerSystem'”
DMTF定義の通知階層に適合する CIMOMの対応するクエリは、次のようになります。
“SELECT * FROM CIM_InstModification WHERE TargetInstance ISA 'HP_ComputerSystem'”
通知 7
Page 8
非組み込み通知
非組み込み通知は、データ モデル内で発生する可能性のあるイベントを表します。通知の原因となるイベン
トに関連する条件や状態の変化は、プロバイダによって実装されるインスタンス内のクラス インスタンスま
たはプロパティとして取得されたり、表されたりします。たとえば、イベント プロバイダは、センサがCIM
クラス(CIM_Sensorなど)として実装されているかどうかに関係なく、センサ読み取り値が重大スレッショルド
を超えたことを検出すると通知を送信するように設定することができます。DMTFは、データ モデルの変化に組
み込まれないイベントの表現として、CIM_ProcessIndication とCIM_AlertIndication というスーパー
クラスを定義します。CIM_ProcessIndication は、CIM_Indication (同じくライフサイクル通知のスー
パークラス)から直接継承します。CIM_AlertIndication は、CIM_ProcessIndication から直接継承し
ます。図4に、DMTFが定義する非組み込み通知のクラス階層を示します。
図4
CIM_Indication
IndicationIdentifier:string
CorrelatedIndications[]:string
IndicationTime:datetime
OtherSeverity:string
PerceivedSeverity:uint16
CIM_ProcessIndication
CIM_AlertIndication
AlertingElementFormat:uint16
AlertingManagedElement:string
AlertType:uint16
Description:string
EventID:string
EventTime:datetime
OtherAlertingElementFormat:string
OtherAlertType:string
ProbableCause:uint16
ProbableCauseDescription:string
ProviderName:string
RecommendedActions[]:string
SystemCreationClassName:string
SystemName:string
Trending:uint16
図 5 に、非組み込み通知と組み込み通知の関係を示します。 HP_ComputerSystem の作成と
HP_ComputerSystemの OperationalStatusプロパティの変化の両方について、適切な組み込み通知が生
成されます(有効なクライアント通知先登録によって異なります)。この図では、OperationalStatus 状態
変化の意味を解釈し、通知の原因となる状態変化とイベントの詳細分析を表す非組み込みイベント
(CIM_AlertIndication のインスタンス)を生成する通知プロバイダも追加されています。この例では、
通知プロバイダは、状態変化が劣化/ 警告の重大度を表していると判断し、いくつかの推奨措置
(CIM_AlertIndication のプロパティに含まれる)を提示します。クライアントは、次のクエリ文字列を
使用して非組み込み通知の通知先に登録されます。
“select * from CIM_AlertIndication”
通知 8
Page 9
図5
HPによる非組み込み通知クラスの拡張
HP は、 HP 管理領域で検出された非組み込みイベントを説明する追加情報が含まれるように、
CIM_AlertIndication のDMTF CIM 定義を拡張しました。図 6 に、 HP による拡張のクラス階層と、階層の各
サブクラスで定義されるプロパティを示します。
通知 9
Page 10
図6
CIM_AlertIndication
AlertingElementFormat:uint16
AlertingManagedElement:string
AlertType:uint16
Description:string
EventID:string
EventTime:datetime
OtherAlertingElementFormat:string
OtherAlertType:string
ProbableCause:uint16
ProbableCauseDescription:string
ProviderName:string
RecommendedActions[]:string
SystemCreationClassName:string
SystemName:string
Trending:uint16
ActionURLDescriptions[]:string
ActionURLs[]:string
ActualEventThreshold:uint32
ActualEventTimeWindow:uint32
OtherEventSubCategory:string
VariableValues[]:string
VariableNames[]:string
ClusterWideEvent:boolean
VariableTypes[]:uint16
SystemProductID:string
EventCategory:uint32
OtherEventCategory:string
EventSubCategory:uint32
EventThreshold:uint32
SystemModel:string
EventTimeWindow:uint32
SystemSerialNumber:string
UserComment:string
InformationURL:string
NetworkAddresses[]:string
OSType:uint16
OSVersion:string
SystemGUID:string
ProviderVersion:string
RelatedIndications[]:string
RootCauseIndications[]:string
SystemFirmwareVersion[]:string
Query:string
Summary:string
HP_AlertIndication
HP_HardwareIndication
HWLogicalLocation[]:string
HWManufacturer:string
HWPartNumber:string
HWPhysicalLocation:string
HWSerialNumber[]:string
HWFirmwareVersion[]:string
HP_DeviceIndication
DeviceControllerLogicalLocation[]:string
DeviceModel:string
DevicePermanentName:string
DevicePermanentNameFormat:uint16
WMIでは、通知およびイベントは、名前空間階層の特定の場所を生成元とする必要があります。次の図は、
root\HPQ というWMI 名前空間における HP 拡張クラスを含む、完全な非組み込み通知階層を示しています。
通知 10
Page 11
図7
__SystemClass
__IndicationRelated
__Event
CIM_Indication
__ExtrinsicEvent
CIM_ProcessIndication
CIM_AlertIndication
HP_AlertIndication
HP_HardwareIndication
HP_DeviceIndication
通知階層内の共通プロパティ
これらのプロパティには、HPが拡張したプロパティおよびクラス(必須プロパティの場合でもオプション プ
ロパティの場合でも)と、プロパティの目的の説明が含まれます。また、次の表で、HP Insight Management
WBEM Providerによる通知の実装について説明します。特定のIndicationIdentifierの各プロパティの実装につい
て詳しくは、Insight Management WBEM Providerに付属のデータ シートを参照してください。
表1
通知の実装
プロパティ名 必須/オプション 目的
CIM_Indication
通知 11
Page 12
表1 通知の実装
プロパティ名 必須/オプション 目的
IndicationIdentifier
CorrelatedIndications
PerceivedSeverity
OtherSeverity
IndicationTime
CIM_AlertIndication
Description
必須
• 通知インスタンスの識別に使用さ
れる
• すべてのInsight Management WMI プ
ロバイダはGUID を備える
• 通知の特定のインスタンスを識別
する
オプション
必須
実装されない
• Insight Management WMI通知プロ
バイダは、通知インスタンスによっ
てレポートされる条件の重大度を通
知する
• 実装について詳しくは、データ
シートを参照
オプション
必須 通知インスタンスが作成された時間
必須
PerceivedSeverity に含まれる値がother
(1 )の場合、このプロパティに通知の
重大度を説明する文字列が含まれる
(必ずしも通知の原因となるイベント
が発生した時間ではない)
• Summaryプロパティよりも詳しい通
知に関する説明が含まれる
• 実装について詳しくはデータ シー
トを参照
AlertingManagedElement
AlertingElementFormat = 2
OtherAlertingElementFormat
AlertType
OtherAlertType
ProbableCause
オプション
• CIM_ManagedElementの原因とな
るインスタンス、または対応/関
連するいずれかのサブクラスが存
在する場合、CIM オブジェクト パ
スが通知とともに送信される
• オブジェクト タイプについて詳し
くは、データ シートを参照(該当
オプション
オプション
必須
する場合)
通知がAlertingManagedElement の値を送
信する場合、値はCIMObjectPath (2 )
実装されない
• 通知の第1 次分類として列挙値が使
用される
• 列挙値について詳しくは、CIM
_AlertIndicationの定義を参照
オプション
必須 通知の原因を示す列挙値が含まれる
AlertType 値に含まれる列挙値がother
(1 )の場合、このプロパティにプライ
マリ アラート タイプを説明する文字列
が含まれる
列挙値について詳しくは、
CIM_AlertIndication を参照
通知 12
Page 13
表1 通知の実装
プロパティ名 必須/オプション 目的
ProbableCauseDescription
Trending
RecommendedActions
EventID
EventTime
SystemCreationClassName
SystemName
必須
オプション
必須
必須
オプション
必須
必須
通知の原因に関する追加情報を提供
実装されない
• 通知でレポートされる問題の解決手
順を含む一連の文字列
• 通常、PerceivedSeverityが
Information(2)の場合は空白
ProviderNameプロパティに示されるプ
ロバイダによって生成される通知のク
ラスを一意に識別
• プロバイダが通知の原因となるイベ
ントの時間を判別でき、それが
IndicationTime と異なる場合、この値
に通知の原因となるイベントの時間
が含まれる
• ほとんどのプロバイダでは実行され
ない
• 通知を生成した通知プロバイダを含
むシステムのCIM クラス
• ほとんどの場合、
HP_ComputerSystemまたは
HP_WinComputerSystem
• 通知を生成した通知プロバイダを含
むシステムのシステム名
• HP_ComputerSystem.Nameプロ
パティと一致する
ProviderName
HP_AlertIndication
RelatedIndications
RootCauseIndications
Summary
EventCategory
OtherEventCategory
EventSubCategory
必須
• 特定の通知を生成して送信した、管
理対象システムで動作するプロバイ
ダの名前が含まれる
• EventIDとともに、通知のクラスを
識別
オプション
オプション
必須 通知に関する簡単なサマリ メッセージ
必須
オプション
オプション
実装されない
実装されない
が含まれる
AlertType プロパティで定義されるもの
よりも詳しいカテゴリ化の列挙値が含
まれる
列挙値について詳しくは、
HP_AlertIndication クラスの定義を
参照
EventCatagoryに含まれる値がother(1)
の場合、このプロパティにイベント カテ
ゴリを説明する文字列が含まれる
通知のサブカテゴリの列挙値が含まれる
通知 13
Page 14
表1 通知の実装
プロパティ名 必須/オプション 目的
OtherEventSubCategory
EventThreshold
EventTimeWindow
ActualEventTimeWindow
Query
ClusterWideEvent
ProviderVersion
InformationURL
OSType
OSVersion
NetworkAddresss
SystemFirmwareVersion
オプション
オプション
オプション
オプション
オプション
必須
必須 この通知を生成するプロバイダのバー
オプション オプションで、通知に関連する追加情
必須 このプロパティの説明については、
必須 このプロパティの説明については、
必須 このプロパティの説明については、
必須 このプロパティの説明については、
EventSubCategory に含まれる値がother
(1 )の場合、このプロパティにイベン
ト カテゴリを説明する文字列が含まれる
実装されない
実装されない
実装されない
実装されない
常にfalse に設定される
ジョンが含まれる
報を含むURL を示す
HP_AlertIndicationを参照
HP_AlertIndicationを参照
HP_AlertIndicationを参照
HP_AlertIndicationを参照
SystemSerialNumber
SystemModel
SystemGUID
SystemProductID
UserComment
VariableNames
VariableTypes
VariableValues
BladeBay
BladeName
EnclosureName
必須 このプロパティの説明については、
HP_AlertIndicationを参照
必須 このプロパティの説明については、
HP_AlertIndicationを参照
必須 このプロパティの説明については、
HP_AlertIndicationを参照
必須 このプロパティの説明については、
HP_AlertIndicationを参照
オプション
オプション このプロパティの説明については、
オプション このプロパティの説明については、
オプション このプロパティの説明については、
オプション ブレード ベイ番号(サーバ ブレード
オプション ブレード ベイ名(サーバ ブレード シ
オプション ブレード エンクロージャ名(サーバ
実装されない
HP_AlertIndicationを参照
HP_AlertIndicationを参照
HP_AlertIndicationを参照
システム専用)
ステム専用)
ブレード システム専用)
RackName
オプション ラック名(サーバ ブレード システム
専用)
通知 14
Page 15
表1 通知の実装
プロパティ名 必須/オプション 目的
RackUID
ImpactedDomain
HP_HardwareIndication
HWPartNumber
HWFirmwareVersion
HWManufacturer
HWLogicalLocation
HWPhysicalLocation
HWSerialNumber
HP_DeviceIndication — —
DeviceModel
オプション
オプション 通知の影響する領域(ローカル システ
オプション このプロパティの説明については、
オプション このプロパティの説明については、
オプション このプロパティの説明については、
オプション このプロパティの説明については、
オプション このプロパティの説明については、
オプション このプロパティの説明については、
オプション このプロパティの説明については、
ラック固有ID(サーバ ブレード システム
専用)
ム、ブレード エンクロージャなど)
HP_HardwareIndicationを参照
HP_HardwareIndicationを参照
HP_HardwareIndicationを参照
HP_HardwareIndicationを参照
HP_HardwareIndicationを参照
HP_HardwareIndicationを参照
HP_DeviceIndicationを参照
DeviceControllerLogicalLocation
DevicePermanentName
DevicePermanentNameFormat
OtherPermanentNameFormat
オプション このプロパティの説明については、
HP_DeviceIndicationを参照
オプション このプロパティの説明については、
HP_DeviceIndicationを参照
オプション このプロパティの説明については、
HP_DeviceIndicationを参照
オプション このプロパティの説明については、
HP_DeviceIndicationを参照
通知 15
Page 16
クライアント アプリケーションの通知先登録の
方法
この項では、Insight Providerによって生成される通知の通知先として、クライアント アプリケーションを登録
する方法の例を示します。通知先を登録すると、通知が生成されたときに通知を受信し、応答できるようにな
ります。
必要な通知先登録の作成方法を判断するために、次の質問に答えてください。
• どのようなイベントおよびその詳細を知る必要がありますか。
• 必要なイベントのソース アドレスはどこですか。
• どの配信先アドレスに、どの方法で通知しますか。
• どのようにして通知先登録を解除しますか。
HP_AlertIndicationの通知先登録
root\HPQ 名前空間のすべての非組み込み通知は、HP_AlertIndication のインスタンスおよびそのサブク
ラス(HP_HardwareIndication およびHP_DeviceIndication )のいずれかによって構成される場合と、
その両方で構成される場合があります。HP_AlertIndication スーパークラスへの単一の通知先登録により、
Insight Provider が監視するすべてのイベントの通知を受信することができます。
一時的な通知先登録の例
次のVBScript の例は、通知先登録の全体を示します(Microsoft ®社のWeb サイトhttp://msdn2.
microsoft.com/en-us/library/aa393013.aspxにあるスクリプトに変更を加えています)。
' (sample1.vbs) HP_AlertIndication temporary subscription
strComputer = "."
Sub SINK_OnObjectReady(objObject, objAsyncContext)
WScript.Echo (objObject.Description & ", Severity = " & _
objObject.PerceivedSeverity)
End Sub
Set objWMIServices = GetObject( _
"WinMgmts:{impersonationLevel=impersonate, " _
& "authenticationLevel=pktPrivacy }!\\" _
& strComputer & "\root\HPQ")
' Create the event sink object that receives the events
Set sink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
クライアント アプリケーションの通知先登録の方法 16
Page 17
' Set up the event selection.SINK_OnObjectReady is called when
' a HP_AlertIndication event occurs
objWMIServices.ExecNotificationQueryAsync sink, _
"SELECT * FROM HP_AlertIndication"
WScript.Echo "Waiting for events"
次の項では、スクリプトの例と前述の質問に対する答えについて詳しく説明します。
どのようなイベントおよびその詳細を知る必要がありますか
WQL クエリ文は、イベントと詳細を指定します。前述のスクリプトで使用されているWQL クエリは、次のと
おりです。
SELECT *
FROM HP_AlertIndication
HP_AlertIndicationは、通知クラスです。 root\HPQ名前空間のすべての通知は HP_AlertIndication
のインスタンスであるため、前述のスクリプトは、この名前空間のすべての非組み込み通知の通知先登録を行
います。
WQL クエリについて詳しくは、Microsoft 社のWeb サイトhttp://msdn.microsoft.com/library/default.
asp?url=/library/en-us/wmisdk/wmi/querying_with_wql.aspにある、WQLによるクエリに関するMicrosoft社の
オンライン マニュアルを参照してください。.
通知のソースはどこですか
この例では、ソース アドレス文字列は、GetObject 呼び出しでmoniker 文字列を渡すことによって設定されます。
moniker 文字列について詳しくは、 Microsoft 社の Web サイト
library/default.asp?url=/library/en-us/wmisdk/wmi/constructing_a_moniker_string.asp にある、『Constructing a
Moniker String』を参照してください。.
次の文字列は、 moniker文字列の例です(必要な部分のみを示しています)。
winmgmts:{impersonationLevel=impersonate,
authenticationLevel=pktPrivacy}!\\.\root\HPQ
• プレフィックスは、「winmgmts :」です。これは、WMIを参照するためです。
• セキュリティ設定(カッコ内)は、デフォルトのセキュリティ設定に依存せずに、通信のセキュリティ
レベルを制御します。これらの設定は、イベント配信のセキュリティおよび暗号化のみを制御します。
すべての追加イベント処理について、必ず、セキュリティ保護を実施してください。WMI クライアント
セキュリティについて詳しくは、Microsoft 社のWeb サイト
default.asp?url=/library/en-us/wmisdk/wmi/setting_client_application_process
_security.aspにある、『Setting Client Application Process Security』を参照してください。
• 通知は、サーバごとに生成されます。アドレス内の「.」は、ローカル システムがソースであることを
示します。「.」を、Insight Providerがインストールされているサーバのコンピュータ名またはDNS名に
置き換えることができます。
• この後に名前空間「root\HPQ 」が続きます。
http://msdn.microsoft.com/
http://msdn.microsoft.com/library/
通知先登録のソースの指定方法に関係なく、適切な名前空間(root\HPQ )とサーバを選択する必要があります。
クライアント アプリケーションの通知先登録の方法 17
Page 18
どの配信先アドレスに、どの方法で通知しますか
スクリプト ホスト(スクリプトを実行するマシン上に存在)が通知クエリを実行する場合、配信先アドレスはス
クリプト ホストとして指定されます。前述の例では、通知方法は、非同期関数呼び出しです。通知がスクリプト
ホストに配信される場合、sink関数が呼び出され、通知オブジェクトが与えられます。登録先通知には、配信先ア
ドレスのコンピュータにInsight Providerがインストールされている必要はありません。
どのようにして通知先登録を解除しますか
通知先登録は一時的なものであり、スクリプトが完了すると通知先登録は解除されます。この例では、
[Waiting for Events]ダイアログ ボックスを閉じると登録が解除されます。
永続的な通知先登録の例
永続的な通知先登録を利用することもできます。WMIでは、永続的に登録するには、__EventFilter 、
__EventConsumer 、および__FilterToConsumerBinding のインスタンスを定義する必要があります。また、
標準コンシューマ スクリプトを使用するか、独自のコンシューマ スクリプトを作成する必要があります。
次の.mofファイルの例では、標準コンシューマ スクリプトを使用して永続的な通知先登録が定義されています。
// (sample2.mof) HP_AlertIndication permanent subscription
#pragma namespace ("\\\\.\\root\\subscription")
instance of __EventFilter as $Filter
{
Name = "HP_AlertFilter";
QueryLanguage = "WQL";
Query = "Select * from HP_AlertIndication";
EventNamespace = "root\\HPQ";
};
instance of LogFileEventConsumer as $Consumer
{
Name = "HP_LogFileEventConsumer";
Filename = "c:\\HP_Alert.log";
IsUnicode = FALSE;
Text = "%IndicationTime% "
"[Severity %PerceivedSeverity%] "
"Alert from %AlertingManagedElement% :%Summary% ; "
"Description :%Description% ; "
"RecommendedActions :%RecommendedActions% ; "
"IndicationID :%IndicationIdentifier% ;";
};
// Bind the filter to the consumer
instance of __FilterToConsumerBinding
クライアント アプリケーションの通知先登録の方法 18
Page 19
{
Filter = $Filter;
Consumer = $Consumer;
DeliverSynchronously=FALSE;
};
このmofファイルを、mofcomp.exeによってコンパイルする場合は、すべてのHP_AlertIndication イベントにつ
いてカスタム フォーマット ログ エントリを記録する必要があります(詳しくは、Microsoft社のWebサイト
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/mofcomp.aspを参照してください)。
これは永続的な通知先登録であるため、通知先登録を定義するインスタンスがroot\subscription 名前区間
から削除されるまで通知先登録が維持されます。
永続的なイベント通知先登録について詳しくは、Microsoft 社のWeb サイト
library/default.asp?url=/library/en-us/wmisdk/wmi/receiving_events_at_all_times.aspにある『Receiving Events
at All Times』を参照してください。
標準コンシューマについて詳しくは、 Microsoft 社の Web サイト http://msdn.microsoft.com/library/
default.asp?url=/library/en-us/wmisdk/wmi/monitoring_and_responding_to_events_with_
standard_consumers.aspにある『Monitoring and Responding to Events with Standard Consumers』を参照して
ください。
カスタム通知先登録
一連の既存の非組み込み通知がニーズに適合しない場合は、カスタム通知先登録を作成して、管理データの変
化を監視することができます。カスタム通知先登録により、HP_AlertIndicationのインスタンスのクエリを実行
する代わりに、標準WMI組み込みイベント クラスのクエリを実行します。
これらの組み込み通知クラスのクエリを実行する場合は、ポーリングによって管理データの特定の変化を監視
するためにWMI に情報を提供します。したがって、ポーリングの間隔と特定の管理データを含む管理対象要
素クラスを指定する必要があります。
root\HPQ 名前空間内でのWMIの管理対象要素インスタンスの監視に使用できる、次のような 4つの組み込み
イベント クラスが存在します。
__InstanceCreationEvent
__InstanceDeletionEvent
__InstanceModificationEvent
__MethodInvocationEvent
http://msdn.microsoft.com/
これらのクラスには、TargetInstance プロパティがあります。このプロパティには、単一の管理対象要素
インスタンスが格納されます。このインスタンスは、最後にポーリングされた管理対象要素のインスタンスです。
__InstanceModificationEvent通知には、最後から2 番目にポーリングされたイベントが格納される
PreviousInstanceプロパティもあります。
WMI の他の組み込み通知クラスにより、名前空間またはクラス定義の変化を監視することができます。
例— プロパティ変化の監視
一般的な変化は、プロパティの値の変化です。たとえば、HP_ComputerSystem.PrimaryOwnerName がい
つ変化したか知りたい場合があります。このプロパティは書き込み可能であるため、この通知が発生するタイ
ミングを制御することができます。
次に、クエリ文の例を示します。
SELECT *
FROM __InstanceModificationEvent
クライアント アプリケーションの通知先登録の方法 19
Page 20
WITHIN 10
WHERE TargetInstance ISA 'HP_ComputerSystem'
AND TargetInstance.PrimaryOwnerName != PreviousInstance.PrimaryOwnerName
• WMIによって提供される「__InstanceModificationEvent 」という組み込みイベント クラスを使
用すると、カスタム通知先登録を簡単に作成できます。これにより、管理対象要素のインスタンスのプ
ロパティを変化させます。
• 「WITHIN 10 」は、変化の発生を 10秒以内に検出するように指定します。この通知登録により、 WMIは、
TargetInstanceのプロバイダを 10秒ごとにポーリングします。選択するポーリング間隔が短すぎると、
必要以上にクエリが実行されます。ただし、間隔が長いと、通知が遅れます。
• 「TargetInstance ISA 'HP_ComputerSystem' 」は、どの管理対象要素クラスに特定の管理データが
含まれているかを指定します。
• 「TargetInstance.PrimaryOwnerName != PreviousInstance.PrimaryOwnerName 」は、要
求された条件を満たすようにプロパティが変化したことを示します。
例:
' (sample3.vbs) Monitoring property changes
strComputer = "."
Sub SINK_OnObjectReady(objInstMod, objAsyncContext)
' Handle the Event.
WScript.Echo ("PrimaryOwnerName for " & _
objInstMod.TargetInstance.Name & _
" has changed:" & vbcrlf & vbcrlf & _
"""" & objInstMod.PreviousInstance.PrimaryOwnerName & _
""" value is replaced with value """ & _
objInstMod.TargetInstance.PrimaryOwnerName & """")
End Sub
Set objWMIServices = GetObject( _
"WinMgmts:{impersonationLevel=impersonate, " _
& "authenticationLevel=pktPrivacy }!\\" _
& strComputer & "\root\HPQ")
Set sink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
objWMIServices.ExecNotificationQueryAsync sink, _
"SELECT * FROM __InstanceModificationEvent " & _
"WITHIN 10 WHERE TargetInstance ISA 'HP_ComputerSystem' " & _
"AND TargetInstance.PrimaryOwnerName " & _
"!= PreviousInstance.PrimaryOwnerName"
クライアント アプリケーションの通知先登録の方法 20
Page 21
WScript.Echo _
"Waiting for PrimaryOwnerName to change..."
PrimaryOwnerNameの値の変化を監視するようにスクリプトを変更してください。
次に、スクリプトの例を示します。
' (sample4.vbs) Changing a writeable property
On Error Resume Next
strComputer = "."
Set objWMIServices = GetObject( _
"WinMgmts:{impersonationLevel=impersonate, " _
& "authenticationLevel=pktPrivacy }!\\" _
& strComputer & "\root\HPQ")
Set colCSlist = objWMIServices.ExecQuery ("SELECT * FROM HP_ComputerSystem")
for each objCS in colCSlist
objCS.PrimaryOwnerName = InputBox( _
objCS.Name & vbcrlf & _
" What is the new PrimaryOwnerName? ", _
"Change PrimaryOwnerName", _
objCS.PrimaryOwnerName)
Set tmp = objCS.Put_(wbemChangeFlagUpdateOnly, NULL)
Wscript.echo tmp.Path
next
前述のスクリプトを開始したら、PrimaryOwnerName の新しい値を入力します。この値がポーリング間隔
(10 秒)内で検出されると、通知先登録スクリプトにより、変化が通知されます。
例— スレッショルドの監視
別のカスタム通知先登録に、スレッショルドの監視があります。この通知先登録により、管理データで提供さ
れる数値が一定の限界を超えると通知されます。
単純なスレッショルド
温度読み取り値が35°C を超えたときに通知を受信したい場合のクエリ文の例は、次のようになります。
SELECT *
FROM __InstanceModificationEvent
クライアント アプリケーションの通知先登録の方法 21
Page 22
WITHIN 10
WHERE TargetInstance ISA 'HP_NumericSensor'
AND TargetInstance.CurrentReading > 35
この文は、温度センサの読み取り値が10 秒以内に35°C を超えると通知し、温度が35°C 未満に下がるか、通知
先登録がキャンセルされるまで、温度読み取り値を通知しつづけます。このスクリプトを終了するには、
Ctrl+C キーを押します。
' (sample5.vbs) Monitoring a threshold
' Force use of a command shell window
Set objShell = CreateObject("Wscript.Shell")
If Instr(1, WScript.FullName, "CScript", vbTextCompare) = 0 Then
objShell.Run "cscript """ & WScript.ScriptFullName & """", 1, False
WScript.Quit
End If
' set source server and threshold value
strComputer = "."
strThreshold = "35"
' Connect to the server's root\HPQ namespace
Set objWMIService = GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\HPQ")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE " & _
"TargetInstance ISA 'HP_NumericSensor'" & _
" AND TargetInstance.CurrentReading >= " & strThreshold)
Wscript.Echo "Waiting for Temperature to exceed " & _
strThreshold & " degrees"
i = TRUE
Do While i = TRUE
'wait for and get the next event
Set objReceivedEvent = objEvents.NextEvent
'report an event
Wscript.Echo objReceivedEvent.TargetInstance.Name & _
" Threshold exceeded: " & _
objReceivedEvent.TargetInstance.CurrentReading
クライアント アプリケーションの通知先登録の方法 22
Page 23
Loop
カスタム温度スレッショルドを低く設定すると、スクリプトの動作を簡単に確認できます。
クエリベース検出による複合スレッショルド
同じ通知先登録をさまざまな方法で実行することができます。スレッショルドを超過したときにだけ通知する、
より詳しいクエリを作成することができます。
SELECT *
FROM __InstanceModificationEvent
WITHIN 10
WHERE TargetInstance ISA 'HP_NumericSensor'
AND (
(TargetInstance.CurrentReading > 38
AND PreviousInstance.CurrentReading <= 38)
OR
(PreviousInstance.CurrentReading > 38
AND TargetInstance.CurrentReading <= 38))
このイベントは、スレッショルドを超過したときに開始されます。
次に、スクリプトの例を示します。
' (sample6.vbs) Monitoring a threshold (complex query)
strComputer = "."
strThreshold = "38"
strDeg = "°C"
Sub SINK_OnObjectReady(objObject, objAsyncContext)
'report an event
Wscript.Echo _
objObject.TargetInstance.Name & " Reading " & vbcrlf & _
"change from " & _
objObject.PreviousInstance.CurrentReading & strDeg & _
" to " & objObject.TargetInstance.CurrentReading & strDeg & _
vbcrlf & vbcrlf & _
"(Threshold = " & strThreshold & strDeg & ")"
End Sub
Set objWMIServices = GetObject( _
"WinMgmts:{impersonationLevel=impersonate, " _
& "authenticationLevel=pktPrivacy }!\\" _
& strComputer & "\root\HPQ")
' Create the event sink object that receives the events
クライアント アプリケーションの通知先登録の方法 23
Page 24
Set sink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
' Set up the event selection.SINK_OnObjectReady is called when
' a HP_AlertIndication event occurs
objWMIServices.ExecNotificationQueryAsync sink, _
"SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE " & _
"TargetInstance ISA 'HP_NumericSensor'" & _
" AND ((TargetInstance.CurrentReading > " & strThreshold & _
" AND PreviousInstance.CurrentReading <= " & strThreshold & ")" & _
" OR " & _
" (PreviousInstance.CurrentReading > " & strThreshold & _
" AND TargetInstance.CurrentReading <= " & strThreshold & "))"
Wscript.Echo _
"Waiting for any temperature reading not above " & _
strThreshold & strDeg & " to go above " & _
strThreshold & strDeg & " or vice versa."
このスクリプトの動作を確認するには、strThreshold 変数をいずれかのセンサの現在の読み取り値と近い値
に変更します。
コンシューマベース検出による複合スレッショルド
WQL クエリの使用だけでは正確な条件を定義できない場合があります。温度センサは、ファン回転速度の増
加やシステムのシャットダウンなどの操作のタイミングを決定する重要なスレッショルドを持ちます。たとえ
ば、いずれかのセンサの温度読み取り値と重要なスレッショルドとの差が7°C 未満になったときに通知を受信
したい場合は、次のクエリを使用することができます。
SELECT *
FROM __InstanceModificationEvent
WITHIN 10
WHERE TargetInstance ISA 'HP_NumericSensor'
AND TargetInstance.CurrentReading + 7 >
TargetInstance.UpperThresholdCritical
クエリを実行すると、「Unparseable Query 」というエラーが表示されます。WQLは、プロパティでの数
値計算を処理できません。このエラーを回避するには、コンシューマ スクリプトで正確な条件に一致するよ
うに処理することで、プロパティの変化に焦点を合わせることができます。
1. スレッショルド クエリをプロパティ変化クエリに置き換えます。
SELECT *
FROM __InstanceModificationEvent
WITHIN 10
WHERE TargetInstance ISA 'HP_NumericSensor'
AND TargetInstance.CurrentReading != PreviousInstance.CurrentReading
クエリは、条件をチェックしません。
クライアント アプリケーションの通知先登録の方法 24
Page 25
TargetInstance.CurrentReading + 7 > TargetInstance.UpperThresholdCritical
2. イベントを処理する前にこの条件をチェックします。
インスタンス作成または削除の監視
一部の管理対象要素は、動的な寿命を持ちます(通常、システム内の管理対象要素の実際の存在に対応します)。
ディスク ドライブが取り外されたときに通知を受信したい場合のクエリ文の例は、次のようになります。
SELECT *
FROM __InstanceDeletionEvent
WITHIN 30
WHERE TargetInstance ISA 'CIM_DiskDrive'
ディスク ドライブが取り付けられたときに通知を受信したい場合のクエリ文の例は、次のようになります。
SELECT *
FROM __InstanceCreationEvent
WITHIN 30
WHERE TargetInstance ISA 'CIM DiskDrive'
クライアント アプリケーションの通知先登録の方法 25
Page 26
追加情報
以下のWeb サイトで、追加の情報が提供されています。
• Microsoft 社のWMI リファレンス:
us/wmisdk/wmi/wmi_reference.asp
• DMTF DSP0107 – CIMイベント モデルの White Paper :
CIM/DSP0107.pdf
• DMTFの Webサイト:
• moniker文字列の構築:
constructing_a_moniker_string.asp
• クライアント アプリケーション プロセス セキュリティの設定:
library/default.asp?url=/library/en-us/wmisdk/wmi/setting_client_application_process_security.asp
• WMI イベントの受信:
wmi/receiving_a_wmi_event.asp
• イベントの常時受信:
wmi/receiving_events_at_all_times.asp
• 標準コンシューマによるイベントの監視および応答:
asp?url=/library/en-us/wmisdk/wmi/monitoring_and_responding_to_events_with_standard_consumers.asp
• mofcomp:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
http://www.dmtf.org/standards/documents/
http://www.dmtf.org/home
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/
http://msdn.microsoft.com/
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/
http://msdn.microsoft.com/library/default.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/mofcomp.asp
追加情報 26