關閉監視器所產生的警示
監視會定義物件的健全狀況狀態。 物件可以有三種健康狀態之一:綠色(成功或狀況良好)、黃色(警告)或紅色(嚴重或狀況不良)。 例如,磁碟機容量的監視可能會將低於 85% 的已滿程度定義為綠色、將超過 85% 的已滿程度定義為黃色,並將超過 90% 的已滿程度定義為紅色。 您可以將監視設定成在發生狀態變更時產生警示。
當您收到警示時,您可以在警示詳細數據中看到警示是由規則或監視器產生。 如果警示是由監視器產生,最佳做法是,您應該允許監視器在健康情況狀態恢復良好時自動解決警示。 如果您在對象處於警告或狀況不良狀態時關閉警示,問題仍無法解決,但不會產生任何進一步的警示。
如果監視器在健康情況狀態變更為紅色時產生警示,而您確實解決警示,您也必須重設監視器的健康情況狀態。 如果未重設監視器,則會產生警示的相同條件可能會再次發生,但不會因為健康情況狀態未變更而產生任何警示。
在 2019 之前的 Operations Manager 中,如果您在對象處於警告或狀況不良狀態時關閉警示,問題仍無法解決,但不會產生任何進一步的警示。 此行為通常會導致系統中沒有作用中警示的案例,而基礎問題存在,則會在 Operations Manager 2019 中修正。
使用 Operations Manager 2019 時,除非對應監視器的健康情況狀態良好,否則無法關閉監視器所產生的警示。 如果您嘗試關閉狀況不良監視器所產生的警示,就會顯示錯誤訊息,而且不會關閉警示。
您可以從 Operations 控制台和 Web 控制台檢查這個新行為。
Operations 主控台
執行下列步驟:
開啟 Operations Manager 控制台,然後選取 [ 監視]
監視概觀 會顯示監視和目前警示的健康狀態摘要。
在瀏覽窗格中選取 [ 作用中警示 ]。
以滑鼠右鍵按下警示,此警示是由處於狀況不良狀態的監視器所產生。
將解析狀態設定為 [已關閉]。
下列訊息會顯示警示未關閉的原因:
目前選取範圍中的警示無法關閉,因為產生這些警示的監視器仍然狀況不良。 如需無法關閉之警示的詳細資訊,請在 Operations Manager Web 控制台中檢視[警示關閉失敗] 儀錶板
注意
若要關閉此警示,對應監視器的健康情況狀態必須手動重設為狀況良好狀態。 如果 此監視器的自動解決 設定為 true,則警示會在重設健全狀況狀態之後自動關閉。 否則,在重設健全狀況狀態之後,必須手動關閉警示。
Web 主控台
開啟 Web 控制台,然後選取 [ 監視]。 監視概觀 會顯示監視和目前警示的健康狀態摘要。
在瀏覽窗格中選取 [ 作用中警示 ]。
開啟警示,該警示是由處於狀況不良狀態的監視器所產生。
將解析狀態設定為 [已關閉 ] 和 [儲存 ] 變更。
下列訊息會顯示警示未關閉的原因:
無法關閉目前的警示,因為產生此警示的監視器仍然狀況不良
注意
若要關閉此警示,您必須手動重設產生此警示之對應監視器的健康情況。
手動重設對應警示之監視器的健康情況狀態
執行下列步驟:
在瀏覽窗格中選取 [警示關閉失敗 ] 儀錶板。 儀錶板會列出 Operations Manager 無法關閉的警示,因為產生警示的監視器狀況 不良。
您可以透過下列兩種方式,針對對應的警示重設監視器的健康情況狀態:
- 在儀錶板中選取警示,然後選取儀錶板動作 [重設警示的健康情況]。 Or
- 選取此儀錶板中的警示以流覽至警示向下切入頁面(您可以在其中可視化警示的所有相關信息),然後在工作窗格中選取 [ 重設健康情況] 工作 。
警示更新 API
如果警示關閉是從事件管理之類的外部系統觸發,而且由於對應的監視器狀況不良而未關閉警示,則會傳遞警示詳細數據,而外部系統可能會取用此例外狀況。
下列現有的警示更新 API 可用來將警示更新數據外部化。 這兩個 API 已增強,可啟用此新行為的外部化:
下列範例顯示如何使用例外 狀況 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.")
}
}
}
}
}
判斷警示是否已自動解決
執行下列步驟:
選取警示,然後在警示詳細數據中,選取警示監視器的名稱。 監視器的屬性對話框隨即開啟。
在監視器屬性中,選取 [警示] 索引標籤,以查看當監視器返回狀況良好狀態時,是否要自動解決警示的選項。
關閉監視器所產生的警示
執行下列步驟:
讀取警示並檢查其屬性。 檢查警示詳細數據,以判斷警示是否由監視或規則產生。 使用警示的產品知識來協助判斷警示的原因。
針對警示的原因進行疑難解答,並採取解決問題所需的動作。
解決問題時,請選取 警示詳細數據中的 [來源 ]。 這會開啟 與警示相關聯之物件的 [狀態 ] 檢視。
以滑鼠右鍵按兩下物件,指向 [開啟],然後選取 [健全狀況總管] 做為物件名稱。
選取產生警示的監視器,然後選取工具欄上的 [ 重設健康情況 ]。 關閉 [健全狀況總管] 和 [ 狀態 ] 檢視。
重新整理警示檢視。 如果仍列出警示,請選取警示,然後在 [動作] 窗格中選取 [ 關閉警示 ]。
注意
下列更新 (孤立警示關閉) 適用於 Operations Manager 2019 UR3 和更新版本。
關閉孤立警示
在 Operations Manager 2019 RTM、UR1 和 UR2 中,在某些情況下,作用中警示不會在非持續性健康狀態之後關閉,如下所述:
容錯移轉:
- 當管理伺服器離線時,可能會觸發的故障轉移。
- 由於將新的管理伺服器新增至資源集區,導致負載平衡。
- 當無代理程式電腦故障轉移並由另一部管理伺服器監視時,因此會是新的健全狀態。
代理程式在一段時間后再次中斷連線,其中健康狀態變更並不知道先前的狀態。
管理伺服器已中斷連線並再次連線。
清除健全狀況服務快取。
整體而言,健全狀況服務不會保存監視的最後一個狀態;將監視器重設為狀況良好時,不會關閉警示。
使用 Operations Manager 2019 UR3 時,所有孤立警示最終都會關閉,視監視類型而定,如下所示:
- 服務監視器:立即關閉。
- 具有立即隨選模組的所有監視器:立即關閉。
- 所有沒有隨選模組的監視器:在第二次執行時關閉,視頻率而定。
- 事件型監視器:使用初始化之後發生的狀況良好事件關閉。
當監視正在初始化時,健康狀態轉換會顯示次要變更;下列範例:
如上圖所示,在初始化期間,監視會先變成狀況良好。 然後,它再次計算並變成狀況良好。 您會看到兩個狀態變更從 空心狀態轉換為狀況良好。
警示關閉體驗的變更
系統管理員可以選擇關閉處於狀況不良狀態的 狀況監控 警示關閉。
在 2019 版中,除非對應監視器的健康情況狀態良好,否則無法關閉監視器所產生的警示。 如果您嘗試關閉狀況不良監視器所產生的警示,就會顯示錯誤訊息,而且不會關閉警示。
系統管理員可以流覽至 [系統管理>設定],然後選取下列任一選項來變更此行為:
- 只有在基礎監視器健康情況解決或手動重設時,才會關閉監視所產生的警示
- 藉由重設基礎監視器健全狀況來關閉監視所產生的警示:此選項可讓您以程序設計方式和 UI 關閉狀況不良監視器的警示。 這會重設基礎監視器健康情況,這會隱含關閉其對應的警示。 這個選項也允許大量關閉監視器所產生的警示。
您也可以藉由檢視警示屬性>歷程記錄來追蹤警示的關閉方式。
下一步
產生警示時,您可以在 Operations 和 Web 控制台中檢視作用中警示和詳細 數據,以找出可能的問題,並協助找出解決警示的後續步驟。
調查並解決一或多個監視器偵測到的問題之後,請檢閱 如何重設健全狀況以手動重設健全 狀況,如果監視器未設定為自動解決,或您不想等待監視器偵測健全狀況狀態。