web-dev-qa-db-ja.com

CPU%使用率アラートが「counter = rais up above」のアラートで機能しない

特定の値を超えたときにCPU使用率のアラートを作成することを考えています。だから私はこれに対して1つのアラートを設定し、それらのスクリーンショットをここに添付しました enter image description here

enter image description here

しかし、上記のアラートは機能しておらず、メールが50%を超えてもトリガーされません。間違って設定したことはありますか?そして、counter = 'falls below'の場合にAlertでテストしたのと同じことで、メールがトリガーされ、それは完全に機能しました。変更したいことがあれば、私を助けてください。

3

すべての接続をデフォルトのリソースガバナーグループに分類するダミーのリソースガバナー分類機能を有効にした場合、SQL Server 2012で「ワークロードグループの統計-> CPU使用率%」に基づいてアラートを発生させることができます。

次の分類関数を使用し、関連するコードを使用してその関数を有効にしました。

USE master;
GO
CREATE FUNCTION dbo.fnDummyClassifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    RETURN N'default'; --every session is assigned to the "default" pool.
END
GO
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [dbo].[fnDummyClassifier]);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

このコードを使用してアラートを作成しました。これは、CPU使用率が10%を超えたときにアラートを出します。

EXEC msdb.dbo.sp_add_alert @name=N'CPUUsage' 
        , @enabled=1
        , @delay_between_responses=0
        , @include_event_description_in=1
        , @performance_condition=N'Workload Group Stats|CPU usage %|default|>|0.1'
        , @job_id=N'00000000-0000-0000-0000-000000000000';
GO

EXEC msdb.dbo.sp_add_notification @alert_name=N'CPUUsage'
    , @operator_name=N'Max'
    , @notification_method = 1;
GO

次に、このクエリを使用して、分類機能が有効になり、リソースガバナーが再構成された後、SQL Serverに接続されているセッションでCPUの使用を強制しました。

SELECT CRYPT_GEN_RANDOM(10)
FROM (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) v1(num)
    CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) v2(num)
    CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) v3(num)
    CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) v4(num)
    CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) v5(num)
    CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) v6(num)
    CROSS JOIN (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) v7(num)

このクエリは、アラートのステータスと、最後にいつ起動されたかを示します。

SELECT AlertName = sa.name
    , Enabled = sa.enabled
    , LastOccurrence = CASE WHEN sa.last_occurrence_date > 0 
        THEN dbo.agent_datetime(sa.last_occurrence_date, sa.last_occurrence_time) 
        ELSE NULL 
        END
    , OccurrenceCount = sa.occurrence_count
    , PerformanceCondition = sa.performance_condition
FROM dbo.sysalerts sa
WHERE sa.name = 'CPUUsage';
3
Max Vernon
  1. 一般的なチェックの下でEnable(最初のスクリーンショット)
  2. General InstanceドロップダウンでDefaultを選択します。

上記の2つの構成設定を変更すると、正常に動作し、通知が届きます。

0
Srinivas Odalla

一般チェックの下で(最初のスクリーンショット)を有効にし、応答チェックの下でジョブを実行して、リストから「syspolicy_purge_history([Uncategorized(Local)])」を選択します(2番目のスクリーンショット)

0
user149139