データ回復力におけるNo.1 グローバルリーダー
Veeam’s guidance for customers affected by CrowdStrike’s content update

プロセスダンプとログの収集方法

KB ID: 4563
Product: Veeam Backup & Replication
Published: 2024-07-16
Last Modified: 2024-07-17
Languages: EN
mailbox
Get weekly article updates
登録することで、Veeamのプライバシー通知に従って当社が個人情報を管理することに同意したものと見なされます。
このサイトはhCaptchaによって保護されており、そのプライバシーポリシー利用規約が適用されます(Veeamのプライバシーポリシーに記載されている場合を除く)。

Cheers for trusting us with the spot in your mailbox!

Now you’re less likely to miss what’s been brewing in our knowledge base with this weekly digest

error icon

問題が発生しました。

時間をおいて、再度お試しください

この記事の適用範囲

この記事は、KB1727を補完する形で作成されており、以下の目的での情報収集手段を提供します。

  • ジョブやタスクがスタックしているかまたは、バックグラウンドで動作しているのかをVeeamサポートが判断できるようにするため
  • ジョブやタスクが正常動作の範囲でスタックしているとサポートにより判断された場合、開発チームがその問題を診断できるようにするため

目的

この記事は、Veeam Backup & Replication内でスタックしていると思われるジョブまたはタスクを調査する際に、Veeamサポートに提供するプロセスダンプとログを収集する手順を示します。

解決方法

プロセスダンプの収集

  1. Veeam Backup Serverで、タスクマネージャーを開きます。
  2. タスクマネージャーで、実行中のすべてのプロセスをリストする詳細ビューに切り替えます。
  3. Veeam.Backup.Manager.exeとVeeamAgent.exeの各プロセスのプロセスダンプファイルを作成します。
    1. プロセス名を右クリックし
    2. コンテキストメニューから「ダンプファイルの作成」を選択します。
    3. 「ダンプのプロセス」ウィンドウで、.dmp ファイルが保存されるフォルダに注意してください。
create dump

アクティブなプロセスのコマンドライン情報のエクスポート

以下のスクリプトの実行結果をテキストファイルに保存します。

$processNames = "VeeamAgent", "Veeam.Backup.Manager"
$matchingProcesses = Get-Process | Where-Object { $processNames -contains $_.ProcessName }
if ($matchingProcesses -eq $null) {
Write-Host "Processes, $processNames, were not detected."
} else {
$processDetails = @()
foreach ($process in $matchingProcesses) {
$commandLine = (Get-CimInstance -ClassName Win32_Process -Filter "ProcessId = $($process.Id)").CommandLine
$processDetail = [PSCustomObject]@{
PID = $process.Id
StartTime = $process.StartTime
CommandLine = $commandLine
}
$processDetails += $processDetail
}
$logFilePath = "$env:TEMP\PIDs.GUIDs.$(Get-Date -Format 'yyyyMMddHHmmss').log"
$processDetails | Out-File $logFilePath -Width 10000
Start-Process -FilePath notepad.exe -ArgumentList $logFilePath
}

Veeam Backup & Replicationログの収集

  1. Veeam Backup & Replication Consoleを開きます。
  2. Export logsで、すべてのコンポーネントを選択し、過去1日分の期間を指定します。

 

収集したデータの結合とケースへの添付

生成された.dmpファイル、エクスポートされたプロセスコマンドラインリスト、ログエクスポートを1つのZIPファイルにまとめ、そのファイルをVeeam Supportのケースに添付します。

その他の情報

Automated Collection via Script

以下のスクリプトは、スタックしたジョブを調査するためにプロセスダンプやその他の関連情報をエクスポートするためのサービスとして提供されています。

プロセスダンプの生成により、CPU が短時間に高負荷になる可能性があることに注意してください。

このスクリプトのサポートはありませんので、失敗した場合は手動で必要な情報を収集してください。

