Share via


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.

    Rendszerdiagnosztika engedélyezése

  • 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ét true.

  • 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ét true, é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 a variables 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.

Tevékenységnapló

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.

Naplók letöltése

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.cmdlé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.cmdlé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.Diagnostica 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

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

  1. Indítsa el a Fiddlert.

  2. Azt javasoljuk, hogy csak az ügynök forgalmát figyelje. Fájlrögzítési > forgalom kikapcsolva (F12)

  3. Engedélyezze a HTTPS-forgalom visszafejtését. Eszközök > Fiddler Options > HTTPS tab. A HTTPS-forgalom visszafejtése

  4. Tájékoztassa az ügynököt, hogy használja a proxyt:

    set VSTS_HTTP_PROXY=http://127.0.0.1:8888
    
  5. 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.

  6. 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.

  1. Indítsa el Charles Proxyt.

  2. Charles: Proxyproxy > Gépház > SSL tab. Enable. URL-cím hozzáadása.

  3. 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
    
  4. Az ügynök interaktív futtatása. Ha szolgáltatásként fut, beállíthatja az .env fájlt. Lásd: nix service

  5. 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.

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ókbanAgent 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