Naplók áttekintése a folyamat problémáinak diagnosztizálásához
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
A folyamatnaplók hatékony eszközt biztosítanak a folyamathibák okának meghatározásához, és részletes naplók konfigurálhatók további diagnosztikai információk biztosítására.
Egy tipikus kiindulási pont a naplók áttekintése a befejezett buildben vagy kiadásban. A naplók megtekintéséhez navigáljon a folyamatfuttatás összegzésére, és válassza ki a feladatot és a feladatot. Ha egy adott tevékenység meghiúsul, ellenőrizze az adott tevékenység naplóit. Konfigurálja a részletes naplókat , hogy további diagnosztikai információkat tartalmazzon.
Részletes naplók konfigurálása
A hibaelhárításhoz a naplókat részletesebben is konfigurálhatja.
Ha részletes naplókat szeretne konfigurálni egyetlen futtatáshoz, elindíthat egy új buildet a Futtatás folyamat kiválasztásával, majd válassza a Rendszerdiagnosztika engedélyezése, Futtatás lehetőséget.
Az összes futtatás részletes naplóinak konfigurálásához hozzáadhat egy elnevezett
system.debug
változót, és beállíthatja annak értékéttrue
.
Ha részletes naplókat szeretne konfigurálni egyetlen futtatáshoz, elindíthat egy új buildet a Queue build kiválasztásával, majd a
system.debug
változótrue
értékének beállításával.Ha részletes naplókat szeretne konfigurálni az összes futtatáshoz, szerkessze a buildet, lépjen a Változók lapra, és adjon hozzá egy változót
system.debug
, állítsa be az értékéttrue
, és válassza az Engedélyezés üzenetsor idején lehetőséget.A YAML-folyamatok részletes naplóinak konfigurálásához adja hozzá a
system.debug
változót avariables
következő szakaszban:variables: system.debug: true
Az Azure-folyamatnaplók mostantól rögzíthetik az erőforrás-kihasználtsági metrikákat, például a memóriát, a processzorhasználatot és a rendelkezésre álló lemezterületet. A naplók a folyamatügynök és a gyermekfolyamatok által használt erőforrásokat is tartalmazzák, beleértve a feladatban futtatott feladatokat is. Ha azt gyanítja, hogy a folyamatfeladat erőforrás-korlátozásokba ütközhet, engedélyezze a részletes naplókban, hogy az erőforrás-kihasználtsági adatok be legyenek ágyazva a folyamatnaplókba. Az erőforrás-kihasználtsági metrikák bármely ügynökön elérhetők, függetlenül az üzemeltetési modelltől.
A rögzített erőforrás-kihasználtsági metrikák megtekintéséhez keresse meg az egyes lépések bejegyzéseit a naplókbanAgent environment resources
.
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%
Naplók megtekintése és letöltése
Az egyes lépések egyes naplóinak megtekintéséhez keresse meg a futtatás builderedményeit, és válassza ki a feladatot és a lépést.
Az összes napló letöltéséhez keresse meg a futtatás builderedményeit, válassza a ..., majd a Naplók letöltése lehetőséget.
Az összes napló letöltéséhez keresse meg a futtatás builderedményeit, és válassza az Összes napló letöltése zip formátumban lehetőséget.
A folyamatdiagnosztikai naplók mellett a következő speciális naplótípusok érhetők el, és a hibaelhárításhoz szükséges információkat is tartalmazhatnak.
Feldolgozói diagnosztikai naplók
Lekérheti a munkavégző folyamat által létrehozott kész build diagnosztikai naplóját a buildügynökön. Keresse meg a worker
kész build dátum- és időbélyegét tartalmazó naplófájlt. Például: worker_20160623-192022-utc_6172.log
.
Ügynök diagnosztikai naplói
Az ügynök diagnosztikai naplói rögzítik, hogyan lett konfigurálva az ügynök, és hogy mi történt a futtatáskor. Keresse meg a agent
naplófájlokat. Például: agent_20160624-144630-utc.log
. Kétféle ügynök naplófájl létezik:
A futtatáskor
config.cmd
létrehozott naplófájl. Ez a napló:Ez a sor a tetején található:
Adding Command: configure
Megjeleníti az elvégzett konfigurációs beállításokat.
A futtatáskor
run.cmd
létrehozott naplófájl. Ez a napló:A folyamat befejezéséig nem nyitható meg.
Megpróbál csatlakozni az Azure DevOps-szervezethez vagy a Team Foundation-kiszolgálóhoz.
Megjeleníti az egyes feladatok futtatásának és befejezésének módját
Mindkét napló bemutatja az ügynök képességeinek észlelését és beállítását.
Hálózati diagnosztika saját üzemeltetésű ügynökökhöz
Adja meg az érték értékét Agent.Diagnostic
, true
hogy további naplókat gyűjtsön, amelyek a saját üzemeltetésű ügynökök hálózati problémáinak elhárításához használhatók.
Fájl | Tájékoztatás | A következőre érvényes: |
---|---|---|
cloudinit.* |
A Cloud-init sikeresen befejeződött (ha használják) | Linux |
BrokenPackages.* |
A csomagok konzisztens állapotban vannak | Linux |
Agent.* |
Környezeti változók | Linux, Windows |
waagentConf.txt |
Azure-beli virtuálisgép-ügynök (waagent.conf) | Azure: Linux, Windows |
environment.txt / agent.* |
Fiókcsoport tagsági listája | Windows |
Feljegyzés
Agent.Diagnostic
a beállítás true
értéke automatikus, ha System.Debug
a beállítás értéke .true
Az Agent.Diagnostic
ebben a szakaszban ismertetett változó és naplók az Ügynök 2.200.0-s vagy újabb verziójával érhetők el.
További információ: ügynök hibaelhárítása a microsoft/azure-pipelines-agent Azure Pipelines-ügynök nyílt forráskódú ügynökadattárában.
Egyéb naplók
A diagnosztikai naplókban megtalálja environment.txt
és capabilities.txt
.
A environment.txt
fájl különböző információkat tartalmaz arról a környezetről, amelyen belül a build futott. Ez olyan információkat tartalmaz, mint a futtatott feladatok, a tűzfal engedélyezve van-e, a PowerShell verzióadatai és néhány egyéb elem. Folyamatosan hozzáadjuk ezeket az adatokat, hogy még hasznosabbak legyenek.
A capabilities.txt
fájl tiszta módot biztosít a buildet futtató buildelési gépen telepített összes képesség megtekintésére.
HTTP-nyomkövetési naplók
- Beépített HTTP-nyomkövetés használata
- Teljes HTTP-nyomkövetés használata – Windows
- Teljes HTTP-nyomkövetés használata – macOS és Linux
Fontos
A HTTP-nyomkövetések és nyomkövetési fájlok jelszavakat és egyéb titkos kulcsokat tartalmazhatnak. Ne tegye közzé őket nyilvános webhelyeken.
Beépített HTTP-nyomkövetés használata
Ha az ügynök 2.114.0-s vagy újabb verziójú, nyomon követheti a HTTP-forgalom fejléceit, és beírhatja őket a diagnosztikai naplóba. Állítsa be a környezeti változót az VSTS_AGENT_HTTPTRACE
agent.listener elindítása előtt.
Windows:
set VSTS_AGENT_HTTPTRACE=true
macOS/Linux:
export VSTS_AGENT_HTTPTRACE=true
Teljes HTTP-nyomkövetés használata – Windows
Indítsa el a Fiddlert.
Azt javasoljuk, hogy csak az ügynök forgalmát figyelje. Fájlrögzítési > forgalom kikapcsolva (F12)
Engedélyezze a HTTPS-forgalom visszafejtését. Eszközök > Fiddler Options > HTTPS tab. A HTTPS-forgalom visszafejtése
Tájékoztassa az ügynököt, hogy használja a proxyt:
set VSTS_HTTP_PROXY=http://127.0.0.1:8888
Az ügynök interaktív futtatása. Ha szolgáltatásként fut, beállíthatja környezeti változóként a vezérlőpulton ahhoz a fiókhoz, amelyben a szolgáltatás fut.
Indítsa újra az ügynököt.
Teljes HTTP-nyomkövetés használata – macOS és Linux
Az ügynök HTTP-nyomkövetésének rögzítéséhez használja a (WindowsOn a Fiddlerhez hasonló) Charles Proxyt.
Indítsa el Charles Proxyt.
Charles: Proxyproxy > Gépház > SSL tab. Enable. URL-cím hozzáadása.
Charles: Proxy > Mac OSX Proxy. Javasoljuk, hogy tiltsa le az ügynök forgalmának megtekintését.
export VSTS_HTTP_PROXY=http://127.0.0.1:8888
Az ügynök interaktív futtatása. Ha szolgáltatásként fut, beállíthatja az .env fájlt. Lásd: nix service
Indítsa újra az ügynököt.
Egyéni naplók rögzítése
A beépített naplók mellett feladatokkal és szkriptekkel is rögzítheti a folyamat egyéni naplóit. Az alábbi példák bemutatják, hogyan rögzíthetők az erőforrások kihasználtsága, a hálózati nyomkövetések, a memóriaképek és perfview a nyomkövetések. Ha az ügyfélszolgálattal dolgozik, a rendszer megkérheti, hogy rögzítse az ilyen naplókat.
- Erőforrás-kihasználtság részleteinek rögzítése
- Dotnet-folyamat memóriaképének rögzítése a ProcDump használatával
- Üzemeltetett ügynök ETW-nyomkövetéseinek rögzítése
- Capture perfview traces for Visual Studio build
Egyéni naplók lekérése
Miután rögzített egy egyéni naplót a folyamatban, fel kell töltenie, hogy lekérhető legyen felülvizsgálatra. Az egyéni naplót feltöltheti a normál folyamatnaplók részeként, vagy feltöltheti összetevőként. Az alábbi szakaszokban látható példák az egyéni naplók feltöltésének mindkét módját mutatják be.
Napló feltöltése a standard naplók részeként
Ha az egyéni naplót a normál folyamatnaplók részeként szeretné feltölteni, töltse ##vso[task.uploadfile]
fel a kívánt fájlt. A parancs használatához adja meg egy szkriptparancs részeként az alábbi példában látható módon. A fájl a szabványos folyamatnaplók részeként tölthető le és tekinthető meg. A ##vso[task.uploadfile]
módszer alkalmas egyetlen naplófájl feltöltésére. Ha több naplófájllal rendelkezik, minden fájlhoz külön ##vso[task.uploadfile]
sort kell használnia.
- pwsh: Write-Host "##vso[task.uploadfile]$(Agent.TempDirectory)\resource-usage.txt"
További információ: Naplózási parancsok és UploadFile: Feladatnaplókkal letölthető fájl feltöltése.
Napló feltöltése folyamatösszetevőként
Ha egyéni naplót szeretne feltölteni folyamatösszetevőként, használja a PublishPipelineArtifact@1 feladatot. PublishPipelineArtifact@1
egyetlen fájlt vagy fájlokat tölthet fel egy könyvtár elérési útján, és akkor hasznos, ha sok egyéni naplófájlt kell feltöltenie.
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)/s/trace'
artifact: 'file_result.pcap'
publishLocation: 'pipeline'
További információ: Folyamatösszetevők közzététele.
Erőforrás-kihasználtság részleteinek rögzítése
Az Azure DevOps Services használatakor részletes naplók engedélyezésével láthatja a naplók erőforrás-kihasználtságát, beleértve a lemezhasználatot, a memóriahasználatot és a PROCESSZORhasználatot. Amikor a folyamat befejeződött, keresse meg a naplókban Agent environment resources
az egyes lépések bejegyzéseit.
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%
Ha Az Azure DevOps Servert használja, vagy ha további metrikákat szeretne gyűjteni, a PowerShell használatával rögzítheti az erőforrások kihasználtságát, és feltöltheti azt a folyamatnaplókba. A folyamat futtatása után letöltheti a folyamatnaplókat, és megtekintheti a rögzített adatokat. Ha a Upload resource usage from pipeline run
lépés a feladat hatodik lépése, a naplók fájlneve 6_resource-usage.txt lesz.
# 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()
Dotnet-folyamat memóriaképének rögzítése a ProcDump használatával
Ha a teszt végrehajtása összeomlik, az ügyfélszolgálat megkérheti, hogy rögzítse a dotnet-folyamat memóriaképét a sikertelen teszt végrehajtása után. Adja hozzá a következő feladatot a Visual Studio-tesztfeladat után a következővel condition: always()
: A folyamat futtatása után letöltheti a folyamatnaplókat, beleértve a memóriaképet is.
# 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'
Üzemeltetett ügynök ETW-nyomkövetéseinek rögzítése
Ha hálózati problémákat hárít el a Microsoft által üzemeltetett ügynökökkel kapcsolatban, az ügyfélszolgálat kérheti, hogy gyűjtsön ETW-nyomkövetéseket. A feldolgozási sor lefutásának befejeződése után letöltheti a feldolgozási sor naplókat, beleértve az ETW-nyomkövetéseket is.
# 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'
Nyomkövetések rögzítése perfview a Visual Studio buildeléséhez
Ha az ügyfélszolgálat arra kéri, hogy hozzon létre egy perfview nyomkövetést a Visual Studio-buildből, adja hozzá a következő feladatokat a folyamathoz a Visual Studio buildelési lépése előtt és után.
A folyamat futtatása után letöltheti a PerfViewLog összetevőt a folyamat futtatási részleteiből , és elküldheti a fájl ügyfélszolgálatát.
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