Web コンソールでカスタム ウィジェットを使用してダッシュボードを作成する

System Center Operations Manager では、Web コンソールには、Web コンソール サーバーに接続されている任意のブラウザーを使用して、任意のコンピューターで開くことができる管理グループの監視インターフェイスが用意されています。 次の手順では、REST に基づく新しい API を使用する新しい HTML5 Web コンソールのダッシュボードにカスタム ウィジェットを追加する方法について説明します。 指定された HTML コードを実行し、さまざまな視覚化で目的の出力を視覚化します。

Note

Operations Manager 2019 UR1 以降では、CSRF 攻撃を防ぐためのクロスサイト リクエスト フォージェリ (CSRF) トークンがサポートされています。 Operations Manager 2019 UR1 以降を使用している場合は、CSRF トークンを初期化する必要があります。 HTML スクリプトは、CSRF トークンの初期化なしでは機能しません。

CSRF トークンを初期化する

Operations Manager 2019 UR1 以降に適用できる必要なアクション。

  1. ダッシュボードの HTML ヘッダーに、次のコードを追加します。
var requestHeaders = {
            Accept: 'q=0.8;application/json;q=0.9',
            "Content-Type": "application/json"
        };
        InitializeCSRFToken();
        function InitializeCSRFToken() {
            var documentcookies = document.cookie.split('; ');
            var result = {};
            for (var i = 0; i < documentcookies.length; i++) {
                var cur = documentcookies[i].split('=');
                result[cur[0]] = cur[1];
            }
            if (result["SCOM-CSRF-TOKEN"] && result["SCOM-CSRF-TOKEN"] != null) {
                requestHeaders["SCOM-CSRF-TOKEN"] = decodeURIComponent(result["SCOM-CSRF-TOKEN"]);
            }
        }
  1. onload 関数で、ヘッダー値を requestHeaders に変更します。 ヘッダー値が存在しない場合は、次のように追加します。

例:

CSRF トークンの初期化

Operations Manager REST API リファレンスを使用する

REST API リファレンスを使用して、カスタム ウィジェットで実行できる操作について学習し、ダッシュボードに操作データを表示します。 REST API を初めて使用する場合は、この API の概要まだ確認していない場合は、その情報を参照してください。

スクリプト構造

カスタム ウィジェット スクリプトには、次の 3 つの主要なセクションがあります。

  1. REST API とそのプロパティの定義。 このセクションでは、アラート、状態、パフォーマンス データなど、視覚化のために Operations Manager から取得する必要があるデータを定義します。
  2. クラスまたはグループの識別、重大度、正常性状態、特定のパフォーマンス オブジェクト インスタンスなどの条件の識別など、視覚エフェクトに表示する結果を識別するビジネス ロジックを指定します。
  3. サード パーティ製の視覚化。これは、選択したグラフの種類に応じてデータをレンダリングするために必要な cloudflare.com でホストされるオープンソース ライブラリです。

ウィジェットのプロパティ

スクリプトが視覚化のデータを照会して返すために、 URL パラメーターは Operations Manager Web コンソールのアドレスとデータ型を指定します。 URL 構文は http://<servername>/operationsmanager/data/<dataitem> dataitem の値です は次のいずれかです。

  • アラート は監視アラートを表します
  • state は正常性状態データの監視を表します
  • performance は監視パフォーマンス データを表します
