İşlem hattı sorunlarını tanılamak için günlükleri gözden geçirme
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
İşlem hattı günlükleri, işlem hattı hatalarının nedenini belirlemek için güçlü bir araç sağlar ve ayrıntılı günlükler daha fazla tanılama bilgisi sağlayacak şekilde yapılandırılabilir.
Tipik bir başlangıç noktası, tamamlanmış derleme veya yayınınızın günlüklerini gözden geçirmektir. İşlem hattı çalıştırma özetine gidip işi ve görevi seçerek günlükleri görüntüleyebilirsiniz. Belirli bir görev başarısız olursa, söz konusu görevin günlüklerini denetleyin. Ayrıntılı günlükleri daha fazla tanılama bilgisi içerecek şekilde yapılandırın.
Ayrıntılı günlükleri yapılandırma
Sorun giderme aşamasını kolaylaştırmak için günlüklerinizi daha ayrıntılı olacak şekilde yapılandırabilirsiniz.
Tek bir çalıştırma için ayrıntılı günlükleri yapılandırmak için, İşlem hattını çalıştır'ı seçip Sistem tanılamasını etkinleştir, Çalıştır'ı seçerek yeni bir derleme başlatabilirsiniz.
Tüm çalıştırmalar için ayrıntılı günlükleri yapılandırmak için adlı
system.debug
bir değişken ekleyebilir ve değerini olaraktrue
ayarlayabilirsiniz.
Tek bir çalıştırma için ayrıntılı günlükleri yapılandırmak için, Kuyruk derlemesi'ni seçerek ve değişkenin
system.debug
true
değerini olarak ayarlayarak yeni bir derleme başlatabilirsiniz.Tüm çalıştırmalar için ayrıntılı günlükleri yapılandırmak için derlemeyi düzenleyin, Değişkenler sekmesine gidin ve adlı
system.debug
bir değişken ekleyin, değerini olaraktrue
ayarlayın ve Kuyruk Zamanında İzin Ver'i seçin.YAML işlem hattı için ayrıntılı günlükleri yapılandırmak için değişkeni
variables
bölümüne ekleyinsystem.debug
:variables: system.debug: true
Azure işlem hattı günlükleri artık bellek, CPU kullanımı ve kullanılabilir disk alanı gibi kaynak kullanım ölçümlerini yakalayabilir. Günlükler ayrıca işlem hattı aracısı tarafından kullanılan kaynakları ve bir işte çalıştırılan görevler de dahil olmak üzere alt işlemleri içerir. İşlem hattı işinizin kaynak kısıtlamalarıyla karşılaşabileceğini düşünüyorsanız, işlem hattı günlüklerine kaynak kullanımı bilgilerinin eklenmiş olması için ayrıntılı günlükleri etkinleştirin. Kaynak kullanım ölçümleri, barındırma modelinden bağımsız olarak herhangi bir aracıda kullanılabilir.
Yakalanan kaynak kullanımı ölçümlerini görüntülemek için günlüklerde her adıma Agent environment resources
ilişkin girdileri arayın.
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%
Günlükleri görüntüleme ve indirme
Her adımın tek tek günlüklerini görüntülemek için çalıştırmanın derleme sonuçlarına gidin ve işi ve adımı seçin.
Tüm günlükleri indirmek için çalıştırmanın derleme sonuçlarına gidin, ... öğesini seçin ve Günlükleri indir'i seçin.
Tüm günlükleri indirmek için çalıştırmanın derleme sonuçlarına gidin ve Tüm günlükleri zip olarak indir'i seçin.
İşlem hattı tanılama günlüklerine ek olarak, aşağıdaki özel günlük türleri kullanılabilir ve sorun gidermenize yardımcı olacak bilgiler içerebilir.
Çalışan tanılama günlükleri
Derleme aracısı üzerinde çalışan işlemi tarafından oluşturulan tamamlanmış derlemenin tanılama günlüğünü alabilirsiniz. worker
Tamamlanmış derlemenizin tarih ve saat damgasını içeren günlük dosyasını arayın. Örneğin, worker_20160623-192022-utc_6172.log
.
Aracı tanılama günlükleri
Aracı tanılama günlükleri, aracının nasıl yapılandırıldığını ve çalıştırıldığında ne olduğunu gösteren bir kayıt sağlar. Günlük dosyalarını arayın agent
. Örneğin, agent_20160624-144630-utc.log
. İki tür aracı günlük dosyası vardır:
çalıştırdığınızda
config.cmd
oluşturulan günlük dosyası. Bu günlük:Bu satırı en üste yakın bir noktada içerir:
Adding Command: configure
Yapılan yapılandırma seçimlerini gösterir.
çalıştırdığınızda
run.cmd
oluşturulan günlük dosyası. Bu günlük:İşlem sonlandırılana kadar açılamaz.
Azure DevOps kuruluşunuza veya Team Foundation Server'a bağlanmaya çalışır.
Her işin ne zaman çalıştırıldığını ve nasıl tamamlandığını gösterir
Her iki günlük de aracı özelliklerinin nasıl algılandığını ve ayarlandığını gösterir.
Şirket içinde barındırılan aracılar için ağ tanılama
Şirket içinde barındırılan aracıların ağ sorunlarını giderirken kullanılabilecek ek günlükleri toplamak için Agent.Diagnostic
değerini true
olarak ayarlayın.
Dosya | Bilgiler | Şunlara uygulanır |
---|---|---|
cloudinit.* |
Cloud-init başarıyla tamamlandı (kullanılıyorsa) | Linux |
BrokenPackages.* |
Paketler tutarlı durumda | Linux |
Agent.* |
Ortam değişkenleri | Linux, Windows |
waagentConf.txt |
Azure VM aracısı (waagent.conf) | Azure: Linux, Windows |
environment.txt / agent.* |
Hesap grubu üyelik listesi | Windows |
Not
System.Debug
true
değerine ayarlandığında Agent.Diagnostic
otomatik olarak true
değerine ayarlanır.
Bu Agent.Diagnostic
bölümde açıklanan değişken ve günlükler Agent v2.200.0 ve üzeri sürümlerde kullanılabilir.
Daha fazla bilgi için bkz. microsoft/azure-pipelines-agent Azure Pipelines aracısı açık kaynak aracı deposunda aracı sorunlarını giderme.
Diğer günlükler
ve capabilities.txt
tanılama günlüklerinin içinde bulabilirsinizenvironment.txt
.
Dosya, environment.txt
derlemenizin çalıştırıldığı ortam hakkında çeşitli bilgilere sahiptir. Bu, hangi görevlerin çalıştırılır, güvenlik duvarının etkin olup olmadığı, PowerShell sürüm bilgileri ve diğer bazı öğeler gibi bilgileri içerir. Bu verileri daha kullanışlı hale getirmek için sürekli olarak ekliyoruz.
Dosya, capabilities.txt
derlemenizi çalıştıran derleme makinesinde yüklü olan tüm özellikleri görmek için temiz bir yol sağlar.
HTTP izleme günlükleri
- Yerleşik HTTP izlemeyi kullanma
- Tam HTTP izlemeyi kullanma - Windows
- Tam HTTP izlemeyi kullanma - macOS ve Linux
Önemli
HTTP izlemeleri ve izleme dosyaları parolalar ve diğer gizli diziler içerebilir. Bunları genel sitelere göndermeyin.
Yerleşik HTTP izlemeyi kullanma
Aracınız 2.114.0 veya daha yeni bir sürümse, HTTP trafik üst bilgilerini izleyebilir ve tanılama günlüğüne yazabilirsiniz. VSTS_AGENT_HTTPTRACE
agent.listener'ı başlatmadan önce ortam değişkenini ayarlayın.
Windows:
set VSTS_AGENT_HTTPTRACE=true
macOS/Linux:
export VSTS_AGENT_HTTPTRACE=true
Tam HTTP izlemeyi kullanma - Windows
Fiddler'ı başlatın.
Yalnızca aracı trafiğini dinlemenizi öneririz. Dosya > Yakalama Trafiği Kapalı (F12)
HTTPS trafiğinin şifresini çözmeyi etkinleştirin. Araçlar > Fiddler Seçenekleri > HTTPS sekmesi. HTTPS trafiğinin şifresini çözme
Aracıya ara sunucuyu kullanmasını bildirin:
set VSTS_HTTP_PROXY=http://127.0.0.1:8888
Aracıyı etkileşimli olarak çalıştırın. Hizmet olarak çalıştırıyorsanız, hizmetin çalıştığı hesabın denetim masasında ortam değişkeni olarak ayarlayabilirsiniz.
Aracıyı yeniden başlatın.
Tam HTTP izlemeyi kullanma - macOS ve Linux
Aracının HTTP izlemesini yakalamak için Charles Proxy (Windows'da Fiddler'a benzer) kullanın.
Charles Proxy'i başlatın.
Charles: Proxy > Proxy Ayarlar > SSL Sekmesi. Etkinleştirin. URL ekleyin.
Charles: Proxy > Mac OSX Proxy. Yalnızca aracı trafiğini görmek için devre dışı bırakmanızı öneririz.
export VSTS_HTTP_PROXY=http://127.0.0.1:8888
Aracıyı etkileşimli olarak çalıştırın. Hizmet olarak çalışıyorsa ,env dosyasında ayarlayabilirsiniz. Bkz. nix service
Aracıyı yeniden başlatın.
Özel günlükleri yakalama
Yerleşik günlüklere ek olarak, işlem hattınızdaki özel günlükleri yakalamak için görevleri ve betikleri kullanabilirsiniz. Aşağıdaki örneklerde kaynak kullanımı, ağ izlemeleri, bellek dökümleri ve perfview izlemelerin nasıl yakalanacakları gösterilmektedir. Müşteri desteğiyle çalışıyorsanız, bunlar gibi günlükleri yakalamanız istenebilir.
- Kaynak kullanımı ayrıntılarını yakalama
- ProcDump kullanarak dotnet işlem bellek dökümü yakalama
- Barındırılan bir aracı için ETW izlemelerini yakalama
- Capture perfview traces for Visual Studio build
Özel günlükleri alma
İşlem hattınızda özel bir günlük yakaladıktan sonra, gözden geçirilebilmeleri için bu günlüğü karşıya yüklemeniz gerekir. Özel günlüğü standart işlem hattı günlüklerinin bir parçası olarak veya yapıt olarak karşıya yükleyebilirsiniz. Aşağıdaki bölümlerdeki örneklerde özel günlükleri karşıya yüklemenin her iki yolu da gösterilmektedir.
Standart günlüklerin bir parçası olarak bir günlüğü karşıya yükleme
Standart işlem hattı günlüklerinin bir parçası olarak özel günlüğü karşıya yüklemek için komutunu kullanarak ##vso[task.uploadfile]
istenen dosyayı karşıya yükleyin. Bu komutu kullanmak için, aşağıdaki örnekte gösterildiği gibi bir betik komutunun parçası olarak belirtin. Dosya , standart işlem hattı günlüklerinin bir parçası olarak indirilebilir ve görüntülenebilir . ##vso[task.uploadfile]
yöntemi tek bir günlük dosyasını karşıya yüklemek için iyidir. Birden fazla günlük dosyanız varsa, her dosya için ayrı ##vso[task.uploadfile]
bir satır kullanmanız gerekir.
- pwsh: Write-Host "##vso[task.uploadfile]$(Agent.TempDirectory)\resource-usage.txt"
Daha fazla bilgi için bkz . Günlük komutları ve UploadFile: Görev günlükleriyle indirilebilen bir dosyayı karşıya yükleme.
Günlüğü işlem hattı yapıtı olarak karşıya yükleme
Özel bir günlüğü işlem hattı yapıtı olarak karşıya yüklemek için PublishPipelineArtifact@1 görevini kullanın. PublishPipelineArtifact@1
tek bir dosyayı veya dizin yolundaki dosyaları karşıya yükleyebilir ve karşıya yüklenecek çok sayıda özel günlük dosyanız varsa kullanışlıdır.
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)/s/trace'
artifact: 'file_result.pcap'
publishLocation: 'pipeline'
Daha fazla bilgi için bkz . İşlem Hattı Yapıtlarını Yayımlama.
Kaynak kullanımı ayrıntılarını yakalama
Azure DevOps Services kullanırken ayrıntılı günlükleri etkinleştirerek günlüklerde disk kullanımı, bellek kullanımı ve CPU kullanımı gibi kaynak kullanımını görebilirsiniz. İşlem hattı tamamlandığında, günlüklerde her adım için Agent environment resources
giriş arayın.
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%
Azure DevOps Server kullanıyorsanız veya ek ölçümler toplamak istiyorsanız Kaynak kullanımını yakalamak ve işlem hattı günlüklerine yüklemek için PowerShell'i kullanabilirsiniz. İşlem hattı çalıştırması tamamlandığında işlem hattı günlüklerini indirebilir ve yakalanan verileri görüntüleyebilirsiniz. Upload resource usage from pipeline run
Adım işin altıncı adımıysa, günlüklerdeki dosya adı 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()
ProcDump kullanarak dotnet işlem bellek dökümü yakalama
Kilitlenen bir test yürütmeniz varsa, müşteri desteği başarısız test yürütme sonrasında dotnet işleminin bellek dökümünü yakalamanızı isteyebilir. ile condition: always()
Visual Studio Test görevinizden sonra aşağıdaki görevi ekleyin. İşlem hattı çalıştırması tamamlandığında, bellek dökümü de dahil olmak üzere işlem hattı günlüklerini indirebilirsiniz.
# 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'
Barındırılan bir aracı için ETW izlemelerini yakalama
Microsoft tarafından barındırılan aracılarla ilgili ağ sorunlarını gideriyorsanız, müşteri desteği SIZDEN ETW izlemelerini toplamanızı isteyebilir. İşlem hattı çalıştırması tamamlandığında ETW izlemeleri dahil olmak üzere işlem hattı günlüklerini indirebilirsiniz.
# 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'
Visual Studio derlemesi için izlemeleri yakalama perfview
Müşteri desteği Sizden Visual Studio derlemenizin bir perfview izlemesini oluşturmanızı isterse, Visual Studio derleme adımınızdan önce ve sonra işlem hattınıza aşağıdaki görevleri ekleyin.
İşlem hattını çalıştırdıktan sonra, işlem hattı çalıştırma ayrıntılarından PerfViewLog yapıtını indirebilir ve bu dosya müşteri desteğini gönderebilirsiniz.
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 give it time for required 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