モニターによって生成されたアラートを閉じる

モニターは、オブジェクトの正常性状態を定義します。 オブジェクトには、緑 (成功または正常)、黄色 (警告)、赤 (重大または異常) の 3 つの正常性状態のいずれかを指定できます。 たとえば、ディスク ドライブの容量のモニターで、使用済み容量が 85% 未満の場合は緑、85% 以上の場合は黄、90% 以上の場合は赤と定義する場合があります。 状態が変わったときにアラートを発生するようにモニターを構成することもできます。

アラートを受信すると、アラートがルールまたはモニターによって生成されたかどうかをアラートの詳細で確認できます。 アラートがモニターによって生成された場合は、ベスト プラクティスとして、正常性状態が正常に戻ったときにモニターにアラートの自動解決を許可する必要があります。 オブジェクトが警告または異常な状態の間にアラートを閉じると、問題は解決されませんが、それ以上のアラートは生成されません。

正常性状態が赤色に変わり、アラートを解決するときにモニターがアラートを生成する場合は、モニターの正常性状態もリセットする必要があります。 モニターがリセットされない場合、アラートを生成したのと同じ条件が再び発生する可能性がありますが、正常性状態が変更されていないため、アラートは生成されません。

2019 より前の Operations Manager では、オブジェクトが警告または異常な状態の間にアラートを閉じると、問題は未解決のままですが、それ以上のアラートは生成されません。 この動作は、多くの場合、システムにアクティブなアラートがない一方で、基になる問題が存在するシナリオにつながりましたが、Operations Manager 2019 では修正されています。

Operations Manager 2019 では、モニターによって生成されたアラートは、対応するモニターの正常性状態が異常 でない限り閉じられません。 異常なモニターによって生成されたアラートを閉じようとすると、エラー メッセージが表示され、アラートは閉じられません。

この新しい動作は、オペレーション コンソールと Web コンソールの両方から確認できます。

オペレーション コンソール

次のステップを実行します。

  1. Operations Manager コンソールを開き、 Monitoring を選択します

    監視の概要 モニターと現在のアラートの正常性状態の概要が表示されます。

  2. ナビゲーション ウィンドウで アクティブなアラート を選択します。

  3. 異常な状態のモニターによって生成されるアラートを右クリックします。

  4. 解決状態を Closed に設定します。

    アラートが終了しない理由を示す次のメッセージが表示されます。

    現在の選択のアラートは、これらのアラートを生成したモニターがまだ異常であるため、閉じることができません。 閉じられなかったアラートの詳細については、Operations Manager Web コンソールの [アラートの終了エラー] ダッシュボードを参照してください。

    閉じられたアラート メッセージ操作コンソールを示すスクリーンショット。

    Note

    このアラートを閉じるには、対応するモニターの正常性状態を手動で正常な状態にリセットする必要があります。 このモニター autoresolvetrue に設定されている場合、正常性状態がリセットされた後、アラートは自動的に閉じられます。 それ以外の場合は、正常性状態がリセットされた後、アラートを手動で閉じる必要があります。

Web コンソール

  1. Web コンソールを開き、 Monitoring を選択します。 監視の概要 モニターと現在のアラートの正常性状態の概要が表示されます。

  2. ナビゲーション ウィンドウで アクティブなアラート を選択します。

  3. 異常な状態のモニターによって生成されたアラートを開きます。

  4. 解決状態を ClosedSave 変更として設定します。

    アラートが終了しない理由を示す次のメッセージが表示されます。

    このアラートを生成したモニターがまだ異常であるため、現在のアラートを閉じることはできません

    閉じられたアラート メッセージ Web コンソールを示すスクリーンショット。

    Note

    このアラートを閉じるには、このアラートを生成した対応するモニターの正常性を手動でリセットする必要があります。

対応するアラートのモニターの正常性状態を手動でリセットする

次のステップを実行します。

  1. ナビゲーション ウィンドウで Alert Closure Failure ダッシュボードを選択します。 ダッシュボードには、アラートを生成したモニターが 異常であるため、Operations Manager が閉じられなかったアラートが一覧表示

  2. 次の 2 つの方法で、対応するアラートのモニターの正常性状態をリセットできます。

    • ダッシュボードでアラートを選択し、ダッシュボード アクション アラートの正常性の設定を選択します。 または
    • このダッシュボードでアラートを選択してアラートのドリルダウン ページに移動し (アラートに関連するすべての情報を視覚化できます)、作業ウィンドウで [正常性の設定] タスク を選択します。

    アラートのモニターの正常性のリセットを示すスクリーンショット。

