NetWorker: REST API – Felsöknings- och prioriteringsmanual
Sammanfattning: Den här kunskapsbasartikeln innehåller en översikt över grundläggande felsökning för RESTAPI-relaterade problem.
Instruktioner
Titta på YouTube
Ytterligare information
Komma igång
Representational State Transfer (REST) Application Programming Interface (API) ger programmatisk åtkomst till NetWorker-dataskyddstjänsten. Med hjälp av REST API kan NetWorker-användare skapa klientprogram för att automatisera NetWorker-åtgärder. NetWorker REST API installeras som en del av NetWorker-serverinstallationen i samma Apache tomcat-container som NetWorker-autentiseringstjänsterna. Autentiseringen görs med samma inloggningsuppgifter som används för NetWorker-hanteringskonsolen.
REST API tillåter interaktion med resurser som identifieras av URI-adresser (Uniform Resource Identifier). Den använder HTTP-verb (HEAD, GET, PUT, POST, DELETE) för att interagera med URI:n (Uniform Resource Identifier) på ett tillståndslöst sätt. Servern innehåller inget klienttillstånd, utan varje meddelande är självbeskrivande.
Det här dokumentet handlar om interaktionen med NetWorker-resurser med hjälp av användarskrivna REST API-anrop. Ska inte förväxlas med REST API-anrop som används av NetWorker-åtgärder i serverdelen.
Ansluta till NetWorker:
Det finns flera olika REST API-klienttekniker som kan användas för att köra kommandona för att ansluta till NetWorker. Inklusive curl kommandon (Linux), PowerShell curl.exe (Windows) och REST API-klientwebbläsartillägg.
Det finns tre rubriker som behövs för anslutningen:
- Innehållstyp:
application/json - Acceptera:
application/json - Autentisering: Grundläggande med Base 64-kodat användarnamn och lösenord
I miljöer där flera NetWorker-datazoner autentiseras via en enda NetWorker AUTHC-server krävs ytterligare en rubrik:
X-NW-AUTHC-BASE-URL:AUTHC_HOSTNAME_OR_IP:AUTHC_PORT
NetWorker REST API exponeras i följande bas-URI:
https://[nw-server-hostname]:9090/nwrestapi/v3
Det finns olika versioner av API:er. Förbättringar har distribuerats sedan REST-API:et först implementerades. Ändringar av dessa slutpunkter beskrivs i: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md
Det fullständiga json-schemat finns på:
https://[nw-server-hostname]:9090/nwrestapi/v3/schemas/swagger.json
| Framgångskod | Gäller för HTTP-metod | Innehåll i svarstext | Beskrivning |
| 200 | FÅ | Resursrepresentation | OK. De åtgärder som resulterar i det här HTTP-tillståndet har resursrepresentationen i nyttolasten. |
| 201 | INLÄGG | Tomt svar | Skapad. Den här statusen anger att en ny resurs eller ett avsett jobb har skapats och att dess associerade URL är tillgänglig från platsrubriken i svaret. |
| 202 | INLÄGG | Information som svar | Accepterade. Detta indikerar att API-begäran har godkänts. Nyttolasten anger att URL:en till spårningsresursinstansen är tillgänglig från platsrubriken i svaret. |
| 204 | PUT eller DELETE | Tomt svar | Inget innehåll. Tillståndet anger att den utförda åtgärden lyckades. Det finns dock inga ytterligare detaljer att lämna. |
| Felkod | Beskrivning |
| 400 | Felaktig begäran |
| 401 | Ogiltiga autentiseringsuppgifter |
| 403 | Otillräckliga privilegier |
| 404 | Resursen hittades inte |
| 405 | Metoden är inte tillåten |
| 406 | Ogiltigt språk har angetts. |
| 500 | Internt serverfel |
REST API-funktioner
| HTTP-metod | Åtgärd | Beskrivning |
| FÅ | Läsa | Hämtar resursrepresentationen. |
| INLÄGG | Skapa | Skapar en ny resurs. |
| SÄTTA | Uppdatera | Uppdaterar en befintlig resurs. |
| TA BORT | Ta bort | Tar bort en befintlig resurs. |
Några exempel:GET:
Visa en lista över alla klienter.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
Endast en klient, som bara visar tre fält (hostname, saveSets och protectionGroups)
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=hostname,saveSets,protectionGroups&q=hostname:nwserver121
Visa en lista över de skyddsgrupper som en klient finns i.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=protectionGroups&q=hostname:nwserver121
Visa aktuella varningar.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/alerts
Visa de senaste misslyckade jobben.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/jobs?q=completionStatus:"Failed"&fl=clientHostname,startTime,name,message
Visa en lista över arbetsflödena i en princip (med namnet WinFS i det här exemplet).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/WinFS/workflows
Visa endast en lista över egenskaperna för en sparuppsättningsinstans (enligt definitionen i klientens värdnamn och uppsättning för sparade uppsättningar).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?q=hostname:vm-lego-231 and saveSets:"/etc"
INLÄGG:
Starta en arbetsflödesåtgärd.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/Angela/workflows/WinFS/op/backup
JSON Body:
{
}
Skapa en ny klientinstans (med standardvärden för alla egenskaper utom de fyra i listan).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
JSON Body
{
"hostname": "vm-lego-231",
"backupType": "Filesystem",
"saveSets": [ "/etc" ],
"protectionGroups" : [ "LinuxFS" ]
Kommandoradsexempel:
Linux:
För system som har python Installerat:
curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | python -m json.tool
jq Installerat:
curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | jq
[root@nsr ~]# curl -k -u Administrator https://nsr.amer.lan:9090/nwrestapi/v3/global/devices/ddve01.amer.lan_VMBackupDevice01 | jq
Enter host password for user 'Administrator':
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2820 0 2820 0 0 72307 0 --:--:-- --:--:-- --:--:-- 72307
{
"accessWeight": 1,
"accesses": "66",
"activeSessions": [],
"autoMediaManagement": false,
"autoRecoverDtf": "None",
"cdi": "NotUsed",
"cleaningRequired": false,
"consecutiveErrors": "0",
"currentNSRMMDCount": "1",
"dataDomainFibreChannel": false,
"dataDomainRetentionLockMode": "None",
"deviceAccessInfo": "ddve01.amer.lan:/nsr/VMBackupDevice01",
"deviceBlockSize": "HandlerDefault",
"dltWormCapable": false,
"idleDeviceTimeout": 0,
"jukeboxDevice": "No",
"links": [
{
"href": "https://nsr.amer.lan:9090/nwrestapi/v3/global/devices/ddve01.amer.lan_VMBackupDevice01/opstatus",
"title": "Volume operation status"
},
{
"href": "https://nsr.amer.lan:9090/nwrestapi/v3/global/devices/ddve01.amer.lan_VMBackupDevice01/op/label",
"title": "Label volume"
},
{
"href": "https://nsr.amer.lan:9090/nwrestapi/v3/global/devices/ddve01.amer.lan_VMBackupDevice01/op/mount",
"title": "Mount volume"
},
{
"href": "https://nsr.amer.lan:9090/nwrestapi/v3/global/devices/ddve01.amer.lan_VMBackupDevice01/op/unmount",
"title": "Unmount volume"
},
{
"href": "https://nsr.amer.lan:9090/nwrestapi/v3/global/devices/ddve01.amer.lan_VMBackupDevice01/op/verifylabel",
"title": "Verify volume label"
},
{
"href": "https://nsr.amer.lan:9090/nwrestapi/v3/global/devices/ddve01.amer.lan_VMBackupDevice01/op/erase",
"title": "Erase the device"
},
{
"href": "https://nsr.amer.lan:9090/nwrestapi/v3/global/volumes/4267924096",
"title": "Volume"
}
],
"longVolumeId": "703cdc60-00000005-fe635a80-66635a80-00045000-592bbe56",
"maxConsecutiveErrors": 20,
"maxNsrmmdCount": 4,
"maxSession": 60,
"mediaFamily": "Disk",
"mediaType": "Data Domain",
"message": "mounted Data Domain disk VMBackupPool.001",
"mountedVolume": "VMBackupPool.001",
"name": "ddve01.amer.lan_VMBackupDevice01",
"ndmp": false,
"operationParameters": [],
"password": "*******",
"pathId": "53f9269d-00000010-e2f994bd-66635a7e-00035000-592bbe56",
"readOnly": false,
"remoteUser": "ddboost",
"reserveRelease": "None",
"resourceId": {
"id": "178.0.90.20.0.0.0.0.196.80.99.102.192.168.9.150",
"sequence": 256
},
"saveLockout": 0,
"saveMountTimeout": 30,
"secureMultiTenancy": false,
"sharedDevices": "Done",
"statistics": [
"elapsed = 17310",
"errors = 0",
"last rate = 0",
"max clients = 0",
"file marks = 0",
"rewinds = 0",
"files skipped = 0",
"records skipped = 0",
"current file = 0",
"current record = 0",
"seek files = 0",
"seek records = 0",
"estimated kb = 0",
"amount kb = 0",
"file amount kb = 0",
"sessions = 0"
],
"status": "Enabled",
"suspectedDevice": false,
"tapeAlertsCritical": [],
"tapeAlertsInformation": [],
"tapeAlertsWarning": [],
"targetSession": 20,
"unlabeledVolumeLoaded": false,
"verifyLabelOnEject": false,
"volumeBlockSize": "256 KB",
"volumeCurrentCapacity": "0 KB",
"volumeErrorNumber": "0",
"volumeExpiration": "Sun Jun 7 15:07:44 2026",
"volumeId": "4267924096",
"volumeLabel": "VMBackupPool.001",
"volumePool": "VMBackupPool",
"warnOnSuspectVolumesInPercent": 80,
"wormCapable": false,
"wormCartridgePresent": false,
"writeEnabled": true
}
[root@nsr ~]#
Windows (PowerShell):
curl.exe -k -u Administrator:'ADMISTRATOR_PASSWORD' "https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT" | ConvertFrom-Json | ConvertTo-Json -Depth 50
Exempel:
PS C:\Users\Administrator.NETWORKER> curl.exe -k -u Administrator:'!Password1' "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/devices/dd3300-ff28_Backup" | ConvertFrom-Json | ConvertTo-Json -Depth 50
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2824 0 2824 0 0 20311 0 --:--:-- --:--:-- --:--:-- 21074
{
"accessWeight": 1,
"accesses": "45",
"activeSessions": [
],
"autoMediaManagement": false,
"autoRecoverDtf": "None",
"cdi": "NotUsed",
"cleaningRequired": false,
"consecutiveErrors": "0",
"currentNSRMMDCount": "1",
"dataDomainFibreChannel": false,
"dataDomainRetentionLockMode": "None",
"deviceAccessInfo": "dd3300-ff28:/win-srvr02/Backup",
"deviceBlockSize": "HandlerDefault",
"dltWormCapable": false,
"idleDeviceTimeout": 0,
"jukeboxDevice": "No",
"links": [
{
"href": "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/devices/dd3300-ff28_Backup/opstatus",
"title": "Volume operation status"
},
{
"href": "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/devices/dd3300-ff28_Backup/op/label",
"title": "Label volume"
},
{
"href": "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/devices/dd3300-ff28_Backup/op/mount",
"title": "Mount volume"
},
{
"href": "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/devices/dd3300-ff28_Backup/op/unmount",
"title": "Unmount volume"
},
{
"href": "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/devices/dd3300-ff28_Backup/op/verifylabel",
"title": "Verify volume label"
},
{
"href": "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/devices/dd3300-ff28_Backup/op/erase",
"title": "Erase the device"
},
{
"href": "https://win-srvr02.networker.lan:9090/nwrestapi/v3/global/volumes/3963713",
"title": "Volume"
}
],
"longVolumeId": "0aea479c-00000005-003c7b41-693c7b41-00025000-e6b5bb56",
"maxConsecutiveErrors": 20,
"maxNsrmmdCount": 4,
"maxSession": 60,
"mediaFamily": "Disk",
"mediaType": "Data Domain",
"message": "writing, done",
"mountedVolume": "win_srvr02.networker.lan.dddefault.001",
"name": "dd3300-ff28_Backup",
"ndmp": false,
"operationParameters": [
],
"password": "*******",
"pathId": "a30a7858-00000010-5ded760e-693c7b41-00015000-e6b5bb56",
"readOnly": false,
"remoteUser": "loudekboost",
"reserveRelease": "None",
"resourceId": {
"id": "176.0.164.7.0.0.0.0.69.121.60.105.192.168.0.22",
"sequence": 100
},
"saveLockout": 0,
"saveMountTimeout": 30,
"secureMultiTenancy": false,
"sharedDevices": "Done",
"statistics": [
"elapsed = 228514",
"errors = 0",
"last rate = 0",
"max clients = 0",
"file marks = 0",
"rewinds = 0",
"files skipped = 0",
"records skipped = 0",
"current file = 0",
"current record = 0",
"seek files = 0",
"seek records = 0",
"estimated kb = 0",
"amount kb = 0",
"file amount kb = 52206",
"sessions = 0"
],
"status": "Enabled",
"suspectedDevice": false,
"tapeAlertsCritical": [
],
"tapeAlertsInformation": [
],
"tapeAlertsWarning": [
],
"targetSession": 20,
"unlabeledVolumeLoaded": false,
"verifyLabelOnEject": false,
"volumeBlockSize": "256 KB",
"volumeCurrentCapacity": "0 KB",
"volumeErrorNumber": "0",
"volumeExpiration": "Sun Dec 12 15:29:53 2027",
"volumeId": "3963713",
"volumeLabel": "win_srvr02.networker.lan.dddefault.001",
"volumePool": "Data Domain Default",
"warnOnSuspectVolumesInPercent": 80,
"wormCapable": false,
"wormCartridgePresent": false,
"writeEnabled": true
}
Obligatorisk information för support
Miljö:
- NetWorker-servernamn
- NetWorker-version och build-nummer
- Typ och version av NetWorker-värdoperativsystemet
hostname
strings /usr/sbin/nsrd | grep -i "(#)"
cat /etc/*release
uname -a
Windows:
nsrwatch
Information om problemet:
- Förklara vilken REST API-åtgärd som utförs (GET, POST, PUT, DELETE), den URI som används, eventuellt JSON-brödtextinnehåll (om tillämpligt).
- REST API-svarskod och eventuella felmeddelanden.
- Har den första anslutningen och auktoriseringen lyckats mellan REST API-klienten och NetWorker?
Logginsamling:
- Återges daemon.raw loggfil från NetWorker-servern:
- Linux:
/nsr/logs/daemon.raw - Windows:
C:\Program Files\EMC NetWorker\nsr\logs\daemon.raw - NetWorker: Så här använder du nsr_render_log
- Linux:
- REST API-loggar från NetWorker-servern:
/nsr/logs/restapi(Linux) ellerEMC NetWorker\nsr\logs\restapi(Windows) - Information om autentiseringsproblem finns i standardinloggningen för NetWorker-autentisering
/nsr/authc/logs(Linux) eller..\EMC NetWorker\nsr\authc-server\tomcat\logs(Windows)
Debug:
Prestanda:
Innan du utvärderar REST API-prestandarelaterade problem är det viktigt att avgöra om problemet observeras på alla REST API-funktioner eller specifika funktioner. Till exempel kan GET-begäranden på globala slutpunkter, till exempel klienter, jobb, volymer och så vidare, hämta mycket data. Dessa typer av begäranden kan resultera i hög systemresursanvändning och tidsgränser.
Se: NetWorker REST API: HTTP GET-begäranden överskrider ibland tidsgränsen
När prestandaproblem observeras på stora globala slutpunkter rekommenderar vi att du använder "frågelistfilter" (q) eller "fältlistefilter" (fl) för att minska de uppgifter som returneras till den specifika information som behövs. Ovanstående KB innehåller information om de här inställningarna och ytterligare information finns i REST API Developer Guide: Dell Technologies-utvecklare
Om problemet är REST API-prestandarelaterat kan du använda följande alternativ för att spåra resursförbrukningen för nsrtomc+-processen som används av API-anrop.
Linux:
top -b | awk '/nsrtomc+/ {print strftime("%Y-%m-%d-%H:%M:%S", systime()), $0}'
Dessa utdata visar topputdata av standardtyp, men med tidsstämplar som kan läsas av människor. Detta kan användas för att granska processor- och minnesförbrukningen efter processen och hur länge den stannade i ett visst tillstånd när ett REST-anrop gjordes. Detta kan jämföras med restapi.log- och AUTHC-loggarna för att se vilka anrop som har gjorts och hur ofta.
Windows:
För Windows-servrar måste du installera något i stil med "Prestandaövervakaren:
- Öppna Prestandaövervakaren som administratör.
- I den vänstra rutan expanderar du Övervakningsverktyg och väljer Prestandaövervakaren.
- Högerklicka i den högra rutan och välj Ta bort alla räknare.
- Högerklicka i den högra rutan och välj Lägg till räknare.
- Under Tillgängliga räknare expanderar du Minne, väljer % Commit Bytes och klickar på Add.
- Under Minne väljer du Tillgängliga byte och klickar på Lägg till.
- Under Available Counters expanderardu Process och väljer % Processor Time och under Instances of Selected object väljer du den första Java-posten och klickar på Add.
- Under Tillgängliga räknare expanderardu Processorinformation och väljer % processorverktyg och klickar på Lägg till.
- De tillagda räknarna i den högra rutan bör visa:

- Klicka på OK. Högerklicka på Prestandaövervakaren och klicka på New-Data> Collector Set.
- Ange ett namn, till exempel:
RESTAPI_MON. - På platsskärmen klickar du på Nästa, såvida du inte väljer att ange en alternativ utdataplats.
- Välj Spara och stäng och klicka på Slutför.
- I den vänstra rutan under Data Collector Sets-User> Defined öppnar du
RESTAPI_MONegenskaper och välj Kommaavgränsad som loggformat, klicka på OK.

- I den vänstra rutan, under Datainsamlaruppsättningar-användardefinierade,>väljer du RESTAPI_MON datainsamlaruppsättning och klickar på Start (uppspelningsknapp)
- Om standardutdataplatsen användes visas den .csv filen under
C:\PerfLogs\Admin\RESTAPI_MON. - När problemet har observerats och registrerats i utdatafilen kan du stoppa övervakningsklicket genom att klicka på Stoppa under Data Collector Sets-User Defined.