NetWorker:REST APIのトラブルシューティングとトリアージ ガイド
概要: このKBでは、RESTAPI関連の問題の基本的なトラブルシューティングの概要について説明します。
手順
YouTubeで視聴する
その他の情報
はじめに
Representational State Transfer (REST)アプリケーション プログラミング インターフェイス(API)は、NetWorkerデータ保護サービスへのプログラムによるアクセスを提供します。NetWorkerユーザーはREST APIを使用して、NetWorker操作を自動化するクライアント アプリケーションを構築できます。NetWorker REST APIは、NetWorkerサーバーのインストールの一環として、NetWorker認証サービスと同じApache tomcatコンテナにインストールされます。認証は、NetWorker Management Consoleで使用されているものと同じ認証情報を使用して行われます。
REST APIを使用すると、Uniform Resource Identifier(URI)アドレスで識別されるリソースとのやり取りが可能になります。HTTP 動詞 (HEAD、GET、PUT、POST、DELETE) を使用して、ステートレスな方法で Uniform Resource Identifier (URI) と対話します。サーバーにはクライアント状態が含まれておらず、各メッセージは自己記述的です
このドキュメントでは、ユーザー作成のREST API呼び出しを使用したNetWorkerリソースとのやり取りについて説明します。バックエンドNetWorker操作で使用されるREST API呼び出しと混同しないでください。
NetWorkerへの接続:
コマンドを実行してNetWorkerに接続するために使用できるREST APIクライアント テクノロジーはいくつかあります。含む curl commands (Linux)、PowerShell curl.exe (Windows)、REST APIクライアント ブラウザー拡張機能。
接続には次の3つのヘッダーが必要です。
- Content-Type:
application/json - 受け入れる:
application/json - 認証:Basic (Base 64 エンコードのユーザー名とパスワード付き)
単一のNetWorker AUTHCサーバーを介して複数のNetWorkerデータゾーンが認証されている環境では、追加のヘッダーが必要です。
X-NW-AUTHC-BASE-URL:AUTHC_HOSTNAME_OR_IP:AUTHC_PORT
NetWorker REST APIは、次のベースURIで公開されます。
https://[nw-server-hostname]:9090/nwrestapi/v3
APIにはさまざまなバージョンがあります。REST APIが最初に実装されてから、機能拡張がロールアウトされています。これらのエンドポイントに対する変更の詳細については、https://developer.dell.com/apis/2378/versions/v3/docs/GettingStarted.md を参照してください。
完全なjsonスキーマは、次の場所にあります。
https://[nw-server-hostname]:9090/nwrestapi/v3/schemas/swagger.json
| 成功コード | HTTP メソッドに適用 | 応答本文の内容 | 説明 |
| 200 | 取得 | リソースの表現 | [OK]をクリックします。このHTTP状態になる操作は、ペイロード内のリソース表現を伝送します。 |
| 201 | POST | 空の応答 | 作成。このステータスは、新しいリソースまたは目的のジョブが作成され、関連する URL が応答のロケーション ヘッダーからアクセスできることを示します。 |
| 202 | POST | 回答の詳細 | 受け入れ られる。これは、APIリクエストが受け入れられたことを示します。ペイロードは、追跡リソース インスタンスへの URL が応答の location ヘッダーからアクセスできることを示します。 |
| 204 | PUTまたはDELETE | 空の応答 | コンテンツがありません。状態は、実行された操作が成功したことを示します。ただし、追加の詳細は提供されません。 |
| エラー コード | 説明 |
| 400 | 不正なリクエスト |
| 401 | 無効な資格情報 |
| 403 | 権限不足 |
| 404 | リソースが見つかりません |
| 405 | メソッドは許可されていません |
| 406 | 無効なロケールが指定されています。 |
| 500 | 内部サーバー エラー |
REST API関数
| HTTP メソッド | 動作 | 説明 |
| 取得 | 読み取り | リソース表現を取得します。 |
| POST | 作成 | 新しいリソースを作成します。 |
| 置く | 更新 | 既存のリソースを更新します。 |
| DELETE | 削除 | 既存のリソースを削除します。 |
いくつかの例:
GET:
すべてのクライアントを一覧表示します。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
クライアントは1つのみで、3つのフィールド(ホスト名、saveSets、protectionGroups)のみを表示
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=hostname,saveSets,protectionGroups&q=hostname:nwserver121
1つのクライアントが含まれる保護グループを一覧表示します。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?fl=protectionGroups&q=hostname:nwserver121
現在のアラートを表示します。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/alerts
最近失敗したジョブを表示します。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/jobs?q=completionStatus:"Failed"&fl=clientHostname,startTime,name,message
1つのポリシー(この例では WinFS )のワークフローを一覧表示します。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/WinFS/workflows
1個のセーブセット インスタンスのみのプロパティを一覧表示します(クライアント ホスト名とセーブセットで定義)。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients?q=hostname:vm-lego-231 and saveSets:"/etc"
投稿:
ワークフロー アクションを開始します。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/protectionpolicies/Angela/workflows/WinFS/op/backup
JSON Body:
{
}
新しいクライアント インスタンスを作成します(リストされている4つのプロパティを除くすべてのプロパティにデフォルト値を使用)。
https://[nw-server-hostname]:9090/nwrestapi/v3/global/clients
JSON Body
{
"hostname": "vm-lego-231",
"backupType": "Filesystem",
"saveSets": [ "/etc" ],
"protectionGroups" : [ "LinuxFS" ]
コマンド ラインの例:
Linuxの場合
搭載されているシステムの場合 python の場合:
curl -k -u Administrator:'ADMINISTRATOR_PASSWORD' https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/ENDPOINT | python -m json.tool
jq の場合:
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
Example:
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
}
サポートに必要な情報
環境:
- NetWorkerサーバ名
- NetWorkerのバージョンとビルド番号
- NetWorkerサーバー ホストのオペレーティング システムのタイプとバージョン
hostname
strings /usr/sbin/nsrd | grep -i "(#)"
cat /etc/*release
uname -a
Windowsの場合:
nsrwatch
問題の詳細:
- 実行されているREST API操作(GET、POST、PUT、DELETE)、使用されているURI、JSON本文の内容(該当する場合)を説明します。
- REST API応答コードとエラー メッセージが表示される。
- REST APIクライアントとNetWorker間の最初の接続と許可は成功しましたか?
ログ収集:
- NetWorkerサーバーからレンダリングされたdaemon.rawログ ファイル:
- Linuxの場合
/nsr/logs/daemon.raw - Windowsの場合:
C:\Program Files\EMC NetWorker\nsr\logs\daemon.raw - NetWorker:nsr_render_logの使用方法(英語)」を参照してください。
- Linuxの場合
- NetWorkerサーバーからのREST APIログ:
/nsr/logs/restapi(Linux)またはEMC NetWorker\nsr\logs\restapi(Windowsの場合) - 認証の問題については、標準のNetWorker認証ログインを参照してください
/nsr/authc/logs(Linux)または..\EMC NetWorker\nsr\authc-server\tomcat\logs(Windowsの場合)
デバッグ:
パフォーマンス:
REST APIのパフォーマンス関連の問題を評価する前に、すべてのREST API機能または特定の機能で問題が発生しているかどうかを判断することが重要です。たとえば、クライアント、ジョブ、ボリュームなどのグローバル エンドポイントに対するGETリクエストは、大量のデータを取得する可能性があります。このようなタイプの要求は、システム リソースの使用率が高くなり、タイムアウトになる可能性があります。
見る:NetWorker REST API: HTTP GETリクエストが断続的にタイムアウトする
大規模なグローバルエンドポイントでパフォーマンスの問題が発生した場合は、「クエリリストフィルタ」(q)または「フィールドリストフィルター」(fl)を使用して、返されるデータを必要な特定の情報に減らします。上記のKBでは、これらの設定の詳細と追加情報については、『REST API Developer Guide』を参照してください。デル・テクノロジーズ開発者
問題がREST APIのパフォーマンスに関連している場合は、次のオプションを使用して、APIコールで使用されるnsrtomc+プロセスのリソース消費量を追跡できます。
Linux:
top -b | awk '/nsrtomc+/ {print strftime("%Y-%m-%d-%H:%M:%S", systime()), $0}'
この出力は標準の上位出力を示していますが、タイムスタンプは人間が判読できます。これを使用して、プロセスによるCPUとメモリーの消費量と、REST呼び出しが行われたときに特定の状態に保持された時間を確認できます。これをrestapi.logログやAUTHCログと比較して、どの呼び出しがどのくらいの頻度で行われたかを確認できます。
Windowsの場合:
Windows Serverの場合は、「Performance Monitor:
- 管理者としてパフォーマンス モニターを開きます。
- 左側のペインで、監視ツールを展開し、パフォーマンス モニターを選択します。
- 右側のペイン内を右クリックし、[すべてのカウンターを削除] を選択します。
- 右側のペイン内を右クリックし、[カウンターの追加] を選択します。
- [Available Counters]で[Memory]を展開し、[% Commit Bytes]を選択して[Add]をクリックします。
- [Memory]で Available Bytesを選択し、Addをクリックします。
- [Available Counters]で[Process]を展開し、[% Processor Time]を選択して、[Instances of Selected object]で最初のJavaエントリーを選択し、[Add]をクリックします。
- [Available Counters]で[Processor Information]を展開し、[% Processor Utility]を選択して[Add]をクリックします。
- 右側のペインに追加されたカウンターには、次のように表示されます。
![[Procmon counters]ウィンドウ](https://supportkb.dell.com/img/ka0Do000000qcBXIAY/ka0Do000000qcBXIAY_ja_1.jpeg)
- [OK]をクリックします。[パフォーマンス モニター] を右クリックし、[新規作成] - [Data Collector セット>] をクリックします。
- 名前を入力します(例:
RESTAPI_MONの詳細を確認してください。 - [場所]画面で、[次へ]をクリックします 代替出力場所を指定する場合は除きます。
- 保存して閉じるを選択し 完了をクリックします。
- 左側のペインのデータ コレクター セット->ユーザー定義の下で、
RESTAPI_MONpropertiesを選択し、ログ形式にComma Separateを選択し、Okをクリックします。

- 左側のペインの [データ コレクター セット - >ユーザー定義]で、RESTAPI_MONデータ コレクター セットを選択し、[スタート]([再生]ボタン)をクリックします
- デフォルトの出力場所が使用されていた場合は、.csvファイルが
C:\PerfLogs\Admin\RESTAPI_MONの詳細を確認してください。 - 問題が発生し、出力ファイルに記録されたら、[データ コレクター セット - ユーザー定義]の下にある[停止]をクリックして、監視を停止できます。