アラート更新 API

インシデント管理などの外部システムからアラートのクローズがトリガーされ、対応するモニターが異常であるためにアラートが閉じられなかった場合は、アラートの詳細と共に例外が渡され、外部システムによって使用される可能性があります。

アラート更新データの外部化には、次の既存のアラート更新 API を使用できます。 これら 2 つの API は、この新しい動作の外部化を有効にするために拡張されたものです。

  • アラートの更新 API 1

  • アラートの更新 API 2

次の例は、例外 AlertMonitorUnhealthyExceptionを使用する方法の詳細を示しています。

namespace MonitorAlertClosureFailureExample
{
    class Program
    {
        static void Main(string[] args)
        {
            ManagementGroup mg = new ManagementGroup("localhost");

            // Get database availability alerts.
            MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(
                "Name LIKE '%DBStatusMonitor' AND Category = 'AvailabilityHealth'");
            IList<MonitoringAlert> alerts =
                mg.OperationalData.GetMonitoringAlerts(alertCriteria, default(DateTime));

            // Find the "Closed" resolution state that is defined
            // for this Management Group.
            IList<MonitoringAlertResolutionState> alertStates = mg.OperationalData.GetMonitoringAlertResolutionStates();
            MonitoringAlertResolutionState closedState = null;
            foreach (MonitoringAlertResolutionState thisState in alertStates)
            {
                if (thisState.Name == "Closed")
                {
                    closedState = thisState;
                }
            }

            // Close all alerts not already in the "Closed" resolution state.
            foreach (MonitoringAlert a in alerts)
            {
                a.ResolutionState = closedState.ResolutionState;
                string comment = "Closing the Alert";
                try
                {
                    a.Update(comment);
                }
                catch (AlertMonitorUnhealthyException e)
                {
                    // It mean the alert being closed is a monitor alert and the monitor which generated this alert is still unhealthy
                    // take an appropriate action. Here an error message is being displayed at console
                    Console.WriteLine("The alert with Alert Name" + a.Name + "cannot be closed as the monitor which genrated the alert is still unhealthy.")
                }
                catch (Exception e)
                {
                    // generic exception during the update of the alert
                    Console.WriteLine("Closing the alert with alert name" + a.Name + "is failing because" + e.Message)
                }

            }

    }
}


namespace MonitorAlertClosureFailureExample
{
    class Program
    {
        static void Main(string[] args)
        {
            ManagementGroup mg = new ManagementGroup("localhost");

            // Get database availability alerts.
            MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(
                "Name LIKE '%DBStatusMonitor' AND Category = 'AvailabilityHealth'");
            IList<MonitoringAlert> alerts =
                mg.OperationalData.GetMonitoringAlerts(alertCriteria, default(DateTime));

            // Find the "Closed" resolution state that is defined
            // for this Management Group.
            IList<MonitoringAlertResolutionState> alertStates = mg.OperationalData.GetMonitoringAlertResolutionStates();
            MonitoringAlertResolutionState closedState = null;
            foreach (MonitoringAlertResolutionState thisState in alertStates)
            {
                if (thisState.Name == "Closed")
                {
                    closedState = thisState;
                }
            }

            // Close all alerts not already in the "Closed" resolution state.
            string comment = "Closing the alert";
            foreach(MonitoringAlert a in alerts)
            {
                a.ResolutionState = closedState.ResolutionState;
            }

            IList<MonitoringAlertUpdateFailure> updateFailures = mg.OperationalData.UpdateMonitoringAlerts(alerts, comment);

            if (updateFailures != null && updateFailures.Count > 0)
            {
                foreach (MonitoringAlertUpdateFailure failure in updateFailures)
                {
                    if(failure.Exception is AlertMonitorUnhealthyException)
                    {
                        // It means the alert being closed is a monitor alert and the monitor which generated this alert is still unhealthy
                        // take an appropriate action. Here an error message is being displayed at console
                        Console.WriteLine("The alert with Alert Name" + a.Name + "cannot be closed as the monitor which genrated the alert is still unhealthy.")
                    }
            }           
        }

    }
}

アラートが自動的に解決されるかどうかを判断する

次のステップを実行します。

  1. アラートを選択し、アラートの詳細でアラート モニターの名前を選択します。 モニターのプロパティ ダイアログが開きます。

  2. モニターのプロパティで、 Alerting タブを選択して、モニターが正常な状態に戻ったときに自動的にアラートを解決 オプションが選択されているかどうかを確認します

モニターによって生成されたアラートを閉じる

次のステップを実行します。

