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

重要

このバージョンの Operations Manager はサポート終了に達しました。 Operations Manager 2022 にアップグレードすることをお勧めします。

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 をまだ確認していない場合は、 この API の概要 に関する情報を確認してください。

スクリプトの構造

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

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

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

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

  • alert は監視アラートです
  • 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

alert または performance ではなく、state データにのみ当てはまります。 パフォーマンス データの場合は、グループまたは監視対象オブジェクトを指定します。

<!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 ドーナツ
  • 複合グラフ
  • 積み上げ横棒グラフ

state、performance、alert データを表示するグラフの種類を構成することができます。 次の各例では、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」と入力します。http://<web host>/OperationsManager は、Web コンソールをホストしているコンピューターの名前です。

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

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

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

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

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

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

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

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

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

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

  8. [ ウィジェット の選択] ドロップダウン リストから [カスタム ウィジェット] を選択 します。

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

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

  10. ウィジェットの [名前][説明][Widget refresh interval](ウィジェット更新間隔) (既定の間隔は 5 分) を入力して、構成を完了します。 [ ウィジェットの保存] を 選択して、新しいダッシュボードを保存します。

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

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