Logboeken raadplegen om problemen met pijplijnen vast te stellen
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Pijplijnlogboeken bieden een krachtig hulpprogramma voor het bepalen van de oorzaak van pijplijnfouten en uitgebreide logboeken kunnen worden geconfigureerd voor meer diagnostische informatie.
Een typisch uitgangspunt is het controleren van de logboeken in uw voltooide build of release. U kunt logboeken bekijken door naar het overzicht van de pijplijnuitvoering te navigeren en de taak en taak te selecteren. Als een bepaalde taak mislukt, controleert u de logboeken voor die taak. Uitgebreide logboeken configureren om meer diagnostische informatie op te nemen.
Uitgebreide logboeken configureren
Als hulp bij het oplossen van problemen kunt u uw logboeken zodanig configureren dat ze uitgebreider zijn.
Als u uitgebreide logboeken voor één uitvoering wilt configureren, kunt u een nieuwe build starten door Run pipeline te kiezen en systeemdiagnose inschakelen te selecteren, Uitvoeren.
Als u uitgebreide logboeken voor alle uitvoeringen wilt configureren, kunt u een variabele met de naam
system.debug
toevoegen en de waarde instellen optrue
.
Als u uitgebreide logboeken voor één uitvoering wilt configureren, kunt u een nieuwe build starten door Queue Build te kiezen en de waarde voor de
system.debug
variabele in tetrue
stellen op .Als u uitgebreide logboeken voor alle uitvoeringen wilt configureren, bewerkt u de build, gaat u naar het tabblad Variabelen en voegt u een variabele met de naam
system.debug
toe, stelt u de waardetrue
ervan in en selecteert u toestaan op wachtrijtijd.Als u uitgebreide logboeken voor een YAML-pijplijn wilt configureren, voegt u de
system.debug
variabele toe in devariables
sectie:variables: system.debug: true
Azure-pijplijnlogboeken kunnen nu metrische gegevens over resourcegebruik vastleggen, zoals geheugen, CPU-gebruik en beschikbare schijfruimte. De logboeken bevatten ook resources die worden gebruikt door de pijplijnagent en onderliggende processen, waaronder taken die in een taak worden uitgevoerd. Als u vermoedt dat uw pijplijntaak resourcebeperkingen kan ondervinden, schakelt u uitgebreide logboeken in om informatie over resourcegebruik in pijplijnlogboeken te laten opnemen. Metrische gegevens over resourcegebruik zijn beschikbaar op elke agent, onafhankelijk van het hostingmodel.
Als u de metrische gegevens over het vastgelegde resourcegebruik wilt weergeven, zoekt u in de logboeken naar Agent environment resources
vermeldingen voor elke stap.
2024-02-28T17:41:15.1315148Z ##[debug]Agent environment resources - Disk: D:\ Available 12342.00 MB out of 14333.00 MB, Memory: Used 1907.00 MB out of 7167.00 MB, CPU: Usage 17.23%
Logboeken weergeven en downloaden
Als u afzonderlijke logboeken voor elke stap wilt weergeven, gaat u naar de buildresultaten voor de uitvoering en selecteert u de taak en stap.
Als u alle logboeken wilt downloaden, gaat u naar de buildresultaten voor de uitvoering, selecteert u ...en kiest u Logboeken downloaden.
Als u alle logboeken wilt downloaden, gaat u naar de buildresultaten voor de uitvoering en kiest u Alle logboeken downloaden als zip.
Naast de diagnostische logboeken van de pijplijn zijn de volgende gespecialiseerde logboektypen beschikbaar en bevatten ze mogelijk informatie om u te helpen bij het oplossen van problemen.
Diagnostische logboeken voor werkrollen
U kunt het diagnostische logboek ophalen van de voltooide build die is gegenereerd door het werkproces op de buildagent. Zoek het worker
logboekbestand met de datum- en tijdstempel van de voltooide build. Bijvoorbeeld: worker_20160623-192022-utc_6172.log
.
Diagnostische logboeken van agent
Diagnostische logboeken van agents bevatten een record over hoe de agent is geconfigureerd en wat er is gebeurd toen deze werd uitgevoerd. Zoek naar de agent
logboekbestanden. Bijvoorbeeld: agent_20160624-144630-utc.log
. Er zijn twee soorten agentlogboekbestanden:
Het logboekbestand dat is gegenereerd tijdens het uitvoeren
config.cmd
. Dit logboek:Bevat deze regel bovenaan:
Adding Command: configure
Hier ziet u de gemaakte configuratiekeuzes.
Het logboekbestand dat is gegenereerd tijdens het uitvoeren
run.cmd
. Dit logboek:Kan pas worden geopend nadat het proces is beëindigd.
Probeert verbinding te maken met uw Azure DevOps-organisatie of Team Foundation Server.
Geeft weer wanneer elke taak is uitgevoerd en hoe deze is voltooid
Beide logboeken laten zien hoe de agentmogelijkheden zijn gedetecteerd en ingesteld.
Netwerkdiagnose voor zelf-hostende agents
Stel de waarde van Agent.Diagnostic
in op true
om aanvullende logboeken te verzamelen die kunnen worden gebruikt voor het oplossen van netwerkproblemen voor zelf-hostende agents.
Bestand | Gegevens | Van toepassing op |
---|---|---|
cloudinit.* |
Cloud-init is voltooid (indien gebruikt) | Linux |
BrokenPackages.* |
Pakketten hebben een consistente status | Linux |
Agent.* |
Omgevingsvariabelen | Linux, Windows |
waagentConf.txt |
Azure VM-agent (waagent.conf) | Azure: Linux, Windows |
environment.txt / agent.* |
Lijst met accountgroepslidmaatschappen | Windows |
Notitie
Agent.Diagnostic
wordt ingesteld op true
automatisch wanneer System.Debug
is ingesteld op true
.
De Agent.Diagnostic
variabele en logboeken die in deze sectie worden beschreven, zijn beschikbaar met Agent v2.200.0 en hoger.
Zie het oplossen van problemen met agents in de opensource-agent van de Azure Pipelines-agent van de Azure Pipelines-agent voor meer informatie.
Andere logboeken
In de diagnostische logboeken vindt environment.txt
u en capabilities.txt
.
Het environment.txt
bestand bevat verschillende informatie over de omgeving waarin uw build is uitgevoerd. Dit omvat informatie zoals welke taken worden uitgevoerd, of de firewall is ingeschakeld, powerShell-versiegegevens en enkele andere items. We voegen voortdurend aan deze gegevens toe om deze nuttiger te maken.
Het capabilities.txt
bestand biedt een schone manier om alle mogelijkheden te zien die zijn geïnstalleerd op de buildcomputer waarop uw build is uitgevoerd.
HTTP-traceringslogboeken
- Ingebouwde HTTP-tracering gebruiken
- Volledige HTTP-tracering gebruiken - Windows
- Volledige HTTP-tracering gebruiken - macOS en Linux
Belangrijk
HTTP-traceringen en traceringsbestanden kunnen wachtwoorden en andere geheimen bevatten. Plaats ze niet op een openbare site.
Ingebouwde HTTP-tracering gebruiken
Als uw agent versie 2.114.0 of hoger is, kunt u de HTTP-verkeersheaders traceren en naar het diagnostische logboek schrijven. Stel de VSTS_AGENT_HTTPTRACE
omgevingsvariabele in voordat u de agent.listener start.
Windows:
set VSTS_AGENT_HTTPTRACE=true
macOS/Linux:
export VSTS_AGENT_HTTPTRACE=true
Volledige HTTP-tracering gebruiken - Windows
Start Fiddler.
U wordt aangeraden alleen naar agentverkeer te luisteren. File > Capture Traffic off (F12)
Https-verkeer ontsleutelen inschakelen. Extra > Fiddler Opties > HTTPS-tabblad. HTTPS-verkeer ontsleutelen
Laat de agent weten dat de proxy moet worden gebruikt:
set VSTS_HTTP_PROXY=http://127.0.0.1:8888
Voer de agent interactief uit. Als u als een service werkt, kunt u instellen als de omgevingsvariabele in het configuratiescherm voor het account waarop de service wordt uitgevoerd.
Start de agent opnieuw.
Volledige HTTP-tracering gebruiken - macOS en Linux
Gebruik Charles Proxy (vergelijkbaar met Fiddler in Windows) om de HTTP-tracering van de agent vast te leggen.
Start Charles Proxy.
Charles: Proxyproxy > Instellingen > SSL-tabblad. Inschakelen. URL toevoegen.
Charles: Proxy > Mac OSX Proxy. U wordt aangeraden om alleen agentverkeer weer te geven.
export VSTS_HTTP_PROXY=http://127.0.0.1:8888
Voer de agent interactief uit. Als deze wordt uitgevoerd als een service, kunt u instellen in het .env-bestand. Zie nix service
Start de agent opnieuw.
Aangepaste logboeken vastleggen
Naast de ingebouwde logboeken kunt u taken en scripts gebruiken om aangepaste logboeken in uw pijplijn vast te leggen. In de volgende voorbeelden ziet u hoe u resourcegebruik, netwerktraceringen, geheugendumps en perfview traceringen kunt vastleggen. Als u met klantondersteuning werkt, wordt u mogelijk gevraagd om logboeken zoals deze vast te leggen.
- Details van resourcegebruik vastleggen
- Een dotnet-procesgeheugendump vastleggen met ProcDump
- ETW-traceringen vastleggen voor een gehoste agent
- Capture perfview traces for Visual Studio build
Aangepaste logboeken ophalen
Nadat u een aangepast logboek in uw pijplijn hebt vastgelegd, moet u het uploaden zodat deze kan worden opgehaald voor revisie. U kunt het aangepaste logboek uploaden als onderdeel van de standaardpijplijnlogboeken of u kunt het uploaden als artefact. In de voorbeelden in de volgende secties ziet u beide manieren om aangepaste logboeken te uploaden.
Een logboek uploaden als onderdeel van de standaardlogboeken
Als u het aangepaste logboek wilt uploaden als onderdeel van de standaardpijplijnlogboeken, moet u het ##vso[task.uploadfile]
gewenste bestand uploaden. Als u deze opdracht wilt gebruiken, geeft u deze op als onderdeel van een scriptopdracht, zoals wordt weergegeven in het volgende voorbeeld. Het bestand kan worden gedownload en bekeken als onderdeel van de standaardpijplijnlogboeken. De ##vso[task.uploadfile]
methode is geschikt voor het uploaden van één logboekbestand. Als u meer dan één logboekbestand hebt, moet u voor elk bestand een afzonderlijke ##vso[task.uploadfile]
regel gebruiken.
- pwsh: Write-Host "##vso[task.uploadfile]$(Agent.TempDirectory)\resource-usage.txt"
Zie Logboekregistratieopdrachten en UploadFile voor meer informatie: Upload een bestand dat kan worden gedownload met taaklogboeken.
Een logboek uploaden als een pijplijnartefact
Als u een aangepast logboek wilt uploaden als een pijplijnartefact, gebruikt u de PublishPipelineArtifact@1 taak. PublishPipelineArtifact@1
kan één bestand of de bestanden in een mappad uploaden en is handig als u veel aangepaste logboekbestanden hebt om te uploaden.
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)/s/trace'
artifact: 'file_result.pcap'
publishLocation: 'pipeline'
Zie Pijplijnartefacten publiceren voor meer informatie.
Details van resourcegebruik vastleggen
Wanneer u Azure DevOps Services gebruikt, kunt u het resourcegebruik in de logboeken zien, waaronder schijfgebruik, geheugengebruik en CPU-gebruik, door uitgebreide logboeken in te schakelen. Wanneer de pijplijn is voltooid, zoekt u in de logboeken naar Agent environment resources
vermeldingen voor elke stap.
2024-02-28T17:41:15.1315148Z ##[debug]Agent environment resources - Disk: D:\ Available 12342.00 MB out of 14333.00 MB, Memory: Used 1907.00 MB out of 7167.00 MB, CPU: Usage 17.23%
Als u Azure DevOps Server gebruikt of als u aanvullende metrische gegevens wilt verzamelen, kunt u PowerShell gebruiken om resourcegebruik vast te leggen en te uploaden naar de pijplijnlogboeken. Wanneer de pijplijnuitvoering is voltooid, kunt u de pijplijnlogboeken downloaden en de vastgelegde gegevens bekijken. Als de stap de Upload resource usage from pipeline run
zesde stap in de taak is, wordt de bestandsnaam in de logboeken 6_resource-usage.txt.
# Place this task in your pipeline to log the current resource utilization
# of the pipeline. This task appends the specified resource usage to a logfile
# which is uploaded at the end of the current pipeline job.
- pwsh: |
$logFile = '$(Agent.TempDirectory)\resource-usage.txt'
if (!(Test-Path $logFile))
{
New-Item $logFile
}
Get-Date | Out-File -FilePath $logFile -Append
Get-Volume | Out-File -FilePath $logFile -Append
Get-Counter '\Memory\Available MBytes' | Out-File -FilePath $logFile -Append
Get-Counter '\Processor(_Total)\% Processor Time' | Out-File -FilePath $logFile -Append
sleep 10
displayName: 'Check resource utilization'
# Other tasks here, and you can repeat the "Check resource utilization"
# step if desired, and the results will be appended to the resource-usage.txt file
- pwsh: Write-Host "##vso[task.uploadfile]$(Agent.TempDirectory)\resource-usage.txt"
displayName: 'Upload resource usage from pipeline run'
condition: always()
Een dotnet-procesgeheugendump vastleggen met ProcDump
Als u een testuitvoering hebt die vastloopt, kan de klantondersteuning u vragen een geheugendump van het dotnet-proces vast te leggen na de mislukte testuitvoering. Voeg de volgende taak toe na uw Visual Studio Test-taak met condition: always()
. Wanneer de pijplijnuitvoering is voltooid, kunt u de pijplijnlogboeken downloaden, inclusief de geheugendump.
# Run this task after your test execution crashes
# with a condition of alway() so that it always runs
- pwsh: |
Invoke-WebRequest https://download.sysinternals.com/files/Procdump.zip -OutFile $(Agent.TempDirectory)\Procdump.zip
mkdir $(Agent.TempDirectory)\Procdump
unzip $(Agent.TempDirectory)\Procdump.zip -d Procdump
cd $(Agent.TempDirectory)\Procdump
Get-Process dotnet | % { $(Agent.TempDirectory)\procdump.exe -accepteula -ma $_.Id dotnet-$($_.Id).dmp }
Compress-Archive *.dmp -DestinationPath $(Agent.TempDirectory)\dump_files.zip
Write-Host "##vso[task.uploadfile]$(Agent.TempDirectory)\dump_files.zip"
condition: always()
displayName: 'Create and upload a dotnet process memory dump'
ETW-traceringen vastleggen voor een gehoste agent
Als u netwerkproblemen met door Microsoft gehoste agents wilt oplossen, kan de klantondersteuning u vragen ETW-traceringen te verzamelen. Wanneer de pijplijn-uitvoering is voltooid, kunt u de pijplijn-logboeken downloaden, inclusief de ETW-traceringen.
# Add this task to start the ETW trace
- script: netsh trace start scenario=InternetClient capture=yes tracefile=$(Agent.TempDirectory)\networktrace.etl
displayName: 'Start ETW trace'
# Other tasks here
# Add these 2 tasks to stop the trace and upload
# the trace to the pipeline logs
- script: netsh trace stop
displayName: 'Stop ETW trace'
- pwsh: |
Write-Host "##vso[task.uploadfile]$(Agent.TempDirectory)\networktrace.etl"
Write-Host "##vso[task.uploadfile]$(Agent.TempDirectory)\networktrace.cab"
displayName: 'Upload ETW trace logs'
Traceringen vastleggen perfview voor Visual Studio-build
Als de klantondersteuning u vraagt om een perfview tracering van uw Visual Studio-build te maken, voegt u de volgende taken toe aan uw pijplijn voor en na de buildstap van Visual Studio.
Nadat u de pijplijn hebt uitgevoerd, kunt u het PerfViewLog-artefact downloaden vanuit de details van de pijplijnuitvoering en het klantondersteuningsbestand verzenden.
steps:
- task: PowerShell@2 # download the perfview exe
inputs:
targetType: 'inline'
script: |
invoke-webrequest https://github.com/microsoft/perfview/releases/download/v3.1.7/PerfView.exe -OutFile PerfView.exe
- task: PowerShell@2
inputs:
targetType: 'inline' # start perfview to capture the traces before build build task
script: '$(System.DefaultWorkingDirectory)\PerfView.exe "/DataFile:PerfViewData.etl" /accepteula /BufferSizeMB:512 /StackCompression /CircularMB:5000 /Providers:"Microsoft-Windows-IIS" /logfile:"PerfView.log" /zip:true /norundown start'
- task: VSBuild@1
displayName: '$(solution)' # build of the solution, note the msbuildargs might be different for your scenario
inputs:
solution: '$(solution)'
clean: true
msbuildArgs: '/p:DeployOnBuild=true /p:PrecompileBeforePublish=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)" /p:TransformWebConfigEnabled=false /p:AutoParameterizationWebConfigConnectionStrings=false /p:MarkWebConfigAssistFilesAsExclude=false /p:ProfileTransformWebConfigEnabled=false /p:IsTransformWebConfigDisabled=true'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PowerShell@2 # stop the perfview tracing
inputs:
targetType: 'inline'
script: |
$(System.DefaultWorkingDirectory)\perfview.exe /accepteula /logfile:"PerfView.log" stop
- task: PowerShell@2 # abort perfview, it seems required.
inputs:
targetType: 'inline'
script: '$(System.DefaultWorkingDirectory)\perfview.exe /accepteula /logfile:"PerfView.log" abort'
- task: PowerShell@2 # add a sleep of 5 mins, to givet time for required for traces to be complete
inputs:
targetType: 'inline'
script: 'Start-Sleep -Seconds 300'
- task: PublishPipelineArtifact@1 # upload the traces
displayName: 'Publish Pipeline Artifact'
inputs:
artifactName: webapp