NetWorker: Guía de triage y solución de problemas de la API REST

Resumen: En este artículo de la base de conocimientos, se proporciona una visión general de la solución de problemas básica para problemas relacionados con la API REST.

Este artículo se aplica a Este artículo no se aplica a Este artículo no está vinculado a ningún producto específico. No se identifican todas las versiones del producto en este artículo.

Instrucciones

Guía de triage de API REST de NetWorker

Ver en YouTube

Información adicional

Introducción

La interfaz de programación de aplicaciones (API) de transferencia de estado representacional (REST) proporciona acceso programático al servicio de protección de datos de NetWorker. Mediante el uso de la API REST, los usuarios de NetWorker pueden crear aplicaciones cliente para automatizar las operaciones de NetWorker. La API REST de NetWorker se instala como parte de la instalación de NetWorker Server en el mismo contenedor Apache Tomcat que los servicios de autenticación de NetWorker. La autenticación se realiza con las mismas credenciales que se utilizan para NetWorker Management Console.  

La API REST permite la interacción con los recursos identificados por las direcciones del identificador uniforme de recursos (URI). Utiliza verbos HTTP (HEAD, GET, PUT, POST, DELETE) para interactuar con el identificador uniforme de recursos (URI) sin estado. El servidor no contiene ningún estado de cliente y cada mensaje es autodescriptivo.

En este documento, se aborda la interacción con los recursos de NetWorker mediante llamadas de API REST escritas por el usuario. No debe confundirse con las llamadas de API REST que utilizan las operaciones de back-end de NetWorker.
 

Conexión a NetWorker:

Hay varias tecnologías de cliente de API REST diferentes que se pueden utilizar para ejecutar los comandos para conectarse a NetWorker; Incluido curl comandos (Linux), PowerShell curl.exe (Windows) y extensiones de navegador del cliente de API REST. 

NOTA: La compatibilidad con NetWorker no proporciona compatibilidad con utilidades de API de otros fabricantes ni scripts/automatización de API. El soporte de NetWorker tampoco ofrece soluciones de API REST. Para obtener orientación sobre el uso de la API REST, consulte la Guía para desarrolladores de la API REST de NetWorker. El soporte está disponible para responder preguntas generales sobre la API REST o para ayudar si se identifica un problema específico con las funciones o los terminales de la API REST de NetWorker. Todas las evaluaciones y pruebas se realizan desde conexiones directas mediante comandos a nivel del SO.

Se necesitan tres encabezados para la conexión:   

  • Tipo de contenido: application/json
  • Acepta: application/json
  • Autorización: Básico con nombre de usuario y contraseña codificados de base 64

En entornos donde hay varias zonas de datos de NetWorker autenticadas a través de un único servidor AUTHC de NetWorker, se requiere un encabezado adicional:

  • X-NW-AUTHC-BASE-URL:AUTHC_HOSTNAME_OR_IP:AUTHC_PORT
El puerto AUTHC predeterminado es el puerto 9090. El uso de este encabezado se detalla en: API REST: ¿Cómo usar un servidor AUTHC remoto cuando se procesan solicitudes de API REST?

La API REST de NetWorker se expone en el siguiente URI base:

https://[nw-server-hostname]:9090/nwrestapi/v3

Existen diferentes versiones de las API. Las mejoras se han implementado desde que se implementó inicialmente la API REST. Los cambios en estos terminales se detallan en: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md

El esquema JSON completo está disponible en:

https://[nw-server-hostname]:9090/nwrestapi/v3/schemas/swagger.json

Códigos de respuesta de la API REST:
 
Códigos de respuesta de éxito
Código de éxito Se aplica al método HTTP Contenido del cuerpo de la respuesta Descripción
200 OBTENER Representación de recursos Aceptar. Las operaciones que dan como resultado este estado HTTP llevan la representación de recursos en la carga útil.
201 EXPONER Respuesta vacía Creado. Este estado indica que se creó un nuevo recurso o un trabajo previsto y que se puede acceder a su dirección URL asociada desde el encabezado de ubicación en la respuesta.
202 EXPONER Detalles en respuesta Aceptado. Esto indica que se aceptó la solicitud de API. La carga útil indica que se puede acceder a la URL de la instancia del recurso de seguimiento desde el encabezado de ubicación en la respuesta.
204 PUT o DELETE Respuesta vacía Sin contenido. El estado indica que la operación realizada se realizó correctamente. Sin embargo, no se proporcionarán detalles adicionales.

 

