Dokumentacja interfejsu API REST programu Operations Manager

Program System Center Operations Manager udostępnia elastyczne i ekonomiczne funkcje monitorowania infrastruktury, które pomagają zapewnić przewidywalną wydajność oraz dostępność krytycznych aplikacji i usług infrastruktury. Program Operations Manager oferuje kompleksowe monitorowanie centrum danych, sprawdzając kondycję, wydajność i dostępność wszystkich monitorowanych obiektów w danym środowisku oraz pomagając zidentyfikować problemy dotyczące szybkiego rozwiązywania problemów. Aby uzyskać bardziej szczegółowe omówienie, zobacz stronę produktu System Center Operations Manager.

Uwaga

Program Operations Manager 2019 UR1 obsługuje tokeny fałszowania żądań między lokacjami (CSRF), aby zapobiec atakom CSRF. Jeśli używasz programu Operations Manager 2019 UR1, musisz zainicjować token CSRF. Skrypty HTML nie działają, jeśli tokeny CSRF nie są inicjowane.

Inicjowanie tokenu CSRF

Wymagana akcja, dotyczy programu Operations Manager 2019 UR1.

  1. W nagłówku HTML pulpitu nawigacyjnego dodaj następujący kod:
            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. W funkcji onload zmień wartość nagłówka na requestHeaders.

Przykład:

Inicjowanie przykładu tokenu CSRF

Przykład programu PowerShell interfejsu API REST programu 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