문제 해결 리소스

이 문서에서는 Azure Arc 지원 데이터 서비스의 문제 해결 리소스를 식별합니다.

업로드

kubectl을 사용하여 direct 연결 모드에서 Azure Arc 데이터 컨트롤러를 배포했으며 Log Analytics 작업 영역 자격 증명에 대한 비밀을 만들지 않은 경우 데이터 컨트롤러 CR(사용자 지정 리소스)에 다음 오류 메시지가 표시될 수 있습니다.

status": {
    "azure": {
        "uploadStatus": {
            "logs": {
                "lastUploadTime": "YYYY-MM-HHTMM:SS:MS.SSSSSSZ",
                    "message": "spec.settings.azure.autoUploadLogs is true, but failed to get log-workspace-secret secret."
                    },

위의 오류를 해결하려면 다음과 같이 WorkspaceIDSharedAccessKey를 포함하는 Log Analytics 작업 영역 자격 증명을 사용하여 비밀을 만듭니다.

apiVersion: v1
data:
  primaryKey: <base64 encoding of Azure Log Analytics workspace primary key>
  workspaceId: <base64 encoding of Azure Log Analytics workspace Id>
kind: Secret
metadata:
  name: log-workspace-secret
  namespace: <your datacontroller namespace>
type: Opaque

직접 연결된 모드에서 메트릭의 자동 업로드를 구성하고 MSI에 필요한 권한이 제대로 부여되지 않은 경우( 메트릭 업로드에 설명된 대로) 다음과 같이 로그에 오류가 표시될 수 있습니다.

'Metric upload response: {"error":{"code":"AuthorizationFailed","message":"Check Access Denied Authorization for AD object XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX over scope /subscriptions/XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX/resourcegroups/my-resource-group/providers/microsoft.azurearcdata/sqlmanagedinstances/arc-dc, User Tenant Id: XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX. Microsoft.Insights/Metrics/write was not allowed, Microsoft.Insights/Telemetry/write was notallowed. Warning: Principal will be blocklisted if the service principal is not granted proper access while it hits the GIG endpoint continuously."}}

위의 오류를 해결하려면 Azure Arc 데이터 컨트롤러 확장을 위해 MSI를 검색하고 메트릭 업로드에 설명된 대로 필요한 역할을 부여합니다.

직접 연결 모드에서 Azure Arc 데이터 컨트롤러를 배포한 경우 사용 정보를 업로드하는 데 필요한 권한이 Azure Arc 데이터 컨트롤러 확장 MSI에 대해 자동으로 부여됩니다. 자동 업로드 프로세스가 권한 관련 문제로 실행되면 다음과 같이 로그에 오류가 표시될 수 있습니다.

identified that your data controller stopped uploading usage data to Azure. The error was:

{"lastUploadTime":"2022-05-05T20:10:47.6746860Z","message":"Data controller upload response: {\"error\":{\"code\":\"AuthorizationFailed\",\"message\":\"The client 'XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX' with object id 'XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX' does not have authorization to perform action 'microsoft.azurearcdata/datacontrollers/write' over scope '/subscriptions/XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX/resourcegroups/my-resource-group/providers/microsoft.azurearcdata/datacontrollers/arc-dc' or the scope is invalid. If access was recently granted, please refresh your credentials.\"}}"}

권한 문제를 해결하려면 MSI를 검색하고 메트릭 업로드에 설명된 대로 필요한 역할을 부여합니다.

업그레이드

잘못된 이미지 태그

az CLI를 사용하여 업그레이드하고 잘못된 이미지 태그를 전달하는 경우 2분 이내에 오류가 표시됩니다.

Job Still Active : Failed to await bootstrap job complete after retrying for 2 minute(s).
Failed to await bootstrap job complete after retrying for 2 minute(s).

Pod를 보면 부트스트랩 작업 상태가 ErrImagePull로 표시됩니다.

STATUS
ErrImagePull

Pod를 설명할 때 다음이 표시됩니다.

Failed to pull image "<registry>/<repository>/arc-bootstrapper:<incorrect image tag>": [rpc error: code = NotFound desc = failed to pull and unpack image 

해결하려면 버전 로그 에서 올바른 이미지 태그를 참조합니다. 올바른 이미지 태그를 사용하여 업그레이드 명령을 다시 실행합니다.

레지스트리 또는 리포지토리에 연결할 수 없음

업그레이드하려고 하는데 업그레이드 작업에서 오류가 발생하지 않았지만 15분 이상 실행되는 경우 Pod를 확인하여 업그레이드 진행률을 볼 수 있습니다. 실행

kubectl get pods -n <namespace>

Pod를 보면 부트스트랩 작업 상태가 ErrImagePull로 표시됩니다.

STATUS
ErrImagePull

부트스트랩 작업 Pod를 설명하여 이벤트를 봅니다.

kubectl describe pod <pod name> -n <namespace>

Pod를 설명할 때 다음과 같은 오류가 표시됩니다.

failed to resolve reference "<registry>/<repository>/arc-bootstrapper:<image tag>"

이는 이미지가 프라이빗 레지스트리에서 배포된 경우 일반적으로 Kubernetes를 사용하여 yaml 파일을 통해 업그레이드하고 yaml 파일은 프라이빗 레지스트리 대신 mcr.microsoft.com을 참조합니다. 해결하려면 업그레이드 작업을 취소합니다. 배포한 레지스트리를 찾으려면 다음을 실행합니다.

kubectl describe pod <controller in format control-XXXXX> -n <namespace>

레지스트리 및 리포지토리가 표시되는 Containers.controller.Image를 찾습니다. 해당 값을 캡처하고 yaml 파일에 입력한 다음 업그레이드를 다시 실행합니다.

데이터가 충분하지 않음

업그레이드하려고 하는데 업그레이드 작업에서 오류가 발생하지 않았지만 15분 이상 실행되는 경우 Pod를 확인하여 업그레이드 진행률을 볼 수 있습니다. 실행

kubectl get pods -n <namespace>

일부 컨테이너가 준비되었지만 준비되지 않다고 표시되는 Pod를 찾습니다. 예를 들어 이 metricsdb-0 Pod에는 두 개의 컨테이너 중 하나만 있습니다.

NAME                                    READY   STATUS             RESTARTS        AGE
bootstrapper-848f8f44b5-7qxbx           1/1     Running            0               16m
control-7qxw8                           2/2     Running            0               16m
controldb-0                             2/2     Running            0               16m
logsdb-0                                3/3     Running            0               18d
logsui-hvsrm                            3/3     Running            0               18d
metricsdb-0                             1/2     Running            0               18d

이벤트를 보려면 Pod를 설명합니다.

kubectl describe pod <pod name> -n <namespace>

이벤트가 없는 경우 컨테이너 이름을 가져와서 컨테이너에 대한 로그를 확인합니다.

kubectl get pods <pod name> -n <namespace> -o jsonpath='{.spec.containers[*].name}*'

kubectl logs <pod name> <container name> -n <namespace>

CPU 또는 메모리가 부족하다는 메시지가 표시되면 Kubernetes 클러스터에 노드를 더 추가하거나 기존 노드에 더 많은 리소스를 추가해야 합니다.

유형별 리소스

시나리오: PostgreSQL 서버 문제 해결

Kibana 및 Grafana를 사용하여 로그 및 메트릭 보기

시나리오: Azure Portal에서 인스턴스 인벤토리 보기