Informazioni di riferimento sulle API REST di Operations Manager

System Center Operations Manager offre il monitoraggio flessibile ed economicamente conveniente dell'infrastruttura, che permette di assicurare prestazioni e disponibilità prevedibili delle applicazioni cruciali e dei servizi dell'infrastruttura. Operations Manager offre un monitoraggio completo per il data center controllando l'integrità, le prestazioni e la disponibilità di tutti gli oggetti monitorati nell'ambiente e contribuendo a identificare i problemi per la risoluzione rapida. Per una panoramica più dettagliata, vedere la pagina del prodotto System Center Operations Manager.

Nota

Operations Manager 2019 UR1 supporta i token di richiesta intersito falsa (CSRF, Cross-Site Request Forgery) per impedire gli attacchi CSRF. Se si usa Operations Manager 2019 UR1, è necessario inizializzare il token CSRF. Gli script HTML non funzionano se i token CSRF non vengono inizializzati.

Inizializzare il token CSRF

Azione obbligatoria, applicabile per Operations Manager 2019 UR1.

  1. Nell'intestazione HTML del dashboard aggiungere il codice seguente:
            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. Nella funzione onload modificare il valore dell'intestazione in requestHeaders.

Esempio:

Inizializzare l'esempio di token CSRF

Esempio di PowerShell per l'API REST di Operations Manager

#Set Headers for the request
$userName ="domain\username";
$password ="Password";
$AuthenticationMode= "Network"
$scomHeaders = New-Object “System.Collections.Generic.Dictionary[[String],[String]]”
$scomHeaders.Add('Content-Type','application/json; charset=utf-8')
$bodyraw = "($AuthenticationMode):$($userName):$($password)”
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($bodyraw)
$EncodedText =[Convert]::ToBase64String($Bytes)
$jsonbody = $EncodedText | ConvertTo-Json

$uriBase = 'http://<scomserver>/OperationsManager'

#Authenticate
$auth = Invoke-WebRequest -Method POST -Uri $uriBase/authenticate -Headers $scomheaders -body $jsonbody -UseDefaultCredentials -SessionVariable $websession 
#Include CSRF Token
$csrfTocken = $websession.Cookies.GetCookies($uriBase) | ? { $_.Name -eq 'SCOM-CSRF-TOKEN' }
$scomHeaders.Add('SCOM-CSRF-TOKEN', [System.Web.HttpUtility]::UrlDecode($csrfTocken.Value))

#Examples to Invoke the required SCOM API

#Data/alertDescription/{alertid}
$alertid="6A88FBC1-0EDC-4173-9BB1-30FFEC296672"
$uri = "$uriBase/data/alertDetails"
$Response = Invoke-WebRequest -Uri "$uriBase/data/alertDetails/$alertid" -Headers $scomheaders -Method Get -WebSession $websession
$Response.Content | Convertto-json



#Criteria: Enter the displayname of the SCOM object
$Criteria = "DisplayName LIKE '%SQL%'"
#Convert our criteria to JSON format
$JSONBody = $Criteria | ConvertTo-Json
$Response = Invoke-WebRequest -Uri "$uriBase/data/class/monitors" -Method Post -Body $JSONBody -WebSession $WebSession
$Response.Content | Convertto-json


#Data Request in JSON Format
$dashboardbody='
{
  "refreshing": false,
  "Name": "TestAPIDashboard",
  "path": "35b6eba3-6202-8738-a47f-16acf476230f"
}'
$response = Invoke-WebRequest -Uri "$uriBase/monitoring/dashboard" -Headers $scomheaders -Method POST -Body $dashboardbody -ContentType "application/json" -UseDefaultCredentials -WebSession $websession