NetWorker: Fejlfindings- og prioriteringsvejledning til REST API
Oversigt: Denne KB indeholder en oversigt over grundlæggende fejlfinding af RESTAPI-relaterede problemer.
Instruktioner
Se på YouTube
Flere oplysninger
Kom godt i gang
REST (Representational State Transfer) Application Programming Interface (API) giver programmeringsmæssig adgang til NetWorker-databeskyttelsestjenesten. Ved hjælp af REST API kan NetWorker-brugere bygge klientprogrammer for at automatisere NetWorker-handlinger. NetWorker REST API installeres som en del af NetWorker-serverinstallationen i den samme Apache tomcat-beholder som NetWorker-godkendelsestjenesterne. Godkendelse udføres ved hjælp af de samme legitimationsoplysninger, som bruges til NetWorker Management Console.
REST API muliggør interaktion med ressourcer, der er identificeret ved URI-adresser (Uniform Resource Identifier). Det bruger HTTP-verber (HEAD, GET, PUT, POST, DELETE) til at interagere med Uniform Resource Identifier (URI) på en statsløs måde. Serveren indeholder ingen klienttilstand, og hver meddelelse er selvbeskrivende.
Dette dokument omhandler interaktionen med NetWorker-ressourcer ved hjælp af brugerskrevne REST API-kald. Ikke at forveksle med REST API-kald, der bruges af backend NetWorker-handlinger.
Opretter forbindelse til NetWorker:
Der er flere forskellige REST API-klientteknologier, som kan bruges til at køre kommandoerne for at oprette forbindelse til NetWorker; Herunder curl kommandoer (Linux), PowerShell curl.exe (Windows) og browserudvidelser til REST API-klienter.
Der kræves tre overskrifter til tilslutning:
- Indholdstype:
application/json - Acceptere:
application/json - Godkendelse: Basic med Base 64-kodet brugernavn og adgangskode
I miljøer, hvor der er flere NetWorker-datazoner, der er godkendt via en enkelt NetWorker AUTHC-server, kræves der en ekstra header:
X-NW-AUTHC-BASE-URL:AUTHC_HOSTNAME_OR_IP:AUTHC_PORT
NetWorker REST API vises i følgende basis-URI:
https://[nw-server-hostname]:9090/nwrestapi/v3
Der findes forskellige versioner af API'er. Forbedringer er blevet udrullet, siden REST API oprindeligt blev implementeret. Ændringer af disse slutpunkter er beskrevet i: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md
Det fulde json-skema er tilgængeligt på:
https://[nw-server-hostname]:9090/nwrestapi/v3/schemas/swagger.json
| Succeskode | Gælder for HTTP-metode | Respons kropsindhold | Beskrivelse |
| 200 | FÅ | Ressourcerepræsentation | OK. De handlinger, der resulterer i denne HTTP-tilstand, har ressourcerepræsentationen i nyttelasten. |
| 201 | INDLÆG | Tomt svar | Lavet. Denne status angiver, at der er oprettet en ny ressource eller et tilsigtet job, og at den tilknyttede URL-adresse er tilgængelig fra placeringsoverskriften i svaret. |
| 202 | INDLÆG | Detaljer som svar | Accepteret. Dette angiver, at API-anmodningen er blevet accepteret. Nyttedataene angiver, at URL-adressen til sporingsressourceforekomsten er tilgængelig fra placeringsoverskriften i svaret. |
| 204 | SÆT eller SLET | Tomt svar | Intet indhold. Staten angiver, at den udførte operation var vellykket. Der er dog ingen yderligere detaljer, der skal gives. |
| Fejlkode | Beskrivelse |
| 400 | Ugyldig anmodning |
| 401 | Ugyldige legitimationsoplysninger |
| 403 | Utilstrækkelige rettigheder |
| 404 | Ressourcen blev ikke fundet |
| 405 | Metode ikke tilladt |
| 406 | Ugyldig landestandard er angivet. |
| 500 | Intern serverfejl |
REST API-funktioner
| HTTP-metode | Handling | Beskrivelse |
| FÅ | Læse | Får ressourcerepræsentationen. |
| INDLÆG | Opret | Opretter en ny ressource. |
| SÆTTE | Opdater | Opdaterer en eksisterende ressource. |
| SLETTE | Fjern | Sletter en eksisterende ressource. |
Nogle eksempler:
GET:
Angiv alle klienter.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
Kun én klient, der kun viser tre felter (værtsnavn, saveSets og protectionGroups)
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=hostname,saveSets,protectionGroups&q=hostname:nwserver121
Angiv de beskyttelsesgrupper, som en klient er i.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=protectionGroups&q=hostname:nwserver121
Vis aktuelle advarsler.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/alerts
Vis de seneste mislykkede job.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/jobs?q=completionStatus:"Failed"&fl=clientHostname,startTime,name,message
Angiv arbejdsprocesserne i én politik (kaldet WinFS i dette eksempel).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/WinFS/workflows
Angiv kun egenskaberne for én forekomst af gemt sæt (som defineret af klientens værtsnavn og gemmesæt).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?q=hostname:vm-lego-231 and saveSets:"/etc"
INDLÆG:
Start en arbejdsgangshandling.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/Angela/workflows/WinFS/op/backup
JSON Body:
{
}
Opret en ny klientforekomst (med standardværdier for alle ejendomme undtagen de fire, der er angivet).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
JSON Body
{
"hostname": "vm-lego-231",
"backupType": "Filesystem",
"saveSets": [ "/etc" ],
"protectionGroups" : [ "LinuxFS" ]
Eksempler på kommandolinjer:
Linux:
For systemer, der har python Installeret:
curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | python -m json.tool
jq Installeret:
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
Eksempel:
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
}
Påkrævede oplysninger til support
Miljø:
- NetWorker-servernavn
- NetWorker-version og buildnummer
- NetWorker-serverværtens operativsystemtype og -version
hostname
strings /usr/sbin/nsrd | grep -i "(#)"
cat /etc/*release
uname -a
Windows:
nsrwatch
Problemoplysninger:
- Forklar, hvilken REST API-handling der udføres (GET, POST, PUT, DELETE), den anvendte URI, eventuelt JSON-brødtekstindhold (hvis relevant).
- REST API-svarkode og eventuelle fejlmeddelelser.
- Er den indledende forbindelse og godkendelse lykkedes mellem REST API-klienten og NetWorker?
Logindsamling:
- Gengivet daemon.raw logfil fra NetWorker-serveren:
- Linux:
/nsr/logs/daemon.raw - Windows:
C:\Program Files\EMC NetWorker\nsr\logs\daemon.raw - NetWorker: Sådan bruger du nsr_render_log
- Linux:
- REST API-logfiler fra NetWorker-serveren:
/nsr/logs/restapi(Linux) ellerEMC NetWorker\nsr\logs\restapi(Windows) - For godkendelsesproblemer henvises til NetWorker-standardgodkendelse, når du logger på
/nsr/authc/logs(Linux) eller..\EMC NetWorker\nsr\authc-server\tomcat\logs(Windows)
Debug:
Ydeevne:
Før du vurderer problemer relateret til REST API-ydeevne, er det vigtigt at afgøre, om problemet er observeret på alle REST API-funktioner eller specifikke funktioner. For eksempel kan GET-anmodninger på globale slutpunkter som klienter, job, mængder osv. trække en masse data. Disse typer anmodninger kan resultere i høj systemressourceudnyttelse og timeouts.
Se: NetWorker REST-API: HTTP GET-anmodninger får periodisk timeout
Når der observeres problemer med ydeevnen på store globale slutpunkter, anbefales det at bruge "forespørgselslistefilter" (q) eller "feltlistefilter" (fl) for at reducere de returnerede data til specifikke oplysninger, der er nødvendige. Ovenstående KB beskriver disse indstillinger og yderligere oplysninger i REST API Developer Guide: Dell Technologies-udvikler
Hvis problemet er relateret til REST API-ydeevne, kan du bruge følgende indstillinger til at spore ressourceforbruget for den nsrtomc+-proces, der bruges af API-kald.
Linux:
top -b | awk '/nsrtomc+/ {print strftime("%Y-%m-%d-%H:%M:%S", systime()), $0}'
Dette output viser standard topoutput, men med tidsstempler, der kan læses af mennesker. Dette kan bruges til at gennemgå CPU- og hukommelsesforbruget efter processen, og hvor længe den forblev i en bestemt tilstand, da der blev foretaget et REST-opkald. Dette kan sammenlignes med restapi.log- og AUTHC-logfilerne for at se, hvilke opkald der blev foretaget og hvor ofte.
Windows:
For Windows-servere skal du installere noget som "Performance Monitor:
- Åbn Ydelsesmåler som administrator.
- Udvid Overvågningsværktøjer i venstre rude, og vælg Performance Monitor.
- Højreklik inde i højre rude, og vælg Fjern alle tællere.
- Højreklik inde i højre rude, og vælg Tilføj tællere.
- Udvid Hukommelse under Tilgængelige tællere, vælg % commit bytes, og klik på Tilføj.
- Vælg Tilgængelige bytes under Hukommelse, og klik på Tilføj.
- Udvid Proces under Tilgængelige tællere, og vælg % processortid, og vælg den første Java-post under Forekomster af markeret objekt, og klik på Tilføj.
- Udvid Processoroplysninger under Tilgængelige tællere, og vælg % processorværktøj, og klik på Tilføj.
- De tilføjede tællere i højre rude skal vise:

- Klik på OK. Højreklik på Ydelsesmåler, og klik på >Nyt dataindsamlersæt.
- Angiv f.eks. et navn:
RESTAPI_MON. - Klik på Næste på placeringsskærmen, medmindre du vælger at angive en alternativ outputplacering.
- Vælg Gem og luk , og klik på Udfør.
- I venstre rude under Data Collector Sets -> User Defined skal du åbne
RESTAPI_MON, og vælg Kommasepareret som logformat, klik på OK.

- I venstre rude under Data Collector Sets -> User Defined skal du vælge det RESTAPI_MON dataindsamlersæt og klikke på Start (knappen Afspil)
- Hvis standardoutputplaceringen blev brugt, vises den .csv fil under
C:\PerfLogs\Admin\RESTAPI_MON. - Når problemet er observeret og registreret i outputfilen, kan du stoppe overvågningsklik ved at klikke på Stop under Data Collector Sets-User Defined.