Azure Connected Machine 에이전트를 배포한 후 에이전트를 다시 구성하거나, 업그레이드하거나, 제거하거나, 기타 변경해야 할 수 있습니다. 이러한 일상적인 유지 관리 작업은 수동으로 수행할 수 있습니다. 자동 에이전트 업그레이드(미리 보기)를 사용하도록 설정하거나 작업을 자동화할 다른 위치를 찾아 운영 오류 및 비용을 줄일 수도 있습니다.
이 문서에서는 Connected Machine 에이전트 및 Arc 지원 서버와 관련된 다양한 작업을 수행하는 방법을 설명합니다.
팁 (조언)
명령줄 참조 정보는 CLI 설명서를 참조azcmagent하세요.
특정 버전의 에이전트 설치
일반적으로 Azure Connected Machine 에이전트의 최신 버전 사용하는 것이 좋습니다. 그러나 어떤 이유로든 이전 버전의 에이전트를 실행해야 하는 경우 현재 버전을 제거한 다음 대상 버전을 설치합니다. 컴퓨터가 이미 Azure Arc 연결된 경우 컴퓨터의 연결을 끊을 필요가 없습니다. 작년에 릴리스된 Connected Machine 에이전트 버전만 제품 그룹에서 공식적으로 지원됩니다.
다음 지침에 따라 특정 버전의 Azure Connected Machine 에이전트를 설치합니다.
각 release note 제목 아래에 있는 Windows 에이전트 릴리스에 대한 링크를 찾을 수 있습니다. 6개월 이상 된 에이전트 버전을 찾고 있는 경우 릴리스 정보 보관을 참조하세요.
에이전트 업그레이드
Azure Connected Machine 에이전트는 버그 수정, 안정성 향상 및 새로운 기능을 해결하기 위해 정기적으로 업데이트됩니다. Azure Advisor 최신 버전의 컴퓨터 에이전트를 사용하지 않는 리소스를 식별하고 최신 버전으로 업그레이드하는 것이 좋습니다. Azure 포털을 통해 Advisor에 액세스할 때 또는 Overview 페이지에 배너를 표시하여 Azure Arc 지원 서버를 선택할 때 알림을 받을 수 있습니다.
Windows 및 Linux용 Azure Connected Machine 에이전트는 요구 사항에 따라 수동으로 또는 자동으로 최신 릴리스로 업그레이드할 수 있습니다. Azure Connected Machine Agent를 설치, 업그레이드 또는 제거해도 서버를 다시 시작할 필요가 없습니다.
자동 에이전트 업그레이드(미리 보기)
Azure Connected Machine 에이전트 버전 1.57부터 에이전트를 구성하여 자동으로 최신 버전으로 업그레이드할 수 있습니다. 이 기능은 현재 공개 미리 보기로 제공되며 Azure 퍼블릭 클라우드에서만 사용할 수 있습니다.
자동 업그레이드를 사용하도록 설정하면 에이전트가 최신 릴리스의 한 버전 내에서 업그레이드되도록 예약됩니다. 지역 간 안정성을 유지하고 중단을 최소화하기 위해 업그레이드는 일괄 처리에 걸쳐 롤아웃되며, 사용량이 적은 시간 동안 모든 업그레이드가 시작됩니다. 업그레이드가 성공적으로 완료되지 않으면 에이전트는 성공할 때까지 정기적으로 자동 업그레이드를 다시 시도합니다.
컴퓨터를 Azure Arc 연결할 때 자동 업그레이드를 사용하도록 설정하려면 --enable-automatic-upgrade 명령에서 azcmagent connect 플래그를 사용합니다. 다음은 그 예입니다.
azcmagent connect --subscription-id "Production" --resource-group "HybridServers" --location "eastus" --enable-automatic-upgrade
Azure Policy 사용하여 Azure Arc 사용 가능한 서버를 구성하여 자동 업그레이드 정책을 사용하도록 설정할 수도 있습니다. 이 정책을 사용하면 환경 전체에서 대규모로 서버로 자동 에이전트를 업그레이드할 수 있습니다.
기존 Arc 지원 서버에서 자동 업그레이드를 사용하도록 설정하려면 Azure CLI(enableAutomaticUpgrade 또는 true) 또는 Azure PowerShell 사용하여 속성을 설정합니다.
다음 예제에서는 Azure CLI 사용하여 자동 에이전트 업그레이드를 구성하는 방법을 보여 줍니다.
# Set your target subscription
az account set --subscription "YOUR SUBSCRIPTION"
# Enable automatic upgrades on a single Arc-enabled server
az rest
--method PATCH
--url "https://management.azure.com/subscriptions/<SUB_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.HybridCompute/machines/<MACHINE_NAME>?api-version=2024-05-20-preview"
--headers "Content-Type=application/json"
--body '{"properties":{"agentUpgrade":{"enableAutomaticUpgrade":true}}}'
다음 예제에서는 PowerShell을 사용하여 자동 에이전트 업그레이드를 구성하는 방법을 보여 줍니다.
Set-AzContext -Subscription "YOUR SUBSCRIPTION"
$params = @{
ResourceGroupName = "YOUR RESOURCE GROUP"
ResourceProviderName = "Microsoft.HybridCompute"
ResourceType = "Machines"
ApiVersion = "2024-05-20-preview"
Name = "YOUR MACHINE NAME"
Method = "PATCH"
Payload = '{"properties":{"agentUpgrade":{ "enableAutomaticUpgrade":true}}}'
}
Invoke-AzRestMethod @params
추가 에이전트 업그레이드 방법
다음 표에서는 에이전트 업그레이드를 수행하는 데 지원되는 추가 메서드에 대해 설명합니다.
| 운영 체제 | 업그레이드 방법 |
|---|---|
| Windows | 수동으로 Microsoft 업데이트 |
| Ubuntu | apt |
| Red Hat/Oracle Linux/Amazon Linux | 냠 |
| SUSE Linux Enterprise Server | zypper |
Windows 기반 컴퓨터용 Azure Connected Machine 에이전트의 최신 버전은 다음에서 가져올 수 있습니다.
- Microsoft 업데이트
- Microsoft 업데이트 카탈로그
- Microsoft 다운로드 센터
Microsoft 업데이트 구성
Windows 에이전트 버전을 최신 상태로 유지하는 권장 방법은 Microsoft 업데이트를 통해 최신 버전을 자동으로 가져오는 것입니다. 이렇게 하면 기존 업데이트 인프라(예: Microsoft Configuration Manager 또는 Windows Server Update Services)를 사용하고 일반 OS 업데이트 일정에 Azure Connected Machine 에이전트 업데이트를 포함할 수 있습니다.
Windows Server 기본적으로 Microsoft 업데이트에서 업데이트를 확인하지 않습니다. Azure Connected Machine Agent에 대한 자동 업데이트를 받으려면 컴퓨터에서 Windows 업데이트 클라이언트를 구성하여 다른 Microsoft 제품을 확인해야 합니다.
작업 그룹에 속하고 인터넷에 연결하여 업데이트를 확인하는 Windows 서버의 경우 관리자 권한으로 PowerShell에서 다음 명령을 실행하여 Microsoft 업데이트를 사용하도록 설정할 수 있습니다.
$ServiceManager = (New-Object -com "Microsoft.Update.ServiceManager")
$ServiceID = "7971f918-a847-4430-9279-4a52d1efe18d"
$ServiceManager.AddService2($ServiceId,7,"")
도메인에 속하고 인터넷에 연결하여 업데이트를 확인하는 Windows 서버의 경우 그룹 정책을 사용하여 대규모로 이 설정을 구성할 수 있습니다.
- 조직의 GPO(그룹 정책 개체)를 관리할 수 있는 계정으로 서버 관리에 사용되는 컴퓨터에 로그인합니다.
- 그룹 정책 관리 콘솔을 엽니다.
- 포리스트, 도메인 및 조직 구성 단위를 확장하고 새 GPO에 적합한 범위를 선택합니다. 수정하려는 GPO가 이미 있는 경우 6단계로 건너뜁니다.
- 컨테이너를 마우스 오른쪽 단추로 클릭하고 이 도메인에서 GPO 만들기를 선택하고 여기에 연결...를 선택합니다.
- 정책의 이름(예: "Microsoft 업데이트 사용)"을 입력합니다.
- 정책을 마우스 오른쪽 단추로 클릭하고 편집을 선택합니다.
- 컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소 > Windows 업데이트로 이동합니다.
- 자동 업데이트 구성 설정을 선택하여 편집합니다.
- 정책을 적용할 수 있도록 라디오 사용 단추를 선택합니다.
- Options 섹션의 맨 아래에서 다른 Microsoft 제품에 대한 업데이트 설치 확인란을 선택합니다.
- 확인을 선택합니다.
선택한 범위의 컴퓨터가 다음에 정책을 새로 고치면 Windows 업데이트 및 Microsoft 업데이트 모두에서 업데이트를 확인하기 시작합니다.
Microsoft Configuration Manager 또는 Windows Server 업데이트 서비스(WSUS)를 사용하여 서버에 업데이트를 제공하는 조직의 경우 Azure 연결된 컴퓨터 에이전트 패키지를 동기화하고 서버에 설치하도록 승인하도록 WSUS를 구성해야 합니다. Windows Server Update Services 또는 구성 관리자 지침에 따라 구성에 다음 제품 및 분류를 추가합니다.
- 프로덕트 이름: Azure 연결된 머신 에이전트 (모든 하위 옵션 선택)
- 분류: 중요 업데이트, 업데이트
업데이트가 동기화되면 필요에 따라 Azure 연결된 컴퓨터 에이전트 제품을 자동 승인 규칙에 추가하여 서버가 자동으로 최신 에이전트 소프트웨어를 사용하여 최신 상태를 유지할 수 있습니다.
설치 마법사를 사용하여 수동으로 업그레이드하려면
- 관리자 권한이 있는 계정으로 컴퓨터에 로그인합니다.
- https://aka.ms/AzureConnectedMachineAgent에서 최신 에이전트 설치 프로그램을 다운로드합니다.
- AzureConnectedMachineAgent.msi 실행하여 설치 마법사를 시작합니다.
설치 마법사에서 이전 버전의 에이전트를 검색하면 자동으로 업그레이드됩니다. 업그레이드가 완료되면 설치 마법사가 자동으로 닫힙니다.
명령줄에서 업그레이드하려면
Windows 설치 관리자 패키지에 대한 명령줄 옵션에 익숙하지 않은 경우 Msiexec 표준 명령줄 옵션 및 Msiexec 명령줄 옵션을 검토하세요.
관리 권한이 있는 계정으로 컴퓨터에 로그인합니다.
https://aka.ms/AzureConnectedMachineAgent에서 최신 에이전트 설치 프로그램을 다운로드합니다.
에이전트를 자동으로 업그레이드하고 폴더에
C:\Support\Logs설치 로그 파일을 만들려면 다음 명령을 실행합니다.msiexec.exe /i AzureConnectedMachineAgent.msi /qn /l*v "C:\Support\Logs\azcmagentupgradesetup.log"
에이전트 제거
더 이상 Azure Arc 지원 서버를 사용하여 관리하지 않으려는 서버의 경우 다음 단계에 따라 서버에서 VM 확장을 제거하고 에이전트 연결을 끊고 서버에서 소프트웨어를 제거합니다. 이러한 모든 단계를 완료하여 시스템에서 모든 관련 소프트웨어 구성 요소를 완전히 제거하는 것이 중요합니다.
VM 확장 제거
Azure Arc 사용 가능한 서버에 Azure VM 확장을 배포한 경우 에이전트 연결을 끊거나 소프트웨어를 제거하기 전에 모든 확장을 제거해야 합니다. Azure 연결된 컴퓨터 에이전트를 제거해도 확장이 자동으로 제거되지 않으며 서버를 다시 연결하여 Azure Arc 경우 이러한 확장이 인식되지 않습니다.
Azure Arc 사용 가능한 서버에서 확장을 나열하고 제거하는 방법에 대한 지침은 다음 리소스를 참조하세요.
- Azure 포털을 사용하여 VM 확장을 관리합니다
Azure PowerShell Azure CLI
Azure Arc 서버 연결 끊기
서버에서 모든 확장을 제거한 후 다음 단계는 에이전트 연결을 끊는 것입니다. 이렇게 하면 서버에 대한 해당 Azure 리소스가 삭제되고 에이전트의 로컬 상태가 지워지게 됩니다.
에이전트 연결을 끊려면 서버에서 azcmagent disconnect 관리자 권한으로 명령을 실행합니다. 구독에서 리소스를 삭제할 수 있는 권한이 있는 Azure 계정으로 로그인하라는 메시지가 표시됩니다. 리소스가 이미 Azure 삭제된 경우 추가 플래그를 전달하여 로컬 상태를 정리합니다. azcmagent disconnect --force-local-only.
관리자 및 Azure 계정이 다른 경우 로그인 프롬프트가 관리자 계정으로 기본 설정되는 문제가 발생할 수 있습니다. 이러한 문제를 해결하려면 명령을 실행합니다 azcmagent disconnect --use-device-code . 리소스를 삭제할 수 있는 권한이 있는 Azure 계정으로 로그인하라는 메시지가 표시됩니다.
주의
Azure 로컬 실행되는 Arc 지원 VM에서 에이전트 연결을 끊을 때는 azcmagent disconnect --force-local-only 명령만 사용합니다.
--force-local-only 플래그 없이 명령을 사용하면 Azure 로컬 Arc VM이 Azure 온-프레미스에서 모두 삭제될 수 있습니다.
에이전트 제거
마지막으로 서버에서 Connected Machine 에이전트를 제거할 수 있습니다.
다음 두 방법 모두 에이전트를 제거하지만 컴퓨터에서 C:\Program Files\AzureConnectedMachineAgent 폴더를 제거하지는 않습니다.
제어판에서 제거하기
다음 단계에 따라 컴퓨터에서 Windows 에이전트를 제거합니다.
- 관리자 권한이 있는 계정으로 컴퓨터에 로그인합니다.
- 제어판에서 프로그램 및 기능을 선택합니다.
- 프로그램 및 기능에서 Azure 연결된 컴퓨터 에이전트를 선택하고 제거를 선택한 다음, 예를 선택합니다.
에이전트 설치 마법사에서 직접 Windows 에이전트를 삭제할 수도 있습니다. 이렇게 하려면 AzureConnectedMachineAgent.msi 설치 관리자 패키지를 실행합니다.
명령줄에서 제거
아래 예제에 따라 명령 프롬프트에서 또는 자동화된 메서드(예: 스크립트)를 사용하여 에이전트를 수동으로 제거할 수 있습니다. 먼저 운영 체제에서 애플리케이션 패키지의 보안 주체 식별자인 GUID인 제품 코드를 검색해야 합니다. 제거는 Msiexec.exe 명령줄을 msiexec /x {Product Code}사용하여 수행됩니다.
레지스트리 편집기를 엽니다.
레지스트리 키
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall에서 제품 코드 GUID를 찾아 복사합니다.다음 예제와 같이 Msiexec를 사용하여 에이전트를 제거합니다.
명령줄에서 다음 명령을 입력합니다.
msiexec.exe /x {product code GUID} /qnPowerShell을 사용하여 동일한 단계를 수행할 수 있습니다.
Get-ChildItem -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall | ` Get-ItemProperty | ` Where-Object {$_.DisplayName -eq "Azure Connected Machine Agent"} | ` ForEach-Object {MsiExec.exe /x "$($_.PsChildName)" /qn}
프록시 설정 업데이트 또는 제거
에이전트가 프록시 서버를 통해 서비스와 통신하도록 구성하거나 배포 후 이 구성을 제거하려면 여기에 설명된 방법 중 하나를 사용합니다. 에이전트는 이 시나리오에서 HTTP 프로토콜을 사용하여 아웃바운드 통신을 수행합니다.
명령 또는 시스템 환경 변수를 azcmagent config 사용하여 프록시 설정을 구성할 수 있습니다. 에이전트 구성 및 시스템 환경 변수 모두에서 프록시 서버를 지정하면 에이전트 구성이 우선적으로 적용되고 유효 설정이 됩니다. 에이전트에 대한 유효 프록시 구성을 보는 데 사용합니다 azcmagent show .
비고
Azure Arc 지원 서버는 연결된 컴퓨터 에이전트의 프록시로 Log Analytics 게이트웨이 사용을 지원하지 않습니다.
에이전트별 프록시 구성
에이전트별 프록시 구성은 프록시 서버 설정을 구성하는 기본 방법입니다. 이 메서드는 Azure Connected Machine 에이전트의 버전 1.13부터 사용할 수 있습니다. 에이전트별 프록시 구성을 사용하면 Azure Connected Machine 에이전트의 프록시 설정이 시스템의 다른 애플리케이션을 방해하지 않도록 방지할 수 있습니다.
비고
Azure Arc 사용 가능한 서버에 배포된 일부 확장은 에이전트별 프록시 구성을 상속하지 않습니다. 확장에 대한 프록시 설정을 구성하는 방법에 대한 지침은 배포하는 각 확장에 대한 설명서를 참조하세요.
프록시 서버를 통해 통신하도록 에이전트를 구성하려면 다음 명령을 실행합니다.
azcmagent config set proxy.url "http://ProxyServerFQDN:port"
네트워크에서 요구하는 경우 FQDN 대신 IP 주소 또는 간단한 호스트 이름을 사용할 수 있습니다. 프록시 서버가 포트 80에서 실행되는 경우 끝부분에서 ":80"을 생략해도 됩니다.
프록시 서버 URL이 에이전트 설정에 구성되어 있는지 확인하려면 다음 명령을 실행합니다.
azcmagent config get proxy.url
에이전트가 프록시 서버를 통해 통신하는 것을 중지하려면 다음 명령을 실행합니다.
azcmagent config clear proxy.url
명령을 사용하여 프록시 설정을 azcmagent config 다시 구성할 때 서비스를 다시 시작할 필요가 없습니다.
프라이빗 엔드포인트에 대한 프록시 바이패스
에이전트 버전 1.15부터 지정된 프록시 서버를 사용하지 않아야 하는 서비스를 지정할 수도 있습니다. 이렇게 하면 Microsoft Entra ID 및 Azure Resource Manager 트래픽이 프록시 서버를 통해 공용 엔드포인트로 이동하지만 Azure Arc 트래픽이 프록시를 건너뛰고 네트워크의 개인 IP 주소와 통신하려는 분할 네트워크 디자인 및 프라이빗 엔드포인트 시나리오에 도움이 될 수 있습니다.
프록시 바이패스 기능은 우회할 특정 URL을 입력할 필요가 없습니다. 대신 프록시 서버를 사용하지 않아야 하는 서비스의 이름을 제공합니다. 위치 매개 변수는 Arc 지원 서버의 Azure 영역을 나타냅니다.
ArcData로 설정된 경우 프록시 바이패스 값은 Arc 에이전트가 아닌 SQL Server 대한 Azure 확장의 트래픽만 무시합니다.
| 프록시 바이패스 값 | 영향을 받는 엔드포인트 |
|---|---|
AAD |
login.windows.net
login.microsoftonline.com
pas.windows.net
|
ARM |
management.azure.com |
AMA |
global.handler.control.monitor.azure.com
<virtual-machine-region-name>.handler.control.monitor.azure.com
<log-analytics-workspace-id>.ods.opinsights.azure.com
management.azure.com
<virtual-machine-region-name>.monitoring.azure.com
<data-collection-endpoint>.<virtual-machine-region-name>.ingest.monitor.azure.com
|
Arc |
his.arc.azure.comguestconfiguration.azure.com |
ArcData
1 |
*.<region>.arcdataservices.com |
1 프록시 바이패스 값 ArcData Azure Connected Machine 에이전트 버전 1.36 및 SQL Server 버전 1.1.2504.99용 Azure 확장부터 사용할 수 있습니다. 이전 버전에는 "Arc" 프록시 바이패스 값의 Azure Arc 엔드포인트를 통해 사용 가능하게 설정된 SQL Server가 포함됩니다.
Microsoft Entra ID 및 Azure Resource Manager 트래픽을 프록시 서버를 통해 전송하고, Azure Arc 트래픽은 프록시를 건너뛰려면 다음 명령을 실행합니다.
azcmagent config set proxy.url "http://ProxyServerFQDN:port"
azcmagent config set proxy.bypass "Arc"
서비스 목록을 제공하려면 서비스 이름을 쉼표로 구분합니다.
azcmagent config set proxy.bypass "ARM,Arc"
프록시 바이패스 지우려면 다음 명령을 실행합니다.
azcmagent config clear proxy.bypass
를 실행 azcmagent show하여 유효한 프록시 서버 및 프록시 바이패스 구성을 볼 수 있습니다.
Windows 환경 변수
Windows Azure Connected Machine 에이전트는 먼저 proxy.url 에이전트 구성 속성(에이전트 버전 1.13부터 시작)을 확인한 다음 시스템 차원의 HTTPS_PROXY 환경 변수를 확인하여 사용할 프록시 서버를 결정합니다. 둘 다 비어 있으면 기본 Windows 시스템 차원의 프록시 설정이 구성된 경우에도 프록시 서버가 사용되지 않습니다.
시스템 환경 변수 대신 에이전트별 프록시 구성을 사용하는 것이 좋습니다.
프록시 서버 환경 변수를 설정하려면 다음 명령을 실행합니다.
# If a proxy server is needed, execute these commands with the proxy URL and port.
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://ProxyServerFQDN:port", "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
# For the changes to take effect, the agent services need to be restarted after the proxy environment variable is set.
Restart-Service -Name himds, ExtensionService, GCArcService
프록시 서버를 통한 통신을 중지하도록 에이전트를 구성하려면 다음 명령을 실행합니다.
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
# For the changes to take effect, the agent services need to be restarted after the proxy environment variable removed.
Restart-Service -Name himds, ExtensionService, GCArcService
Linux 환경 변수
Linux에서 Azure Connected Machine 에이전트는 먼저 proxy.url 에이전트 구성 속성(에이전트 버전 1.13부터 시작)을 확인한 다음, himds, GC_Ext 및 GCArcService 디먼에 대해 설정된 HTTPS_PROXY 환경 변수를 확인합니다. 포함된 스크립트는 Azure Connected Machine 에이전트 및 컴퓨터의 다른 모든 서비스가 지정된 프록시 서버를 사용하도록 systemd의 기본 프록시 설정을 구성합니다.
프록시 서버를 통해 통신하도록 에이전트를 구성하려면 다음 명령을 실행합니다.
sudo /opt/azcmagent/bin/azcmagent_proxy add "http://ProxyServerFQDN:port"
환경 변수를 제거하려면 다음 명령을 실행합니다.
sudo /opt/azcmagent/bin/azcmagent_proxy remove
환경 변수에서 에이전트별 프록시 구성으로 마이그레이션
환경 변수를 이미 사용하여 Azure Connected Machine 에이전트에 대한 프록시 서버를 구성하고 로컬 에이전트 설정에 따라 에이전트별 프록시 구성으로 마이그레이션하려는 경우 다음 단계를 수행합니다.
Azure Connected Machine 에이전트 최신 버전으로 업그레이드합니다.
azcmagent config set proxy.url "http://ProxyServerFQDN:port"을 실행하여 프록시 서버 정보를 사용해 에이전트를 구성합니다.
Azure Arc 사용 가능한 서버 리소스 이름 바꾸기
Azure Arc 사용 가능한 서버에 연결된 Linux 또는 Windows 컴퓨터의 이름을 변경하는 경우 Azure 리소스 이름은 변경할 수 없으므로 새 이름이 자동으로 인식되지 않습니다. 다른 Azure 리소스와 마찬가지로 새 이름을 사용하려면 Azure 리소스를 삭제한 다음 다시 만들어야 합니다.
Azure Arc 사용 가능한 서버의 경우 컴퓨터 이름을 바꾸기 전에 VM 확장을 제거해야 합니다.
컴퓨터에 설치된 VM 확장을 나열하고 Azure 포털, Azure CLI 또는 Azure PowerShell 사용하여 해당 구성을 기록해 둡니다.
Azure 포털, Azure CLI 또는 Azure PowerShell 사용하여 컴퓨터에 설치된 모든 VM 확장을 제거합니다.
azcmagent 도구를 Disconnect 매개 변수와 함께 사용하여 컴퓨터의 Azure Arc 연결을 끊고 Azure 컴퓨터 리소스를 삭제합니다. 대화형으로 로그인되어 있을 때, Microsoft 아이덴티티 access 토큰 또는 서비스 프린시펄을 사용하여 이 도구를 수동으로 실행할 수 있습니다.
Azure Arc 사용 가능한 서버에서 컴퓨터 연결을 끊으면 연결된 컴퓨터 에이전트가 제거되지 않으며 이 프로세스의 일부로 에이전트를 제거할 필요가 없습니다.
Azure Arc 사용 가능한 서버에 Connected Machine 에이전트를 다시 등록합니다.
azcmagentConnect 매개 변수를 사용하여 도구를 실행하여 이 단계를 완료합니다. 에이전트는 기본적으로 컴퓨터의 현재 호스트 이름을 사용하지만 매개 변수를 connect 명령에 전달--resource-name하여 고유한 리소스 이름을 선택할 수 있습니다.Azure Arc 지원 서버에서 컴퓨터에 원래 배포된 VM 확장을 다시 배포합니다. Azure Policy 정의를 사용하여 VM용 Azure Monitor(인사이트) 에이전트를 배포한 경우 다음 evaluation cycle 이후에 에이전트가 다시 배포됩니다.
Azure Arc 사용 가능한 서버 연결 끊김 조사
Connected Machine 에이전트가 5분마다 정기적인 하트비트 메시지를 Azure로 보냅니다. Arc 지원 서버가 15분 이상 Azure 하트비트 전송을 중지하는 경우 서버가 오프라인 상태이거나 네트워크 연결이 차단되었거나 에이전트가 실행되고 있지 않음을 의미할 수 있습니다.
이러한 인시던트가 발생할 때 알림을 받을 리소스 상태 경고를 설정하는 것을 포함하여 이러한 인시던트에 대응하고 조사하기 위한 계획을 개발합니다. 자세한 내용은 Azure Portal에서 Resource Health 경고 만들기 참조하세요.
부실 서버 리소스 제거
에이전트를 완전히 제거하지 않고 서버가 서비스 해제되거나 연결이 끊어진 경우 리소스는 일반적으로 "연결 끊김" 상태의 Azure 포털에 유지됩니다. 시간이 지남에 따라 이러한 부실 리소스는 환경을 복잡하게 만들 수 있습니다.
다음 PowerShell 스크립트를 사용하면 지정된 일 수 동안 연결이 끊긴 Azure Arc 사용 가능한 서버를 식별하고 삭제할 수 있습니다.
필수 조건
-
Azure PowerShell: 설치된
Az모듈입니다. -
권한: Azure Resource Graph를 통해 쿼리에 대한 읽기 권한자 접근 권한 및 리소스를 삭제할 수 있는 기여자/소유자 (또는
Microsoft.HybridCompute/machines/delete).
정리 스크립트
이 스크립트는 Azure Resource Graph 사용하여 상태가 Microsoft.HybridCompute/machines이고 Disconnected 타임스탬프가 구성된 임계값보다 오래된 lastStatusChange 리소스를 쿼리합니다.
다음 코드를 .로 Cleanup-StaleArcServers.ps1저장합니다.
<#
.SYNOPSIS
Identifies and removes stale Azure Arc-enabled servers that have been disconnected for a specified number of days.
.DESCRIPTION
This script queries Azure Resource Graph to find Azure Arc-enabled servers (Microsoft.HybridCompute/machines)
that have a status of 'Disconnected' and have not updated their status for more than the specified number of days.
Supports -WhatIf and -Confirm via SupportsShouldProcess.
.PARAMETER DaysDisconnected
The number of days a server must be disconnected to be considered stale. Default is 60.
.PARAMETER Subscription
Optional. One or more Subscription IDs to scope the query to.
If not specified, queries all subscriptions the current context has access to.
.PARAMETER ManagementGroup
Optional. A Management Group name to scope the query to.
Cannot be used together with -Subscription.
.EXAMPLE
.\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60 -WhatIf
Lists Arc servers disconnected for more than 60 days across all subscriptions.
.EXAMPLE
.\Cleanup-StaleArcServers.ps1 -DaysDisconnected 90 -Subscription 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
Permanently deletes Arc servers disconnected for more than 90 days in the specified subscription.
.NOTES
Author: Microsoft
Date: 2026-01-12
Requires: Az.ResourceGraph, Az.Resources
#>
[CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')]
param (
[int]$DaysDisconnected = 60,
[ValidateNotNullOrEmpty()]
[string[]]$Subscription,
[ValidateNotNullOrEmpty()]
[string]$ManagementGroup
)
# Check required modules
foreach ($mod in @('Az.ResourceGraph', 'Az.Resources')) {
if (-not (Get-Module -Name $mod -ListAvailable -ErrorAction SilentlyContinue)) {
Write-Error "Required module '$mod' is not installed. Run: Install-Module $mod -Scope CurrentUser"
return
}
}
# Check for Azure connection
try {
$context = Get-AzContext -ErrorAction Stop
Write-Host "Connected to Azure context: $($context.Name)" -ForegroundColor Cyan
}
catch {
Write-Error "Not connected to Azure. Please run 'Connect-AzAccount' first."
return
}
# Construct the KQL query
# We look for resources of type hybridcompute/machines
# Status must be Disconnected
# lastStatusChange must be older than $DaysDisconnected
$kqlQuery = @"
Resources
| where type == 'microsoft.hybridcompute/machines'
| where properties.status == 'Disconnected'
| where properties.lastStatusChange < ago($($DaysDisconnected)d)
| project id, name, resourceGroup, subscriptionId, location, status = properties.status, lastStatusChange = properties.lastStatusChange
"@
Write-Host "Searching for Arc servers disconnected for more than $DaysDisconnected days..." -ForegroundColor Yellow
# Execute Search with pagination (Search-AzGraph returns max 1000 results per call)
$staleServers = [System.Collections.Generic.List[object]]::new()
$skipToken = $null
try {
do {
$params = @{
Query = $kqlQuery
First = 1000
}
if ($skipToken) {
$params['SkipToken'] = $skipToken
}
if ($Subscription) {
$params['Subscription'] = $Subscription
}
if ($ManagementGroup) {
$params['ManagementGroup'] = $ManagementGroup
}
$result = Search-AzGraph @params -ErrorAction Stop
if ($result) {
$staleServers.AddRange([object[]]$result)
$skipToken = $result.SkipToken
}
} while ($skipToken)
}
catch {
Write-Error "Failed to query Azure Resource Graph. Ensure resource graph module is installed and you have read permissions.`nError: $_"
return
}
if ($staleServers.Count -eq 0) {
Write-Host "No stale Arc servers found matching the criteria." -ForegroundColor Green
return
}
Write-Host "Found $($staleServers.Count) stale servers." -ForegroundColor Yellow
# Process results
$successCount = 0
$failCount = 0
foreach ($server in $staleServers) {
if ($PSCmdlet.ShouldProcess($server.id, "Delete stale Arc server '$($server.name)' (Disconnected since: $($server.lastStatusChange))")) {
try {
Remove-AzResource -ResourceId $server.id -Force -ErrorAction Stop
Write-Host "Successfully deleted '$($server.name)'." -ForegroundColor Green
$successCount++
}
catch {
Write-Error "Failed to delete '$($server.name)'. Error: $_"
$failCount++
}
}
}
Write-Host "`nCleanup completed. Deleted: $successCount, Failed: $failCount, Total: $($staleServers.Count)" -ForegroundColor Green
스크립트를 사용하는 방법
필수 조건
스크립트에는 다음 PowerShell 모듈이 필요합니다.
Az.ResourceGraphAz.Resources
설치되지 않은 경우 다음을 실행합니다.
Install-Module Az.ResourceGraph, Az.Resources -Scope CurrentUser
단계
Azure 로그인
PowerShell 터미널을 열고 로그인합니다.
Connect-AzAccountWhat-If 분석 실행
먼저
-WhatIf스위치를 사용하여 스크립트를 실행합니다. 실제로 삭제하지 않고 조건을 충족하는 서버가 나열됩니다. 이 명령은 60일 이상 연결이 끊긴 서버를 확인합니다..\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60 -WhatIf쿼리 범위를 특정 구독으로 지정하려면 매개 변수를
-Subscription사용합니다..\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60 -Subscription 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -WhatIf대신 쿼리의 범위를 관리 그룹으로 지정하려면 다음 매개 변수를
-ManagementGroup사용합니다..\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60 -ManagementGroup 'MyManagementGroup' -WhatIf출력을 검토하여 원하는 서버만 나열되는지 확인합니다.
정리 수행
제거할 서버 목록에 확신이 있으면 스위치 없이 스크립트를
-WhatIf실행합니다..\Cleanup-StaleArcServers.ps1 -DaysDisconnected 60더 긴 기간(예: 6개월)동안 연결이 끊긴 서버를 정리하려면 일 수를 늘입니다.
.\Cleanup-StaleArcServers.ps1 -DaysDisconnected 180스크립트는 각 삭제 전에 확인을 요청합니다. 프롬프트를 건너뛰려면
-Confirm:$false를 추가합니다.
관련 콘텐츠
- 연결된 컴퓨터 에이전트 문제 해결 가이드에서 문제 해결 정보를 찾습니다.
- Azure Arc 지원 서버를 계획하고 배포하는 방법을 이해하고 중앙 집중 관리 및 모니터링을 구현합니다.
- Azure Policy를 사용하여 VM 게스트 구성을 관리하는 방법, 컴퓨터가 예상된 Log Analytics 작업 영역에 보고하는지를 확인하는 방법, VM 인사이트로 모니터링을 활성화하는 방법 등을 알아봅니다.