Códigos de respuesta de error
Código de error Descripción
400 Solicitud incorrecta
401 Credenciales no válidas
403 Privilegios insuficientes
404 No se encontró el recurso
405 Método no permitido
406 Se especificó una configuración regional no válida.
500 Error interno del servidor


Funciones de API REST

Métodos HTTP admitidos
Método HTTP Acción Descripción
OBTENER Lectura Obtiene la representación del recurso.
EXPONER Crear Crea un nuevo recurso.
COLOCAR Actualización Actualiza un recurso existente.
BORRAR Remove Elimina un recurso existente.


Algunos ejemplos:

GET:

Enumere todos los clientes.                                            

https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients

Un solo cliente, que muestra solo tres campos (nombre de host, savesets y grupos de protección)      

https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=hostname,saveSets,protectionGroups&q=hostname:nwserver121

Enumere los grupos de protección en los que se encuentra un cliente.     

https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=protectionGroups&q=hostname:nwserver121

Mostrar alertas actuales.                                     

https://[nw-server-hostname]:9090/nwrestapi/v3/global/alerts

Mostrar los trabajos fallidos recientes.                               

https://[nw-server-hostname]:9090/nwrestapi/v3/global/jobs?q=completionStatus:"Failed"&fl=clientHostname,startTime,name,message

Enumere los flujos de trabajo en una política (denominada WinFS en este ejemplo).                   

https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/WinFS/workflows

Muestra las propiedades de una instancia de saveset solamente (según lo definido por el nombre de host del cliente y el saveset).      

https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?q=hostname:vm-lego-231 and saveSets:"/etc"

EXPONER:

Inicie una acción de flujo de trabajo.                                 

https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/Angela/workflows/WinFS/op/backup
                                                      JSON Body: 
                                                      {
                                                       }

Cree una nueva instancia de cliente (con valores predeterminados para todas las propiedades, excepto las cuatro enumeradas).           