  1. アラートを読み取り、そのプロパティを調べます。 アラートの詳細を確認して、アラートがモニターまたはルールによって生成されたかどうかを判断します。 アラートの製品知識を使用して、アラートの原因を特定します。

  2. アラートの原因をトラブルシューティングし、問題を解決するために必要なアクションを実行します。

  3. 問題が解決したら、アラートの詳細で Source を選択します。 これにより、アラートに関連付けられているオブジェクトの State ビューが開きます。

  4. オブジェクトを右クリックし、 Open をポイントし、 Health Explorer for object name を選択します。

  5. アラートを生成したモニターを選択し、ツール バーの Reset Health を選択します。 ヘルス エクスプローラーと State ビューを閉じます。

  6. アラート ビューを更新します。 アラートが引き続き表示されている場合は、アラートを選択し、[操作] ウィンドウで [アラートの閉じる ] を選択します。

Note

次の更新プログラム (孤立したアラートを閉じる) は、Operations Manager 2019 UR3 以降に適用されます。

孤立したアラートの終了

Operations Manager 2019 RTM、UR1、UR2 では、次に詳しく説明するように、特定のシナリオでは、非永続的な正常性状態の後にアクティブなアラートが閉じられません。

  1. フェールオーバー:

    • 管理サーバーがオフラインになったときにトリガーされる可能性があるフェールオーバー。
    • リソース プールに新しい管理サーバーが追加され、負荷分散が行われます。
    • エージェントレス コンピューターがフェールオーバーし、別の管理サーバーによって監視される場合は、新しい正常性状態になります。
  2. しばらくするとエージェントが切断され、もう一度接続され、正常性状態の変化が以前の状態を認識しません。

  3. 管理サーバーが切断され、もう一度接続されました。

  4. ヘルス サービス キャッシュがクリアされました。

全体的に、ヘルス サービスはモニターの最後の状態を保持しません。アラートは、モニターを正常にリセットしている間は閉じられません。

Operations Manager 2019 UR3 では、以下に詳しく説明するように、監視の種類に応じて、すべての孤立したアラートが最終的に閉じられます。

  • サービス モニター: 直ちに閉じます。
  • 即時オンデマンド モジュールを備えたすべてのモニター: 直ちに閉じます。
  • オンデマンド モジュールのないすべてのモニター: 頻度に応じて、2 回目の実行で閉じます。
  • イベント ベースのモニター: 初期化後に発生する正常なイベントで閉じます。

正常性状態の遷移は、モニターが初期化しているときに小さな変更を示します。以下のサンプル:

正常性状態の遷移を示すスクリーンショット。

上の図に示すように、初期化中、モニターは最初に正常になります。 その後、再び計算され、正常になります。 ホロー状態から正常な状態への 2 つの状態変更の遷移が表示されます

アラート終了エクスペリエンスの変更

Operations Manager 2022 を使用すると、管理者は異常な状態にある、ヘルス モニターのアラートの終了を選択できます。

リリース 2019 では、対応するモニターの正常性状態が正常でない限り、モニターによって生成されたアラートを閉じることができませんでした。 異常なモニターによって生成されたアラートを閉じようとすると、エラー メッセージが表示され、アラートは閉じられません。

Operations Manager 2022 では、管理者は [管理] > [設定] に移動して、次のオプションのいずれかを選択することで、この動作を変更できます。

  • 基になるモニターの正常性が手動で解決またはリセットされたときにのみ、モニターによって生成されたアラートを閉じます
  • 基になるモニターの正常性をリセットしてモニターによって生成されたアラートを閉じます: このオプションを使用すると、プログラムによって、および UI で異常なモニターのアラートを閉じます。 これにより、基になるモニターの正常性がリセットされ、対応するアラートが暗黙的に閉じられます。 また、このオプションを使用すると、モニターによって生成されたアラートを一括終了できます。

[アラートのプロパティ] > [履歴] を表示して、アラートがどのように閉じられたかを追跡することもできます。

グローバル管理グループの設定を示すスクリーンショット。

アラート履歴を示すスクリーンショット。

次のステップ

  • アラートが生成されたら、Operations and Web コンソールで View Active Alerts and Details を使用して、考えられる問題を特定し、それらを解決するための次の手順を特定できます。

  • 1 つ以上のモニターによって検出された問題を調査して解決したら、「 正常性をリセットする方法 を確認して、モニターが自動解決するように構成されていない場合、またはモニターが正常性状態を検出するのを待たないようにする場合は、正常性を手動でリセットします。