NetWorker: Guia de triagem e solução de problemas da API REST

Resumo: Este artigo da KB apresenta uma visão geral da solução de problemas básicos para problemas relacionados à API REST.

Este artigo aplica-se a Este artigo não se aplica a Este artigo não está vinculado a nenhum produto específico. Nem todas as versões do produto estão identificadas neste artigo.

Instruções

Guia de triagem da API REST do NetWorker

Assista no YouTube

Mais informações

Primeiros passos

A interface de programação de aplicativos (API) da transferência de estado representacional (REST) fornece acesso programático ao serviço de proteção de dados do NetWorker. Usando a API REST, os usuários do NetWorker podem criar aplicativos client para automatizar as operações do NetWorker. A API REST do NetWorker é instalada como parte da instalação do servidor NetWorker no mesmo contêiner Tomcat Apache que os NetWorker Authentication Services. A autenticação é feita usando as mesmas credenciais usadas para o NetWorker Management Console.  

A API REST permite a interação com recursos identificados por endereços URI (Uniform Resource Identifier). Ele usa verbos HTTP (HEAD, GET, PUT, POST, DELETE) para interagir com o URI (Uniform Resource Identifier) de forma sem monitoração de estado. O servidor não contém nenhum estado do client, sendo cada mensagem autodescritiva.

Este documento trata da interação com recursos do NetWorker usando chamadas API REST gravadas pelo usuário. Não deve ser confundido com as chamadas da API REST que são usadas pelas operações de back-end do NetWorker.
 

Conectando-se ao NetWorker:

Há várias tecnologias diferentes de client da API REST que podem ser usadas para executar os comandos para se conectar ao NetWorker; Incluindo curl comandos (Linux), PowerShell curl.exe (Windows) e extensões do navegador do cliente da API REST. 

Nota: O suporte do NetWorker não dá suporte a utilitários de API de terceiros nem a scripts/automação de API. O suporte do NetWorker também não oferece soluções de API REST. Para obter orientações sobre o uso da API REST, consulte o Guia do desenvolvedor da API REST do NetWorker. O suporte está disponível para responder a perguntas gerais sobre a API REST ou auxiliar se um problema específico for identificado com os endpoints ou funções da API REST do NetWorker. Todas as avaliações e testes são feitos a partir de conexões diretas usando comandos no nível do SO.

Há três cabeçalhos necessários para a conexão:   

  • Tipo de conteúdo: application/json
  • Aceitar: application/json
  • Autorização: Básico com nome de usuário e senha codificados em Base 64

Em ambientes em que há várias zonas de dados do NetWorker autenticadas por meio de um único servidor NetWorker AUTHC, um cabeçalho adicional é necessário:

  • X-NW-AUTHC-BASE-URL:AUTHC_HOSTNAME_OR_IP:AUTHC_PORT
A porta AUTHC padrão é a porta 9090. O uso desse cabeçalho é detalhado em: API REST: Como usar um servidor AUTHC remoto ao processar solicitações RESTAPI?

A API REST do NetWorker é exposta no seguinte URI de base:

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

Existem diferentes versões de APIs. Os aprimoramentos foram implementados desde que a API REST foi inicialmente implementada. As alterações nesses endpoints são detalhadas em: https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md

O esquema json completo está disponível em:

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

Códigos de resposta da API REST:
 
Códigos de resposta de sucesso
Código de sucesso Aplica-se ao método HTTP Conteúdo do corpo da resposta Descrição
200 OBTER Representação de recursos OK. As operações que resultam nesse estado HTTP carregam a representação de recursos no payload.
201 POSTAR Resposta vazia Criado. Esse status indica que um novo recurso ou um trabalho pretendido foi criado e sua URL associada pode ser acessada a partir do cabeçalho do local na resposta.
202 POSTAR Detalhes na resposta Aceito. Isso indica que a solicitação da API foi aceita. A carga indica que a URL para a instância do recurso de rastreamento pode ser acessada a partir do cabeçalho do local na resposta.
204 PUT ou DELETE Resposta vazia Sem conteúdo. O estado indica que a operação executada foi bem-sucedida. No entanto, não há detalhes adicionais a serem fornecidos.

 

Códigos de resposta de erro
Código de erro Descrição
400 Solicitação incorreta
401 Credenciais inválidas
403 Privilégios insuficientes
404 Recurso não encontrado
405 Método não permitido
406 Localidade inválida especificada.
500 Erro interno do servidor


Funções da API REST

Métodos HTTP compatíveis
Método HTTP Ação Descrição
OBTER Read Obtém a representação de recursos.
POSTAR Create Cria um novo recurso.
COLOCAR Atualização Atualiza um recurso existente.
DELETE Remover Exclui um recurso existente.


Alguns exemplos:

GET:

Listar todos os clients.                                            

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

Apenas um client, mostrando apenas três campos (nome do host, saveSets e protectionGroups)      

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

Liste os grupos de proteção nos quais um client está.     

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

Mostrar alertas atuais.                                     

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

Mostrar trabalhos com falha recentes.                               

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

Liste os fluxos de trabalho em uma política (chamada WinFS neste exemplo).                   

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

Liste as propriedades somente de uma instância de saveset (conforme definido pelo nome de host do client e pelo saveset).      

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

POSTAR:

Inicie uma ação de fluxo de trabalho.                                 

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

Crie uma nova instância de client (com valores padrão para todas as propriedades, exceto as quatro listadas).           

