MySQL Notifier は、Windows Management Instrumentation (WMI) を使用して、Windows XP 以降を実行しているリモートコンピュータのサービスの管理とモニターを行います。このガイドでは、その仕組み、およびシステムをセットアップしてリモート MySQL インスタンスをモニターする方法を説明します。
リモートモニタリングは MySQL Notifier 1.1.0 以降利用可能です。
WMI を構成するためには、ベースとなる Distributed Component Object Model (DCOM) アーキテクチャーが WMI の作業を行なっていることを理解することが重要です。具体的には、MySQL Notifier は、リモート Microsoft Windows ホストの非同期通知クエリーを .NET イベントとして使用しています。これらのイベントは、MySQL Notifier を実行しているコンピュータに非同期コールバックを送信するため、MySQL Notifier はリモートコンピュータ上のサービスのステータスがいつ変更されたかを認識できます。非同期通知は、タイマーを使用する準同期通知または同期通知と比較して、パフォーマンスが優れています。
非同期通知では、リモートコンピュータがコールバックをクライアントコンピュータに送信する (したがって逆接続をオープンする) ことが必要なため、通信が正しく機能するためには、Windows ファイアウォールおよび DCOM が正しく構成されていなければなりません。
非同期 WMI 通知によってスローされる一般的なエラーのほとんどは、Windows ファイアウォールが通信をブロックすること、または DCOM / WMI 設定が正しくセットアップされていないことに関係しています。一般的なエラーとその解決方法のリストは、Common Errorsを参照してください。
次の手順は、WMI を機能させるために必須です。これらの手順は 2 つのマシン間にわかれてます。MySQL Notifier を実行する単独のホストコンピュータ (コンピュータ A) と、モニターされる複数のリモートマシン (コンピュータ B) です。
MySQL Notifier を実行しているコンピュータ (コンピュータ A)
-
「グループ ポリシー エディター」を編集するか、または
NETSH
を使用して、リモート管理を有効にします。「グループ ポリシー エディター」 を使用する場合
「GPEDIT.MSC」
と入力してから をクリックします。「ローカル コンピュータ ポリシー」見出しの「コンピューターの構成」をダブルクリックします。
「管理用テンプレート」、「ネットワーク」、「ネットワーク接続」、「Windows ファイアウォール」の順にダブルクリックします。
コンピュータがドメイン内にある場合は、「ドメイン プロファイル」をダブルクリックします。そうでない場合は「標準プロファイル」をダブルクリックします。
「Windows ファイアウォール: 着信リモート管理の例外を許可する」をクリックします。
「アクション」メニューで、
を選択するか、前の手順で選択したものをダブルクリックします。
NETSH
コマンドを使用する場合管理者権限でコマンドプロンプトウィンドウをオープンします (「コマンド プロンプト」アイコンを右クリックして「管理者として実行」をクリックします)。
-
次のコマンドを実行します。
NETSH firewall set service RemoteAdmin enable
-
DCOM ポート TCP 135 のオープン
管理者権限でコマンドプロンプトウィンドウをオープンします (「コマンド プロンプト」アイコンを右クリックして「管理者として実行」をクリックします)。
-
次のコマンドを実行します。
NETSH firewall add portopening protocol=tcp port=135 name=DCOM_TCP135
-
コールバックのシンクを含むクライアントアプリケーションを (
MySqlNotifier.exe
) Windows ファイアウォールの例外リストに追加します (Windows ファイアウォール構成またはNETSH
を使用します)。Windows ファイアウォール構成を使用する場合
「コントロール パネル」で、「Windows ファイアウォール」をダブルクリックします。
「Windows ファイアウォール」ウィンドウの左のパネルで、「Windows ファイアウォールを介したプログラムまたは機能を許可する」をクリックします。
「許可されたプログラム」ウィンドウで
をクリックします。MySqlNotifier.exe
が許可されたプログラムと機能のリスト内にある場合は、コンピュータが接続するネットワークのタイプ (プライベート、パブリック、または両方) にチェックされていることを確認します。MySqlNotifier.exe
がリストにない場合は、 をクリックします。「プログラムの追加」ウィンドウで、
MySqlNotifier.exe
が「プログラム」リストにある場合は選択し、そうでない場合は「参照...」をクリックしてMySqlNotifier.exe
がインストールされたディレクトリに移動して選択してから、 をクリックします。MySqlNotifier.exe
が、コンピュータが接続するネットワークのタイプ (プライベート、パブリック、または両方) にチェックされていることを確認します。
NETSH
コマンドを使用する場合管理者権限でコマンドプロンプトウィンドウをオープンします (「コマンド プロンプト」アイコンを右クリックして
をクリックします)。-
次のコマンドを実行します。このとき、「
[YOUR_INSTALL_DIRECTORY]
」は変更します。NETSH firewall add allowedprogram program=[YOUR_INSTALL_DIRECTORY]\MySqlNotifier.exe name=MySqlNotifier
-
コンピュータ B が
WORKGROUP
のメンバーであるか、またはコンピュータ A によって信頼されていない別のドメインにある場合は、コールバック接続 (接続 2) が匿名接続として作成されます。匿名接続に DCOM リモートアクセス権限を付与するには:「DCOMCNFG」
と入力してから をクリックします。「コンポーネント サービス」ダイアログボックスで、「コンポーネント サービス」、「コンピューターの順に展開してから「マイ コンピューター」を右クリックし、 をクリックします。
「My Computer Properties」ダイアログボックスで「COM セキュリティ」タブをクリックします。
「アクセス許可」で、
をクリックします。「アクセス許可」ダイアログボックスで、「グループ」または「ユーザー名」ボックスから「ANONYMOUS LOGON 名」を選択します。「ユーザー」の「アクセス許可」の「許可」カラムで、「リモート アクセス」を選択してから をクリックします。
モニター対象のリモートコンピュータ (コンピュータ B)
MySQL Notifier を実行しているコンピュータ (コンピュータ A) にログインしたユーザーアカウントがリモートコンピュータ (コンピュータ B) のローカル管理者である場合、すなわち同じアカウントがコンピュータ B では管理者である場合、「リモート管理の許可」手順までスキップできます。
管理者以外のユーザーがリモートでコンピュータにアクセスできるようにするための DCOM セキュリティーの設定
-
ユーザーまたはグループに「DCOM のリモート起動」と有効化の権限を付与します。
「DCOMCNFG」
と入力してから をクリックします。「コンポーネント サービス」ダイアログボックスで、「コンポーネント サービス」、「コンピューターの順に展開してから「マイ コンピューター」を右クリックし、 をクリックします。
「My Computer Properties」ダイアログボックスで「COM セキュリティ」タブをクリックします。
「アクセス許可」で、
をクリックします。-
「グループ」または「ユーザー名」のリストにご自分の名前またはグループが表示されない場合は、「Launch Permission」ダイアログボックスで次の手順に従ってください。
「起動アクセス許可」ダイアログボックスで、 をクリックします。
「Select Users, Computers, or Groups」ダイアログボックスで、「選択するオブジェクト名を入力してください」ボックスに自分の名前とグループを追加してから、
をクリックします。
「Launch Permission」ダイアログボックスで、「グループ」または「ユーザー名」ボックスから自分のユーザーおよびグループを選択します。「ユーザー」の「アクセス許可」の「許可」カラムで、「リモートからの起動」を選択し、「リモートからのアクティブ化」を選択してから をクリックします。
DCOM リモートアクセス許可の付与
「DCOMCNFG」
と入力してから をクリックします。「コンポーネント サービス」ダイアログボックスで、「コンポーネント サービス」、「コンピューターの順に展開してから「マイ コンピューター」を右クリックし、 をクリックします。
「My Computer Properties」ダイアログボックスで「COM セキュリティ」タブをクリックします。
「アクセス許可」で、
をクリックします。「アクセス許可」ダイアログボックスで、「グループ」または「ユーザー名」ボックスから「ANONYMOUS LOGON 名」を選択します。「ユーザー」の「アクセス許可」の「許可」カラムで、「リモート アクセス」を選択してから をクリックします。
-
管理者以外のユーザーへの特定の WMI 名前空間へのアクセス許可
「コントロール パネル」で、「管理ツール」をダブルクリックします。
「管理ツール」ウィンドウで、「コンピューターの管理」をダブルクリックします。
「コンピューターの管理」ウィンドウで、「サービスとアプリケーション」ツリーを展開して「WMI コントロール」をダブルクリックします。
「WMI コントロール」アイコンを右クリックして、「プロパティ」を選択します。
「WMI Control Properties」ウィンドウで、「セキュリティ」タブをクリックします。
「セキュリティ」タブで、名前空間を選択して「セキュリティ」をクリックします。
適切なアカウントを探して「Remote Enable in the Permissions list」にチェックを付けます。
-
「グループ ポリシー エディター」を編集するか、または
NETSH
を使用して、リモート管理を有効にします。「グループ ポリシー エディター」 を使用する場合
「GPEDIT.MSC」
と入力してから をクリックします。「ローカル コンピュータ ポリシー」見出しの「コンピューターの構成」をダブルクリックします。
「管理用テンプレート」、「ネットワーク」、「ネットワーク接続」、「Windows ファイアウォール」の順にダブルクリックします。
コンピュータがドメイン内にある場合は、「ドメイン プロファイル」をダブルクリックします。そうでない場合は「標準プロファイル」をダブルクリックします。
「Windows ファイアウォール: 着信リモート管理の例外を許可する」をクリックします。
「アクション」メニューで、
を選択するか、前の手順で選択したものをダブルクリックします。
NETSH
コマンドを使用する場合管理者権限でコマンドプロンプトウィンドウをオープンします (「コマンド プロンプト」アイコンを右クリックして「管理者として実行」をクリックします)。
-
次のコマンドを実行します。
NETSH firewall set service RemoteAdmin enable
-
ここで、
Full Name
値ではなくName
値を使用してログインしていることを確認します。「コントロール パネル」で、「管理ツール」をダブルクリックします。
「管理ツール」ウィンドウで、「コンピューターの管理」をダブルクリックします。
「コンピューターの管理」ウィンドウで、「システム ツール」、「ローカル ユーザーとグループ」の順に展開します。
「ユーザー」ノードをクリックし、右側のパネルで自分のユーザーを探し、接続に Full Name 値ではなく Name 値を使用していることを確認します。
-
リモートコンピュータが
Windows XP Professional
上で実行されている場合は、リモートログインが強制的にゲストアカウントユーザーに変更されていないことを確認します (ForceGuest
とも呼ばれます)。これは、ドメインに接続されていないコンピュータではデフォルトで有効です。「スタート」をクリックしてから「実行」をクリックし、
「SECPOL.MSC」
と入力してから をクリックします。「ローカル ポリシー」ノードで、「セキュリティ オプション」をダブルクリックします。
「ネットワーク アクセス: ローカル アカウントの共有とセキュリティ モデル」を選択して保存します。
一般的なエラー
-
0x80070005
DCOM セキュリティーが正しく構成されませんでした (コンピュータ B、
DCOM セキュリティーの設定...
の手順を参照してください)。リモートコンピュータ (コンピュータ B) が、WORKGROUP のメンバーであるか、またはクライアント (コンピュータ A) によって信頼されていないドメインにあります (コンピュータ A、
匿名接続に DCOM リモートアクセス権限を付与するには
の手順を参照してください)。
-
0x8007000E
リモートコンピュータ (コンピュータ B) が、WORKGROUP のメンバーであるか、またはクライアント (コンピュータ A) によって信頼されていないドメインにあります (コンピュータ A、
匿名接続に DCOM リモートアクセス権限を付与するには
の手順を参照してください)。
-
0x80041003
リモート WMI 名前空間へのアクセスが正しく構成されませんでした (コンピュータ B、
管理者以外のユーザーへの特定の WMI 名前空間へのアクセス許可
の手順を参照してください)。
-
0x800706BA
クライアントコンピュータ (コンピュータ A) のファイアウォールで DCOM ポートがオープンしていません。コンピュータ A の、
DCOM ポート TCP 135 のオープン
の手順を参照してください。リモートコンピュータ (コンピュータ B) のネットワークの場所がパブリックに設定されているため、アクセスできません。Windows エクスプローラーを介してアクセスできることを確認してください。