生成key
docker run --rm mcr.microsoft.com/dotnet/monitor:latest generatekey
Generated ApiKey for dotnet-monitor; use the following header for authorization:
Authorization: Bearer eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJodHRwczovL2dpdGh1Yi5jb20vZG90bmV0L2RvdG5ldC1tb25pdG9yIiwiZXhwIjoiMTc4MDg4NDY3MSIsImlzcyI6Imh0dHBzOi8vZ2l0aHViLmNvbS9kb3RuZXQvZG90bmV0LW1vbml0b3IvZ2VuZXJhdGVrZXkrTW9uaXRvckFwaUtleSIsInN1YiI6IjgyNTE3MmFhLTVmMjAtNDcxOS1iZDFlLWE3N2UxMmEyMjBhNSJ9.j2jM0gzySd_eZMTGKGzKvaRT-wqELnt3gl4e7hSF6yT-7ewjnYnJh31jNAO5bXHxdQh6CjFfHlVLrkLegiUw5Pin9hfCBbFwwNY_gMH5GxxZPV4yLzFNrBiMGXcIJGNl
Settings in Json format:
{
"Authentication": {
"MonitorApiKey": {
"PublicKey": "eyJjcnYiOiJQLTM4NCIsImtleV9vcHMiOltdLCJrdHkiOiJFQyIsIm90aCI6W10sIngiOiJ4Z1F6SHRMcmFlUWROUjZXZ0FYNnJhcnF5VTctOGlybjFFaWhnQXZyVFlIbUFFUGZqQzlKWm5DSlNYSzQ1YmVZIiwieDVjIjpbXSwieSI6IkJXNHpITm9qbkw2TnBIdHg2cndtanpqdlJDTW5reXM4SUJmQ0xLSFhRVF9XMTA5UXMwS0hvU0x5QUxSMlEwYjUifQ",
"Subject": "825172aa-5f20-4719-bd1e-a77e12a220a5"
}
}
}
Docker compose
services:
dotnet-monitor:
image: mcr.microsoft.com/dotnet/monitor:latest
user: root
ports:
- "52323:52323"
- "52325:52325"
volumes:
- diag-vol:/diag
- tmp-vol:/tmp
environment:
- DOTNETMONITOR_DiagnosticPort__ConnectionMode=Listen
- DOTNETMONITOR_DiagnosticPort__EndpointName=/diag/port.sock
- DOTNETMONITOR_Authentication__MonitorApiKey__Subject=825172aa-5f20-4719-bd1e-a77e12a220a5
- DOTNETMONITOR_Authentication__MonitorApiKey__PublicKey=eyJjcnYiOiJQLTM4NCIsImtleV9vcHMiOltdLCJrdHkiOiJFQyIsIm90aCI6W10sIngiOiJ4Z1F6SHRMcmFlUWROUjZXZ0FYNnJhcnF5VTctOGlybjFFaWhnQXZyVFlIbUFFUGZqQzlKWm5DSlNYSzQ1YmVZIiwieDVjIjpbXSwieSI6IkJXNHpITm9qbkw2TnBIdHg2cndtanpqdlJDTW5reXM4SUJmQ0xLSFhRVF9XMTA5UXMwS0hvU0x5QUxSMlEwYjUifQ
- DOTNETMONITOR_Urls=http://+:52323
- DOTNETMONITOR_Metrics__Urls=http://+:52325
networks:
- monitor-net
cap_add:
- SYS_PTRACE
app:
image: myapp:latest
ports:
- "9876:9876"
environment:
- DOTNET_DiagnosticPorts=/diag/port.sock,suspend=n,connect
- DOTNET_DefaultDiagnosticPortSuspend=0
volumes:
- diag-vol:/diag
- tmp-vol:/tmp
networks:
- monitor-net
depends_on:
- dotnet-monitor
cap_add:
- SYS_PTRACE
volumes:
diag-vol:
tmp-vol:
networks:
monitor-net:
通过Monitor API访问
$token = "Bearer eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJodHRwczovL2dpdGh1Yi5jb20vZG90bmV0L2RvdG5ldC1tb25pdG9yIiwiZXhwIjoiMTc4MDg4NDY3MSIsImlzcyI6Imh0dHBzOi8vZ2l0aHViLmNvbS9kb3RuZXQvZG90bmV0LW1vbml0b3IvZ2VuZXJhdGVrZXkrTW9uaXRvckFwaUtleSIsInN1YiI6IjgyNTE3MmFhLTVmMjAtNDcxOS1iZDFlLWE3N2UxMmEyMjBhNSJ9.j2jM0gzySd_eZMTGKGzKvaRT-wqELnt3gl4e7hSF6yT-7ewjnYnJh31jNAO5bXHxdQh6CjFfHlVLrkLegiUw5Pin9hfCBbFwwNY_gMH5GxxZPV4yLzFNrBiMGXcIJGNl"
$url = "http://192.168.10.200:52323/dump?type=Full"
$output = "C:\temp\app_$(Get-Date -Format 'yyyyMMdd_HHmmss').dmp"
# 创建目录
New-Item -ItemType Directory -Force -Path "C:\temp" | Out-Null
Write-Host "开始下载 dump,请耐心等待(可能需要几分钟)..."
$client = [System.Net.WebClient]::new()
$client.Headers.Add("Authorization", $token)
$client.DownloadFile($url, $output)
Write-Host "完成!文件保存在: $output"
Write-Host "文件大小: $([math]::Round((Get-Item $output).Length / 1MB, 2)) MB"