<!DOCTYPE HTML>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript">
        var criticalCounter = 0;
        var informationCounter = 0;
        var warningCounter = 0;

        window.onload = function () {
            $.ajax({
                url: "/OperationsManager/data/alert",
                type: "POST",

各データ型の監視データのスコープを設定するには、クラスを選択してそのクラスのすべてのインスタンスを表示するか、選択したクラスのオブジェクトのサブセットのみを表示するには、グループを含めることもできます。 たとえば、Windows Server DC Computer クラスのすべてのオブジェクトを指定するには、 classId のプロパティ値を変更します。

Note

これは状態データにのみ適用され、アラートやパフォーマンスには適用されません。 パフォーマンス データの場合は、グループまたは監視対象オブジェクトを指定します。

<!DOCTYPE HTML>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript">
        var criticalCounter = 0;
        var informationCounter = 0;
        var warningCounter = 0;

        window.onload = function () {
            $.ajax({
                url: "/OperationsManager/data/alert",
                type: "POST",
                data: JSON.stringify({
                    "classId": "Microsoft.Windows.Library!Micr…ft.Windows.Server.DC.Computer",
                    "objectIds": { }),

プロパティ classId に指定したのと同じクラスのオブジェクトのサブセットを含むグループを指定するにはobjectIds 値を変更し グループの GUID を指定します。 値は引用符で囲む必要があります。

<!DOCTYPE HTML>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript">
        var criticalCounter = 0;
        var informationCounter = 0;
        var warningCounter = 0;

        window.onload = function () {
            $.ajax({
                url: "/OperationsManager/data/alert",
                type: "POST",
                data: JSON.stringify({
                    "classId": null,
                    "objectIds": { "3c8ac4f3-475e-44dd-4163-8a97af363705": -1 }),

ターゲット クラスと必要に応じてグループを指定して結果をさらに範囲指定したら、1 つ以上のプロパティの値に従って表示するデータの種類を制限する条件を指定できます。

ウィジェットの例

ウィジェットでは、次のグラフの種類の監視データのレンダリングがサポートされています。

  • 横棒グラフ (状態データ)
  • スプライン グラフ (パフォーマンス データ)
  • 横棒グラフ (アラート データ)
  • 円グラフと 3D 円グラフ
  • ドーナツと 3D ドーナツ
  • 組み合わせグラフ
  • 積み上げ横棒グラフ

状態、パフォーマンス、およびアラート データを表示するようにグラフの種類を構成できます。 次の各例では、特定の解決状態に一致する重大度に対して、Windows コンピューター グループからのアラートが返されます。

必要なタブを選択して、それぞれのグラフの種類の HTML コードを表示します。

次の HTML コードは、状態データを含む横棒グラフのレンダリングを示しています。

<!DOCTYPE HTML>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript">
        var criticalCounter = 0;
        var healthyCounter = 0;
        var warningCounter = 0;
        var unmonitoredCounter = 0;

        window.onload = function () {
            $.ajax({
                url: "/OperationsManager/data/state",
                type: "POST",
                data: JSON.stringify({
                    "classId": "System.Library!System.Computer",
                    "objectIds": {
                        // Key value pairs => id: 0 (For objects)/-1 (For groups)
                        "1d62280e-f437-1369-316b-1e8659500e9a": -1
                    },
                    "criteria": "((HealthState = '0') OR (HealthState = '1') OR (HealthState = '2') OR (HealthState = '3') OR HealthState is null)",
                    "displayColumns": [
                        "healthstate",
                        "displayname",
                        "path",
                        "maintenancemode"
                    ]
                }),
                success: function (result) {
                    for (var i = 0; i < result.rows.length; i++) {
                        switch (result.rows[i].healthstate) {
                            case "critical":
                                criticalCounter++;
                                break;
                            case "healthy":
                                healthyCounter++;
                                break;
                            case "warning":
                                warningCounter++;
                                break;
                            case "unmonitored":
                                unmonitoredCounter++;
                                break;
                        }
                    }
                    renderChart();
                }
            });
        }

        function renderChart() {
            var chart = new CanvasJS.Chart("chartContainer", {
                title: {
                    text: "Health State of Windows Computers"
                },
                data: [{
                    type: "column",
                    dataPoints: [
                        { y: criticalCounter, label: "Critical", color: "Red" },
                        { y: healthyCounter, label: "Healthy", color: "Green" },
                        { y: warningCounter, label: "Warning", color: "Yellow" },
                        { y: unmonitoredCounter, label: "Unmonitored", color: "Gray" }
                    ]
                }]
            });
            chart.render();
        }
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/canvasjs/1.7.0/canvasjs.min.js"></script>
    <title>CanvasJS Example</title>
</head>

<body>
    <div id="chartContainer" style="height: 400px; width: 100%;"></div>
</body>

</html>

ダッシュボードにウィジェットを追加する

  1. 任意のコンピューターで Web ブラウザーを開き、「 http://<web host>/OperationsManager」と入力します。 web ホスト は、Web コンソールをホストしているコンピューターの名前です。

  2. Web コンソールの左側のウィンドウで、 + 新しいダッシュボードを選択します。

    Web コンソールの [新しいダッシュボード] を示すスクリーンショット。

  3. 新しいダッシュボードの作成ページで、作成するダッシュボードの名前と説明を入力します。

    新しいダッシュボードの名前と説明の指定を示すスクリーンショット。

  4. Management Pack ドロップダウン リストから管理パックを選択すると、既存の封印されていない管理パックにダッシュボードを保存できます。または、管理パックドロップダウン リストの横にある New を選択して新しい管理パックを作成してダッシュボードを保存し、名前、説明、および必要に応じてバージョン番号を指定できます。

    新しい MP の名前と説明の指定を示すスクリーンショット。

  5. 新しいダッシュボードを保存する場所を指定したら、 OKを選択します。

  6. 新しいダッシュボードの名前と説明を指定した後、 保存 を選択します。

  7. 空の空のダッシュボードには、ダッシュボード名 [ウィジェットの追加]、[ ダッシュボードの編集]、[ダッシュボードの削除 ]、[ 表示] のページの上部に表示 オプションが表示されます。

    新しいダッシュボード キャンバスを示すスクリーンショット。

  8. 選択ウィジェットドロップダウン リストから Custom Widget を選択します。

  9. [カスタム ウィジェット] ウィンドウで、前の例のいずれかを使用して HTML コードを追加するウィジェットの条件を選択し、サポートされているグラフの視覚化のいずれかで監視データを視覚化します。

    ダッシュボードのカスタム ウィジェットの構成を示すスクリーンショット。

  10. ウィジェットの NameDescription、および Widget の更新間隔 (既定の間隔は 5 分) を指定して、構成を完了します。 [ウィジェット 保存] を選択 新しいダッシュボードを保存します。

ウィジェットが作成されると、HTML コードの出力が表示されます。

ダッシュボードのタイル ウィジェットの完成した例を示すスクリーンショット。