NetWorker: REST APIn vianmääritys- ja luokitteluopas
Yhteenveto: Tämä tietämyskannan artikkeli sisältää yleiskatsauksen RESTAPI-ongelman perusvianmääritykseen.
Ohjeet
Katso YouTubessa
Lisätietoja
Aloittaminen
Representational State Transfer (REST) Application Programming Interface (API) tarjoaa ohjelmallisen pääsyn NetWorker-tietosuojapalveluun. REST APIn avulla NetWorker-käyttäjät voivat luoda asiakassovelluksia NetWorker-toimintojen automatisoimiseksi. NetWorker REST API asennetaan osana NetWorker-palvelimen asennusta samaan Apache tomcat -säilöön kuin NetWorker-todennuspalvelut. Todennus tehdään samoilla tunnistetiedoilla kuin NetWorker Management Consolessa.
REST-ohjelmointirajapinta mahdollistaa vuorovaikutuksen URI (Uniform Resource Identifier) -osoitteiden tunnistamien resurssien kanssa. Se käyttää HTTP-verbejä (HEAD, GET, PUT, POST, DELETE) vuorovaikutuksessa Uniform Resource Identifierin (URI) kanssa tilattomalla tavalla. Palvelimella ei ole asiakkaan tilaa, vaan jokainen viesti on itseään kuvaava.
Tässä asiakirjassa käsitellään vuorovaikutusta NetWorker-resurssien kanssa käyttäjän kirjoittamien REST API -kutsujen avulla. Tätä ei pidä sekoittaa REST API -kutsuihin, joita NetWorker-taustatoiminnot käyttävät.
Yhteyden muodostaminen NetWorkeriin:
On olemassa useita erilaisia REST API -asiakastekniikoita, joita voidaan käyttää komentojen suorittamiseen yhteyden muodostamiseksi NetWorkeriin. Mukaan lukien curl komennot (Linux), PowerShell curl.exe (Windows) ja REST API -asiakasselainlaajennukset.
Yhteyden muodostamiseen tarvitaan kolme otsikkoa:
- Sisältötyyppi:
application/json - Hyväksyä:
application/json - Valtuutus: Basic ja Base 64 koodattu käyttäjätunnus ja salasana
Ympäristöissä, joissa on useita NetWorker-tietovyöhykkeitä, jotka on todennettu yhden NetWorker AUTHC -palvelimen kautta, tarvitaan ylimääräinen otsikko:
X-NW-AUTHC-BASE-URL:AUTHC_HOSTNAME_OR_IP:AUTHC_PORT
NetWorker REST -ohjelmointirajapinta näkyy seuraavassa perus-URI:ssa:
https://[nw-server-hostname]:9090/nwrestapi/v3
API-rajapinnoista on olemassa erilaisia versioita. Parannuksia on otettu käyttöön REST-ohjelmointirajapinnan käyttöönoton jälkeen. Näihin päätepisteisiin tehdyt muutokset on kuvattu yksityiskohtaisesti: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md
Koko json-rakenne on saatavilla osoitteessa:
https://[nw-server-hostname]:9090/nwrestapi/v3/schemas/swagger.json
| Onnistumisen koodi | Koskee seuraavaa: HTTP-menetelmä | Vastauksen leipäteksti | Kuvaus |
| 200 | SAADA | Resurssien edustus | OK. Tähän HTTP-tilaan johtavat toiminnot kantavat resurssin esityksen hyötykuormassa. |
| 201 | VIESTI | Tyhjä vastaus | Luotu. Tämä tila ilmaisee, että uusi resurssi tai aiottu työ on luotu ja siihen liittyvä URL-osoite on käytettävissä vastauksen sijaintiotsikosta. |
| 202 | VIESTI | Vastauksen tiedot | Hyväksytty. Tämä osoittaa, että API-pyyntö on hyväksytty. Tietosisältö ilmaisee, että seurantaresurssi-ilmentymän URL-osoite on käytettävissä vastauksen sijaintiotsikosta. |
| 204 | LAITA tai POISTA | Tyhjä vastaus | Ei sisältöä. Tila ilmaisee, että suoritettu toiminto onnistui. Tarkempia tietoja ei kuitenkaan tarvitse antaa. |
| Virhekoodi | Kuvaus |
| 400 | Virheellinen pyyntö |
| 401 | Virheelliset tunnistetiedot |
| 403 | Oikeudet eivät riitä |
| 404 | Resurssia ei löydy |
| 405 | Menetelmä ei sallittu |
| 406 | Virheellinen kielialue on määritetty. |
| 500 | Sisäinen palvelinvirhe |
REST API -funktiot
| HTTP-menetelmä | Toiminto | Kuvaus |
| SAADA | Read | Hakee resurssiesityksen. |
| VIESTI | Create | Luo uuden resurssin. |
| LAITTAA | Päivitys | Päivittää aiemmin luodun resurssin. |
| DELETE | Poista | Poistaa aiemmin luodun resurssin. |
Esimerkkejä:GET:
Lisää kaikki asiakkaat.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
Vain yksi asiakasohjelma, jossa näkyy vain kolme kenttää (isäntänimi, saveSets ja protectionGroups)
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=hostname,saveSets,protectionGroups&q=hostname:nwserver121
Näytä luettelo suojausryhmistä, joihin yksi asiakas kuuluu.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=protectionGroups&q=hostname:nwserver121
Näytä nykyiset hälytykset.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/alerts
Näytä äskettäin epäonnistuneet työt.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/jobs?q=completionStatus:"Failed"&fl=clientHostname,startTime,name,message
Luettele työnkulut yhdessä käytännössä (tässä esimerkissä WinFS ).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/WinFS/workflows
Näytä luettelo vain yhden tallennusjoukkoesiintymän ominaisuuksista (asiakkaan isäntänimen ja tallennusjoukon määrittämällä tavalla).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?q=hostname:vm-lego-231 and saveSets:"/etc"
VIESTI:
Aloita työnkulkutoiminto.
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/Angela/workflows/WinFS/op/backup
JSON Body:
{
}
Luo uusi asiakasesiintymä (jossa oletusarvot ovat kaikille muille ominaisuuksille paitsi neljälle luetellulle).
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
JSON Body
{
"hostname": "vm-lego-231",
"backupType": "Filesystem",
"saveSets": [ "/etc" ],
"protectionGroups" : [ "LinuxFS" ]
Esimerkkejä komentoriviltä:
Linux:
Järjestelmät, joissa on python Asennettu:
curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | python -m json.tool
jq Asennettu:
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
Esimerkki:
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
}
Tuen edellyttämät tiedot
Ympäristö:
- NetWorker-palvelimen nimi
- NetWorker-version ja koontiversion numero
- NetWorker-palvelimen isäntäkäyttöjärjestelmän tyyppi ja versio
hostname
strings /usr/sbin/nsrd | grep -i "(#)"
cat /etc/*release
uname -a
Windows:
nsrwatch
Ongelman tiedot:
- Selitä, mitä REST API -toimintoa suoritetaan (GET, POST, PUT, DELETE), käytetty URI, JSONin leipätekstin sisältö (tarvittaessa).
- REST API -vastauskoodi ja mahdolliset virheilmoitukset.
- Onko alkuperäinen yhteys ja valtuutus REST API -asiakkaan ja NetWorkerin välillä onnistunut?
Lokien kerääminen:
- Hahmonnettu daemon.raw lokitiedosto NetWorker-palvelimesta:
- Linux:
/nsr/logs/daemon.raw - Windows:
C:\Program Files\EMC NetWorker\nsr\logs\daemon.raw - NetWorker: Kuinka käyttää nsr_render_log
- Linux:
- REST API -lokit NetWorker-palvelimesta:
/nsr/logs/restapi(Linux) taiEMC NetWorker\nsr\logs\restapi(Windows) - Lisätietoja todennusongelmista on NetWorker-todennuksen vakiokirjautumisessa
/nsr/authc/logs(Linux) tai..\EMC NetWorker\nsr\authc-server\tomcat\logs(Windows)
Debug:
Suorituskykyä:
Ennen REST-ohjelmointirajapinnan suorituskykyongelmien arviointia on tärkeää selvittää, havaitaanko ongelma kaikissa REST-ohjelmointirajapinnan toiminnoissa tai tietyissä toiminnoissa. Esimerkiksi globaaleihin päätepisteisiin, kuten asiakkaisiin, töihin ja volyymeihin, liittyvät GET-pyynnöt voivat noutaa paljon tietoja. Tämäntyyppiset pyynnöt voivat johtaa korkeaan järjestelmän resurssien käyttöön ja aikakatkaisuihin.
Katso: NetWorker REST -ohjelmointirajapinta: HTTP GET -pyynnöt aikakatkaistaan ajoittain
Kun suurissa yleisissä päätepisteissä havaitaan suorituskykyongelmia, on suositeltavaa käyttää kyselyluettelosuodatinta (q) tai "kenttäluettelosuodatin" (fl) vähentääkseen palautettavien tietojen määrää tiettyihin tarvittaviin tietoihin. Edellä olevassa tietämyskannan artikkelissa kerrotaan näistä asetuksista, ja lisätietoja on REST API -kehittäjän oppaassa: Dell Technologies -kehittäjä
Jos ongelma liittyy REST-ohjelmointirajapinnan suorituskykyyn, voit seurata API-kutsujen käyttämän nsrtomc+-prosessin resurssien kulutusta seuraavien asetusten avulla.
Linux:
top -b | awk '/nsrtomc+/ {print strftime("%Y-%m-%d-%H:%M:%S", systime()), $0}'
Tämä tulos näyttää tavallisen ylätuloksen, mutta siinä on ihmisen luettavissa olevat aikaleimat. Sen avulla voidaan tarkastella suorittimen ja muistin kulutusta prosessin mukaan ja kuinka kauan se pysyi tietyssä tilassa, kun REST-kutsu soitettiin. Tätä voidaan verrata restapi.log- ja AUTHC-lokeihin, jotta näet, mitä puheluita soitettiin ja kuinka usein.
Windows:
Windows-palvelimille on asennettava esimerkiksi "Performance Monitor:
- Avaa suorituskyvyn valvonta järjestelmänvalvojana.
- Laajenna vasemmasta ruudusta Valvontatyökalut ja valitse Suorituskyvyn valvonta.
- Napsauta hiiren kakkospainikkeella oikeassa ruudussa ja valitse Poista kaikki laskurit.
- Napsauta hiiren kakkospainikkeella oikeassa ruudussa ja valitse Lisää laskureita.
- Laajenna Käytettävissä olevat laskurit -kohdassa Muisti, valitse % Vahvista tavuja ja valitse Lisää.
- Valitse Memory-kohdassa Available Bytes ja Add.
- Laajenna Käytettävissä olevat laskurit -kohdassa Prosessi ja valitse % suorittimen ajasta ja valitse Valitun objektin esiintymät -kohdassa ensimmäinen Java-merkintä ja valitse Lisää.
- Laajenna Käytettävissä olevat laskurit-kohdassa Suorittimen tiedot ja valitse % Processor Utility, klikkaa Lisää.
- Oikeanpuoleisen ruudun lisätyissä laskureissa pitäisi näkyä:

- Valitse OK. Napsauta hiiren kakkospainikkeella Suorituskyvyn valvonta ja valitse New-Data> Collector Set.
- Anna nimi, esimerkiksi:
RESTAPI_MON. - Valitse sijaintinäytössä Seuraava, ellet määritä vaihtoehtoista tulostussijaintia.
- Valitse Tallenna ja sulje ja napsauta Valmis.
- Avaa vasemmassa ruudussa kohdassa Data Collector Sets-User> Defined
RESTAPI_MON-ominaisuudet ja valitse lokimuodoksi Pilkuilla eroteltu, napsauta OK.

- Valitse vasemmassa ruudussa kohdassa Data Collector Sets-User> Defined RESTAPI_MON tiedonkeruutyökalujen joukko ja napsauta Käynnistä (toistopainike)
- Jos käytettiin oletusarvoista tulostussijaintia, .csv tiedosto näkyy kohdassa
C:\PerfLogs\Admin\RESTAPI_MON. - Kun ongelma on havaittu ja tallennettu tulostiedostoon, voit lopettaa napsautuksen seurannan napsauttamalla Pysäytä kohdassa Data Collector Sets-User Defined.