이 문서는 A2를 사용하면서 발생할 수 있는 일반적인 문제와 그에 대한 해결 방법을 제공합니다. 사용자는 이 문서를 통해 시스템의 설정과 제한 사항을 쉽게 확인하고, 문제 발생 시 빠르게 진단하여 운영의 안정성을 유지할 수 있습니다.
라이센스 리밋 확인
A2에서는 사용자의 라이센스 등급에 따라 api limit등의 여러 제한사항을 적용합니다. Admin page에서 관리자 계정으로 로그인 한 뒤 우측 메뉴바 하단의 Settings 메뉴를 클릭하면 다음과 같이 적용된 제한 사항과 현재 사용량을 확인하실 수 있습니다.
SSP 호출시 No Content 응답 해결 가이드
SSP (Supply Side Platform)에서 지면에 광고 요청(ad request)을 보낼 때 No Content 응답이 오는 경우, 이는 지면의 배정 또는 설정에 문제가 있을 가능성이 있습니다. 지면에는 게재상태인 배정이 하나 이상 있어야 콘텐츠가 정상적으로 노출될 수 있습니다. 아래 단계에 따라 지면이 올바르게 설정되었는지 확인하여 No Content 응답을 방지 하세요.
- 해당 지면을 만든 리테일러 계정으로 Admin 페이지에 로그인합니다.
- Admin 대시보드에서 Placement 메뉴로 이동합니다.
- 확인할 지면을 선택합니다.
- 선택한 지면 페이지에서 배정 중 Published 상태로 표시된 배정이 있는지 확인합니다.
만약 지면에 배정이 연결되어 있지 않거나 연결된 모든 배정이 비게재 상태일 경우 (예를 들어 지면에 등록된 모든 캠페인이 예산이 소진되거나 종료일에 이르러서 완료 상태로 변경됨), 광고 요청 시 콘텐츠를 불러올 수 없어 No Content 응답이 오게 됩니다. 각 지면에 활성화되고 발행된 배정이 연결되어 있어야 광고가 정상적으로 노출됩니다.
온프레미스 환경에서의 트러블슈팅
온프레미스 환경에서는 직접 서버에 접근하여 문제를 진단하고 해결할 수 있습니다. 이 섹션에서는 서버에 물리적으로 접근하여 수행할 수 있는 문제 해결 방법을 중점적으로 다룹니다. 로컬 로그 분석 등을 통해 보다 빠르고 세밀한 대처가 가능합니다.
Supervisord
A2에서는 프로세스를 관리하기 위해 supervisord를 사용합니다.
Docker 컨테이너의 상태가 Unhealthy
로 표시되는 경우 supervisord가 관리하는 프로세스에 문제가 발생했음을 의미합니다. 이 때, /opt/supervisord.log
에 기록된 로그를 통해 supervisord의 문제를 진단할 수 있습니다. 예를 들어, 특정 프로세스의 상태가 FATAL로 표시되는 경우, 이는 해당 프로세스가 종료되어 재시작에도 실패했다는 것을 의미하며, 로그를 통해 구체적인 원인을 파악할 수 있습니다.
일반적인 프로세스 관리를 위해서는 다음과 같이 supervisorctl에 접근할 수 있습니다:
root@5f2769832e02:/opt# supervisorctl -s http://localhost:23231 -u a2 -p a2
a2-adm-backend RUNNING pid 74, uptime 2 days, 5:13:37
a2-docs RUNNING pid 75, uptime 2 days, 5:13:37
a2-dsp RUNNING pid 76, uptime 2 days, 5:13:37
a2-ssp RUNNING pid 77, uptime 2 days, 5:13:37
a2_sinker RUNNING pid 78, uptime 2 days, 5:13:37
event_stream RUNNING pid 85, uptime 2 days, 5:13:37
nginx RUNNING pid 96, uptime 2 days, 5:13:37
redis RUNNING pid 97, uptime 2 days, 5:13:37
vector RUNNING pid 98, uptime 2 days, 5:13:37
supervisor> restart <program_name>
주요 supervisord 명령어:- status: 모든 프로세스의 상태를 확인합니다.
- start <program_name>: 특정 프로그램을 시작합니다.
- stop <program_name>: 특정 프로그램을 중지합니다.
- restart <program_name>: 특정 프로그램을 재시작합니다.
- tail <program_name>: 특정 프로그램의 로그를 실시간으로 확인합니다.
더 자세한 명령어는 help
를 입력하거나 supervisord 공식 문서에서 확인할 수 있습니다.
프로세스 로그
A2는 크게 다음과 같은 컴포넌트로 이루어져있고 각각의 로그는 다음 경로에서 찾을 수 있습니다.
- ADM (Advertising Manager)
- /var/log/nginx.log: ADM 프론트엔드 관련 로그
- /var/log/a2-adm-backend.log: ADM 백엔드 관련 로그
- DMP (Data Management Platform)
- /var/log/a2-sinker.log: 데이터 수집 관련 로그
- /var/log/event_stream.log: 이벤트 스트리밍 관련 로그
- /var/log/redis.log: 이벤트 스트리밍 관련 로그
- /var/log/vector.log: 로그 및 메트릭 수집기 관련 로그
- SSP/DSP (Supply-Side Platform / Demand-Side Platform)
- /var/log/a2-ssp.log: SSP 관련 로그
- /var/log/a2-dsp.log: DSP 관련 로그
- Modeling
- /var/log/a2-train.log: 머신러닝 모델 학습 관련 로그
로그 스니펫을 기반으로 슬랙으로 문의주세요.