https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients  
                                                     JSON Body 
                                                     {    
            "hostname": "vm-lego-231",
            "backupType": "Filesystem",
            "saveSets": [ "/etc" ],
            "protectionGroups" : [ "LinuxFS" ]
                                                          
Nota: Todos os endpoints e exemplos de uso da API REST compatíveis são fornecidos em: Guia de referência da API REST do NetWorker

Exemplos de linha de comando:

Linux:

Para sistemas que possuem python instalado:

curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | python -m json.tool
Para sistemas que possuem jq instalado:
curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | jq
Exemplo:
[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

Exemplo:

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
}

Informações necessárias para suporte


Ambiente:

  • Nome do servidor do NetWorker
  • Número da versão e do build do NetWorker
  • Tipo e versão do sistema operacional do host do servidor do NetWorker
Linux:
hostname
strings /usr/sbin/nsrd | grep -i "(#)"
cat /etc/*release
uname -a

Windows:

nsrwatch
Detalhes do servidor NetWorker de nsrwatch

Detalhes do problema:

  • Explique qual operação da API REST está sendo executada (GET, POST, PUT, DELETE), o URI usado, o conteúdo do corpo JSON (quando aplicável). 
  • Código de resposta da API REST e qualquer mensagem de erro fornecida.
  • A conexão e a autorização iniciais foram bem-sucedidas entre o client da API REST e o NetWorker?

Coleta de logs:

  • Processado daemon.raw arquivo de log do servidor do NetWorker:
  • Logs da API REST do servidor do NetWorker:  /nsr/logs/restapi (Linux) ou EMC NetWorker\nsr\logs\restapi (Windows)
  • Para problemas de autenticação, consulte a autenticação padrão do NetWorker fazendo log-in /nsr/authc/logs (Linux) ou ..\EMC NetWorker\nsr\authc-server\tomcat\logs (Windows)

Depurar:

Em problemas mais complexos, a depuração da API REST pode ser necessária. A depuração pode ser ativada da seguinte forma: NetWorker: Como habilitar a depuração da API REST


Desempenho:

Antes de avaliar problemas relacionados ao desempenho da API REST, é importante determinar se o problema é observado em todas as funções ou funções específicas da API REST. Por exemplo, as solicitações GET em endpoints globais, como clients, trabalhos, volumes e assim por diante, podem extrair muitos dados. Esses tipos de solicitações podem resultar em alta utilização de recursos do sistema e tempos limites.
Ver: API REST do NetWorker: As solicitações HTTP GET estão com tempo de espera excedido intermitente

Quando problemas de desempenho são observados em grandes endpoints globais, a recomendação é usar o "filtro de lista de consulta" (q) ou "filtro de lista de campos" (fl) para reduzir os dados retornados a informações específicas necessárias. O artigo da KB acima detalha essas configurações e informações adicionais disponíveis no Guia do desenvolvedor da API REST: Desenvolvedor da Dell Technologies 

Se o problema estiver relacionado ao desempenho da API REST, você poderá usar as seguintes opções para rastrear o consumo de recursos do processo nsrtomc+ usado pelas chamadas de API.

Linux:  

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

Esse resultado mostra a saída superior padrão, mas com registros de data e hora legíveis. Isso pode ser usado para analisar o consumo de CPU e memória pelo processo e por quanto tempo ele permaneceu em um determinado estado quando uma chamada REST foi feita. Isso pode ser comparado com os registros restapi.log e AUTHC para ver quais chamadas foram feitas e com que frequência.
 

Windows: 

Para servidores Windows, você deve instalar algo como "Monitor de desempenho:

  1. Abra o Monitor de desempenho como administrador.
  2. No painel esquerdo, expanda Ferramentas de Monitoramento e selecione Monitor de Desempenho.
  3. Clique com o botão direito do mouse no painel direito e selecione Remover todos os contadores.
  4. Clique com o botão direito do mouse no painel direito e selecione Add Counters.
  5. Em Contadores disponíveis, expanda Memória, selecione % Confirmar bytes e clique em Adicionar.
  6. Em Memory,  selecione Available Bytes e clique em Add.
  7. Em Contadores disponíveis, expanda Processo e selecione % Tempo do processador e, em Instâncias do objeto selecionado, selecione a primeira entrada Java e clique em Adicionar.
  8. Em Contadores disponíveis, expanda Informações do processador e selecione % Utilitário do processador, clique em Adicionar.
  9. Os contadores adicionados no painel direito devem mostrar:

Janela de contadores Procmon

  1. Clique em OK. Clique com o botão direito do mouse em Monitor de Desempenho e clique em Novo Conjunto de Coletores de> Dados.
  2. Forneça um nome, por exemplo: RESTAPI_MON.
  3. Na tela de localização, clique em Next,  a menos que você opte por especificar um local de saída alternativo.
  4. Selecione Salvar e fechar e clique em Concluir.
  5. No painel esquerdo, em Data Collector Sets-User> Defined, abra o RESTAPI_MON e selecione Separados por vírgula para o formato de registro, clique em OK.

Coletor de dados Procmon

  1. No painel esquerdo, em Conjuntos de Coletores de Dados definidos> pelo usuário, selecione o conjunto de coletores de dados RESTAPI_MON e clique em Iniciar (botão Reproduzir)
  2. Se o local de saída padrão foi usado, o arquivo de .csv é exibido em C:\PerfLogs\Admin\RESTAPI_MON.
  3. Depois que o problema for observado e registrado no arquivo de saída, você poderá interromper o monitoramento clicando em Stop em Data Collector Sets-User Defined.

Produtos afetados

NetWorker Series

Produtos

NetWorker Series
Propriedades do artigo
Número do artigo: 000014298
Tipo de artigo: How To
Último modificado: 22 jan. 2026
Versão:  7
Encontre as respostas de outros usuários da Dell para suas perguntas.
Serviços de suporte
Verifique se o dispositivo está coberto pelos serviços de suporte.