https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients  
                                                     JSON Body 
                                                     {    
            "hostname": "vm-lego-231",
            "backupType": "Filesystem",
            "saveSets": [ "/etc" ],
            "protectionGroups" : [ "LinuxFS" ]
                                                          
NOTA: Todos los terminales de la API REST compatibles y los ejemplos de uso se proporcionan en: Guía de referencia de la API REST de NetWorker

Ejemplos de línea de comandos:

Linux:

En el caso de los sistemas que tienen python instalado:

curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | python -m json.tool
En el caso de los sistemas que tienen jq instalado:
curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | jq
Ejemplo:
[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

Ejemplo:

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
}

Información necesaria para el soporte


Entorno:

  • Nombre del servidor de NetWorker
  • Versión y número de compilación de NetWorker
  • Tipo y versión del sistema operativo host de NetWorker Server
Linux:
hostname
strings /usr/sbin/nsrd | grep -i "(#)"
cat /etc/*release
uname -a

Windows:

nsrwatch
Detalles de NetWorker Server desde nsrwatch

Detalles del problema:

  • Explique qué operación de la API REST se está realizando (GET, POST, PUT, DELETE), el URI utilizado y cualquier contenido del cuerpo JSON (cuando corresponda). 
  • El código de respuesta de la API REST y cualquier mensaje de error proporcionado.
  • ¿La conexión y la autorización iniciales se realizaron correctamente entre el cliente de la API REST y NetWorker?

Recopilación de registros:

  • Archivo de registro de daemon.raw generado desde NetWorker Server:
  • Registros de API REST desde NetWorker Server:  /nsr/logs/restapi (Linux) o EMC NetWorker\nsr\logs\restapi (Windows)
  • Para problemas de autenticación, consulte el registro de autenticación estándar de NetWorker en /nsr/authc/logs (Linux) o ..\EMC NetWorker\nsr\authc-server\tomcat\logs (Windows)

Depuración:

En problemas más complejos, es posible que se requiera la depuración de la API REST. La depuración se puede habilitar de la siguiente manera: NetWorker: Cómo habilitar la depuración de la API REST


Rendimiento:

Antes de evaluar los problemas relacionados con el rendimiento de la API REST, es importante determinar si el problema se observa en todas las funciones o funciones específicas de la API REST. Por ejemplo, las solicitudes GET en terminales globales, como clientes, trabajos, volúmenes, etc., pueden extraer una gran cantidad de datos. Estos tipos de solicitudes pueden provocar una alta utilización de recursos del sistema y tiempos de espera agotados.
Véase: API REST de NetWorker: Se agota el tiempo de espera de las solicitudes HTTP GET de forma intermitente

Cuando se observan problemas de rendimiento en terminales globales de gran tamaño, se recomienda usar el "filtro de lista de consultas" (q) o "filtro de lista de campos" (fl) para reducir los datos devueltos a la información específica necesaria. En la base de conocimientos anterior, se detallan estos ajustes y hay información adicional disponible en la Guía para desarrolladores de la API REST: Desarrollador de 

Dell TechnologiesSi el problema está relacionado con el rendimiento de la API REST, puede usar las siguientes opciones para rastrear el consumo de recursos del proceso nsrtomc+ utilizado por las llamadas a la API.

Linux:  

top -b | awk '/nsrtomc+/ {print strftime("%Y-%m-%d-%H:%M:%S", systime()), $0}'

Esta salida muestra la salida superior estándar, pero con marcas de tiempo legibles por humanos. Esto se puede utilizar para revisar el consumo de CPU y memoria por parte del proceso y cuánto tiempo permanecía en un estado determinado cuando se realizaba una llamada REST. Esto se puede comparar con los registros de restapi.log y AUTHC para ver qué llamadas se realizaron y con qué frecuencia.
 

Windows: 

En el caso de los servidores Windows, debe instalar algo como "Performance Monitor:

  1. Abra Performance Monitor como administrador.
  2. En el panel izquierdo, expanda Herramientas de monitoreo y seleccione Monitor de rendimiento.
  3. Haga clic con el botón secundario en el panel derecho y seleccione Eliminar todos los contadores.
  4. Haga clic con el botón secundario en el panel derecho y seleccione Add Counters.
  5. En Available Counters, expanda Memory, seleccione % Commit Bytes y haga clic en Add.
  6. En Memoria,  seleccione Bytes disponibles y haga clic en Agregar.
  7. En Available Counters, expanda Process y seleccione % Processor Time y, en Instances of Selected Object, seleccione la primera entrada de Java y haga clic en Add.
  8. En Contadores disponibles, expanda Información del procesador, seleccione % Utilidad del procesador y haga clic en Agregar.
  9. Los contadores agregados en el panel derecho deben mostrar:

Ventana Contadores de Procmon

  1. Haga clic en Aceptar. Haga clic con el botón secundario en Monitor de rendimiento y, a continuación, haga clic en Conjunto de recopiladores de> datos nuevos.
  2. Proporcione un nombre, por ejemplo: RESTAPI_MON.
  3. En la pantalla de ubicación, haga clic en Siguiente,  a menos que elija especificar una ubicación de salida alternativa.
  4. Seleccione Guardar y cerrar y haga clic en Finalizar.
  5. En el panel izquierdo, en Data Collector Sets-User Defined,> abra el archivo RESTAPI_MON properties y seleccione Separados por comas para el formato de registro y haga clic en Aceptar.

Recopilador de datos de Procmon

  1. En el panel izquierdo, en Data Collector Sets-User Defined,>seleccione el conjunto de Data Collector RESTAPI_MON y haga clic en Start (botón Play)
  2. Si se utilizó la ubicación de salida predeterminada, el archivo .csv aparece en C:\PerfLogs\Admin\RESTAPI_MON.
  3. Una vez que el problema se observa y se registra en el archivo de salida, puede detener el monitoreo haciendo clic en Stop en Data Collector Sets-User Defined.

Productos afectados

NetWorker Series

Productos

NetWorker Series
Propiedades del artículo
Número del artículo: 000014298
Tipo de artículo: How To
Última modificación: 22 ene 2026
Versión:  7
Encuentre respuestas a sus preguntas de otros usuarios de Dell
Servicios de soporte
Compruebe si el dispositivo está cubierto por los servicios de soporte.