このスクリプトには、MicrosoftのSysinternalsツールである、ProcDumpが必要です。

このスクリプトとprocdump.exeの組み合わせはVeeam Backup Serverまたは関連するWindowsベースのコンポーネントサーバ上で実行し、関連するプロセスダンプを収集することができます。このスクリプトはVeeam Backup Server上で実行された場合のみVeeam Backup & Replicationログをエクスポートします。

  1. ProcDump をダウンロードし、ProcDump.exe をフォルダに解凍します。
    注:スクリプトが使用するデフォルトのフォルダは C:\Temp\ です。
  2. ProcDump.exe を保存したフォルダと同じフォルダに、次のスクリプトを ProcDump.ps1 ファイルとして保存します。
クリックして展開し、スクリプトをご確認ください。
#Configurable Variables
$procDump = "C:\temp\procdump.exe"
$logFolder = "C:\temp\"

#Define Processes and Log Output Specifications
$processNames = "VeeamAgent", "Veeam.Backup.Manager"
$PSDefaultParameterValues['Out-File:Width'] = 2000
$bundleLogs = 0 #leave set to 0, the script will set it to 1 if it collects something that needs to be compressed.

#Create Log Write Function
function Write-HostWithLog {
param(
[Parameter(Mandatory = $true, Position = 0)]
[string]$Message
)
$formattedMessage = $Message
# Write to console
Write-Host $formattedMessage
# Write to log file
$formattedMessage | Out-File -FilePath $logFile -Append
}

# Create Log Folder and Script Log File
$logPath = (Join-Path -Path $logFolder -ChildPath "KB1727_Logs_$(Get-Date -Format "yyMMddHHmmss")")
New-Item -ItemType Directory -Path $logPath -Force
$logFile = (Join-Path -Path $logPath -ChildPath "DumpLog.log")


#Get the processes that match the specified process names
$matchingProcesses = Get-Process | Where-Object { $processNames -contains $_.ProcessName }
#If no processes are found, skip process dumping
if ($matchingProcesses -eq $null) {
Write-HostWithLog "Processes $processNames were not detected. No processes to dump."
} else {
$bundleLogs = 1
#List Processes
Write-HostWithLog "The following processes were found:"
Write-HostWithLog (($matchingProcesses) | Out-String)
# Create a process dump for each matching process
foreach ($process in $matchingProcesses) {
$dumpFilePath = Join-Path -Path $logPath -ChildPath "$($process.Name)_$($process.Id)_$(Get-Date -Format "yyyyMMdd_HHmmss").dmp"
$commandLine = $(Get-CimInstance -ClassName Win32_Process -Filter "ProcessId = $($process.Id)").CommandLine
Write-HostWithLog "Creating dump for process: [$($process.Name)] with PID [$($process.Id)]"
Write-HostWithLog "Process Command Line: [$commandLine]"
#Dump Process
Start-Process -FilePath $procDump -ArgumentList "-accepteula -ma $($process.Id) $dumpFilePath" -NoNewWindow -Wait
Write-HostWithLog "Dump Created: [$dumpFilePath]"
Write-HostWithLog "------------------------------------------------"
}
}
#Test if VBR cmdlets are available
if (Get-Command Get-VBRJob -errorAction SilentlyContinue) {
#Dump job lists
Write-HostWithLog "Backup Jobs"
Write-HostWithLog ((get-VBRJob | ft Name, ID, SourceType, IsRunning) | Out-String)
Write-HostWithLog "Computer Backup Jobs"
Write-HostWithLog ((Get-VBRComputerBackupJob | ft Name, Id, Type, Mode) | Out-String)
Write-HostWithLog "Unstructured Backup Jobs"
Write-HostWithLog ((Get-VBRUnstructuredBackupJob | ft Name, Id) | Out-String)
Write-HostWithLog "SureBackup Jobs"
Write-HostWithLog ((Get-VBRSureBackupJob | ft Name,Id,VirtualLab,ApplicationGroup) | Out-String)
Write-HostWithLog "Tape Jobs"
Write-HostWithLog ((Get-VBRTapeJob | ft Name, Id) | Out-String)
#Dump Logs
Export-VBRLogs -Server $(Get-VBRServer) -FolderPath $logPath -LastDays 1 -Compress:$false
$bundleLogs = 1
} else {
Write-HostWithLog "Veeam Backup & Replication cmdlets not detected, assuming this is not being run on the Veeam Backup Server. Skipping job listing."
}

