alloydbctl 및 Ansible의 조정자 수준 진단 로그를 제어하여 문제 해결을 위해 상세 출력을 조정하거나 자동화된 스크립트의 출력을 음소거합니다. 이러한 로그는 클러스터 부트스트랩, 관리 또는 일반 작업 중에 문제를 진단하는 데 필수입니다.
디버그 정보 수집 및 덤프
Ansible 역할 또는 디버그 덤프 도구를 사용하여 디버그 정보를 수집하고 덤프할 수 있습니다.
Ansible을 사용하여 디버그 정보 수집
google.alloydbomni_orchestrator.dump_debug Ansible 역할은 배포 사양에 정의된 모든 AlloyDB Omni 노드에서 수집 프로세스를 자동화합니다. 다음 정보를 수집하고 통합합니다.
- Systemd 상태: 모든 AlloyDB Omni 서비스의 현재 상태입니다.
- 저널 로그: 시간 기반 필터링을 허용하는 시스템 로그입니다.
디버그 정보 덤프 생성
제어 노드에서 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입니다.
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.logAnsible 디버그 로그 가져오기
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_NAMEINSTANCE_NAME을 systemd 서비스 인스턴스의 이름(예: alloydbomni18@abc.service)으로 바꿉니다.