AlloyDB Omni 진단 덤프 파일 생성

문서 버전을 선택합니다.

시스템 상태 및 진단 로그가 포함된 AlloyDB Omni 디버그 덤프를 생성하여 배포에서 예기치 않은 문제를 해결합니다. 디버그 로그는 AlloyDB Omni 상태에 대한 중요한 진단 정보를 제공하므로 개발자나 Cloud Customer Care팀이 AlloyDB Omni 스택의 다양한 서비스 실행과 관련된 오류 또는 문제와 관련된 문제를 분석하는 데 도움이 됩니다. Ansible 역할 또는 독립형 도구를 사용하여 이러한 파일을 수집합니다.

alloydbctl 및 Ansible의 조정자 수준 진단 로그를 제어하여 문제 해결을 위해 상세 출력을 조정하거나 자동화된 스크립트의 출력을 음소거합니다. 이러한 로그는 클러스터 부트스트랩, 관리 또는 일반 작업 중에 문제를 진단하는 데 필수입니다.

디버그 정보 수집 및 덤프

Ansible 역할 또는 디버그 덤프 도구를 사용하여 디버그 정보를 수집하고 덤프할 수 있습니다.

Ansible을 사용하여 디버그 정보 수집

google.alloydbomni_orchestrator.dump_debug Ansible 역할은 배포 사양에 정의된 모든 AlloyDB Omni 노드에서 수집 프로세스를 자동화합니다. 다음 정보를 수집하고 통합합니다.

  • Systemd 상태: 모든 AlloyDB Omni 서비스의 현재 상태입니다.
  • 저널 로그: 시간 기반 필터링을 허용하는 시스템 로그입니다.

디버그 정보 덤프 생성

  1. 제어 노드에서 Ansible 플레이북을 만듭니다(예: dump_debug.yml). 플레이북에 다음을 추가합니다.

    - name: Collect AlloyDB Omni Debug Dump
      hosts: all
      become: true
      gather_facts: true
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: PATH_TO_PRIVATE_SSH_KEY
        # Optional: Customize dump behavior
        dump_debug_binary_path: "BINARY_PATH"
        dump_debug_collection_type: "COLLECTION_TYPE"
        dump_debug_local_dest: ""ANSIBLE_DESTINATION""
        dump_debug_tag: ""TAG_NAME""
        dump_debug_journal_spec: "JOURNAL_SPEC"
      roles:
        - role: google.alloydbomni_orchestrator.dump_debug
    

    다음을 바꿉니다.

    • ANSIBLE_USER: Ansible이 로그인하는 사용자입니다.
    • PATH_TO_PRIVATE_SSH_KEY: SSH 비공개 키 파일의 경로입니다.
    • BINARY_PATH: 선택사항. 원격 노드의 바이너리 경로입니다. 기본값은 /usr/local/bin입니다.
    • COLLECTION_TYPE: 선택사항. 컬렉션 유형 (status, logs, config 또는 all)입니다. 기본값은 all입니다.
    • ANSIBLE_DESTINATION: 선택사항. Ansible 제어 노드의 대상입니다. 기본값은 /tmp/debug_dump입니다.
    • TAG_NAME: 선택사항. 커스텀 식별자입니다. 태그가 있으면 서픽스 (예: _1)가 추가됩니다. 기본값은 시스템 타임스탬프입니다.
    • JOURNAL_SPEC: 선택사항. journalctl 플래그 (예: "--since '1 hour ago'")를 지원합니다. 기본값은 -n 1000입니다.
  2. ansible-playbook 명령어를 사용하여 플레이북을 실행하고 deployment_spec.yaml를 인벤토리로 지정합니다.

    # standard execution
    ansible-playbook dump_debug.yml -i PATH_TO_DEPLOYMENT_SPEC

    또는 원하는 커스텀 태그 및 저널 사양으로 플레이북을 실행합니다.

    ansible-playbook dump_debug.yml -i PATH_TO_DEPLOYMENT_SPEC \
    -e 'dump_debug_tag=TAG_NAME' \
    -e 'dump_debug_journal_spec: "JOURNAL_SPEC"'

    다음을 바꿉니다.

    • PATH_TO_DEPLOYMENT_SPEC: 배포 사양 YAML 파일의 경로입니다.
    • TAG_NAME: 선택사항. 커스텀 식별자입니다. 태그가 있으면 서픽스 (예: _1)가 추가됩니다. 기본값은 시스템 타임스탬프입니다.
    • JOURNAL_SPEC: 선택사항. journalctl 플래그(예: "--since '1 hour ago'")를 지원합니다. 기본값은 -n 1000입니다.

디버그 덤프 도구를 사용하여 디버그 정보 수집

alloydbomni_dump 도구를 사용하여 덤프 파일을 생성할 수 있습니다. 이 도구는 AlloyDB Omni 조정자 패키지에 포함되어 있습니다.

덤프 파일 생성

디버깅하려는 AlloyDB Omni 클러스터 노드에서 다음 스크립트를 실행합니다.

sudo /usr/local/bin/alloydbomni_dump \
   -k SSH_KEY \
   -u USER \
   -d PATH_TO_DEPLOYMENT_SPEC \
   -o OUTPUT_DIRECTORY \
   [options]

다음을 바꿉니다.

  • SSH_KEY: 사용자의 SSH 비공개 키 경로입니다.
  • USER: 클러스터 노드에 대한 SSH 액세스의 사용자 이름입니다.
  • PATH_TO_DEPLOYMENT_SPEC: 배포 사양 YAML 파일의 경로입니다.
  • OUTPUT_DIRECTORY: 생성된 덤프 파일을 저장할 로컬 디렉터리입니다.