#Create Log Bundle
$zipFilePath = Join-Path -Path $logFolder -ChildPath ("KB1727_Logs_$($env:COMPUTERNAME)_$(Get-Date -Format 'yyyyMMdd_HHmmss').zip")
if ($bundleLogs -eq 1 ) {
Compress-Archive -Path $logPath\* -DestinationPath $zipFilePath -Force
#Open Explorer
explorer $logFolder
} else {
Write-HostWithLog "Nothing collected. Exiting."
}
  1. スクリプトを更新し、$procDump と $logFolder に指定されたパスが正しいことを確認します。
  2. 管理者用PowerShell コンソールを開き、スクリプトを実行します。スクリプトが実行されます:
    • 実行中の各Veeam.Backup.Manager.exeとVeeamAgent.exeについて:
      • プロセスを開始するために使用されたコマンドラインをログファイルに書き込みます。これはプロセスとタスクGUIDの関連付けに便利です。
      • プロセスダンプファイルを作成します。
    • すべてのジョブのリストと関連するGUIDをエクスポートします。
    • 過去1日分のすべてのコンポーネントのVeeam Backup & Replicationログをエクスポートします。
    • 1つのZIPバンドルを作成します。

スクリプトの実行後、生成されたzipファイル( KB1727_Logs_<hostname>_<yyyyMMdd_HHmmss>.zip )をVeeamサポートケースに添付してください。

事後デバッガとしてのProcDumpの使用

Veeam操作に関連するプロセスが予期せずクラッシュする状況では、ProcDumpを事後デバッガとして動作するように設定でき、Veeamサポートがプロセスクラッシュを調査するのに役立つデータをキャプチャすることができます。

事後デバッガ (AeDebug) としてProcDumpをインストールします:

procdump -ma -i c:\dumps
事後デバッガ (AeDebug) としてProcDumpをアンインストールします:
procdump -u
To submit feedback regarding this article, please click this link: Send Article Feedback
To report a typo on this page, highlight the typo with your mouse and press CTRL + Enter.

Spelling error in text

このサイトはhCaptchaによって保護されており、そのプライバシーポリシー利用規約が適用されます(Veeamのプライバシーポリシーに記載されている場合を除く)。
Thank you!

ありがとうございました。

フィードバックを受信しました。内容を確認させていただきます。

問題が発生しました。

時間をおいて、再度お試しください

You have selected too large block!

Please try select less.

KB Feedback/Suggestion

このフォームは、ナレッジベースに対するご意見専用となっております。ソフトウェアでお困りの場合は、サポートケースを作成してください。

送信することで、Veeamのプライバシー通知に従って当社が個人情報を管理することに同意したものと見なされます。
このサイトはhCaptchaによって保護されており、そのプライバシーポリシー利用規約が適用されます(Veeamのプライバシーポリシーに記載されている場合を除く)。
製品のダウンロードを続行するにはメールアドレスを確認します
次のメールアドレスに確認メールを送信しました:
  • 認証コードが間違っています。もう一度入力してください。
認証コードのメールを次のメールアドレスに送信しました:
コードを受信していない場合は、クリックして秒後に再送信してください。
コードを受信していない場合は、クリックして再送信してください。
Thank you!

ありがとうございました。

フィードバックを受信しました。内容を確認させていただきます。

error icon

問題が発生しました。

時間をおいて、再度お試しください