지원되는 명령어

  • -k: SSH 비공개 키의 필수 경로입니다.
  • -u: 필수 서비스 계정 사용자 이름입니다.
  • -d: 배포 사양 YAML 파일의 필수 경로입니다.
  • -o: 최종 tar 파일의 필수 출력 디렉터리입니다.
  • -t: 선택사항인 커스텀 태그 식별자입니다.
  • -c: 선택적 컬렉션 유형 (status, logs, config, all)입니다.
  • -s: 선택적 저널 크기 및 시간 사양 (예: -s "--since \"30 minutes ago\"")

실행 예시

alloydbomni_dump -k /home/user/ssh-key \
  -u sa_12345 -d /tmp/deployment_spec.yaml \
  -o /tmp/debug_dump -s "--since \"2 hours ago\""

조정자 진단 로그 가져오기

alloydbctl 및 Ansible 조정자 모두에서 생성된 진단 로그를 가져올 수 있습니다. 이렇게 하면 문제 해결을 위해 상세 출력을 늘리거나 자동화된 스크립트의 출력을 무음으로 설정할 수 있습니다. 로깅은 클러스터의 부트스트랩, 관리 또는 일반 작업 중에 문제를 진단하는 데 필수적입니다.

alloydbctl 디버그 로그 가져오기

alloydbctl 도구는 로그 수준과 출력 대상을 제어하는 명령줄 인수를 지원합니다. 로그 수준은 로깅할 메시지의 심각도를 결정하고 로그 대상은 이러한 로그가 기록되는 위치를 지정합니다.

alloydbctl [command] ... [{-l|--log_level} <LEVEL>] [{-f|--log_file} <FILE>]

로그 수준 (-l / --log_level)

다음 로그 수준을 사용할 수 있습니다. 로그 수준은 대소문자를 구분하지 않습니다(예: DEBUG와 debug는 동일하게 취급됨).

  • NOTSET (기본값): 로깅 없음
  • 디버그: 일반적으로 문제를 진단할 때만 관심이 있는 세부정보를 로깅합니다. RPC 요청 및 응답을 로깅합니다.
  • INFO: 작업이 예상대로 작동하는지 확인합니다.
  • WARNING: 예상치 못한 상황이 발생했음을 나타내지만 (예: '디스크 공간 부족') 소프트웨어는 계속 작동합니다.
  • ERROR: 더 심각한 문제로 인해 소프트웨어가 일부 기능을 수행할 수 없습니다.
  • CRITICAL: 심각한 오류로, 프로그램 자체가 계속 실행되지 않을 수 있음을 나타냅니다.

로그 대상 (-f / --log_file)

다음 로그 대상을 선택할 수 있습니다.

  • 파일 경로: 제공된 경우 (예: -f /tmp/alloydbctl.log) 로그가 지정된 파일에 기록됩니다.
  • 표준 출력: 제공되지 않으면 로그가 콘솔 (stdout)에 출력됩니다.

예

다음 예시에서는 alloydbctl를 사용하여 DEBUG 수준 로깅을 사용 설정하면서 배포 및 리소스 사양을 적용합니다. 세부정보 및 RPC 요청/응답을 포함한 로그는 표준 출력 대신 /tmp/alloydbctl_debug.log 파일에 기록됩니다.

alloydbctl apply -d deployment_spec.yaml -r resource_spec.yaml -l DEBUG -f /tmp/alloydbctl_debug.log

Ansible 디버그 로그 가져오기

Ansible Orchestrator는 Ansible 작업 및 Ansible 모듈에서 로그를 생성합니다. 표준 Ansible 명령줄 인수를 전달하여 태스크와 모듈 모두에 대한 로깅 동작을 변경할 수 있습니다. 자세한 내용은 ansible-playbook 문서를 참조하세요.

Ansible 모듈의 로그 수준

기본적으로 로그는 플레이북이 실행 중인 콘솔로 전송됩니다.

log_level 구성 설정을 지정하려면 다음을 실행합니다.

ansible-playbook -i inventory.yaml bootstrap.yaml \
  -e resource_spec=resource_spec.yaml \
  -e log_level=DEBUG

다음과 같은 표준 Ansible 상세 출력 플래그를 사용하여 출력 상세 출력을 제어할 수도 있습니다.

  • -v: 기본 상세 출력 (INFO 수준 로그)
  • -vv 이상: 세부정보 수준 증가 (DEBUG 수준 로그)

예를 들면 다음과 같습니다.

ansible-playbook -i inventory.yaml bootstrap.yaml \
  -e resource_spec=resource_spec.yaml \
  -vv

Ansible 모듈의 로그 경로

기본적으로 로그는 캡처되지 않으며 로그 파일에서 로그를 캡처하도록 로그 수준을 구성해야 합니다.

Ansible 출력을 로그 파일에 저장하려면 다음을 실행하여 log_path 구성을 설정합니다.

ansible-playbook -i inventory.yaml bootstrap.yaml \
  -e resource_spec=resource_spec.yaml \
  -e log_file=/tmp/ansible-module.log

실패한 systemd 인스턴스 재설정

디버그 덤프에 오래되고 실패한 서비스 인스턴스가 표시되면 영향을 받는 클러스터 노드에서 다음 명령어를 실행하여 삭제합니다.

sudo systemctl reset-failed

특정 systemd 서비스를 재설정하려면 서비스 인스턴스 이름을 지정합니다.

sudo systemctl reset-failed INSTANCE_NAME

INSTANCE_NAME을 systemd 서비스 인스턴스의 이름(예: alloydbomni18@abc.service)으로 바꿉니다.