> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aiderx.io/llms.txt
> Use this file to discover all available pages before exploring further.

# A2 시스템 에러 해결 가이드

> A2 시스템에서 발생하는 다양한 에러의 문제 해결 방법을 상세히 설명합니다.

이 문서는 A2를 사용하면서 발생할 수 있는 일반적인 문제와 그에 대한 해결 방법을 제공합니다. 사용자는 이 문서를 통해 시스템의 설정과 제한 사항을 쉽게 확인하고, 문제 발생 시 빠르게 진단하여 운영의 안정성을 유지할 수 있습니다.

## 라이센스 리밋 확인

A2에서는 사용자의 라이센스 등급에 따라 api limit등의 여러 제한사항을 적용합니다. Admin page에서 관리자 계정으로 로그인 한 뒤 우측 메뉴바 하단의 Settings 메뉴를 클릭하면 다음과 같이 적용된 제한 사항과 현재 사용량을 확인하실 수 있습니다.

‍<img src="https://mintcdn.com/aiderx/tjHtaiAN__Ai-ZM-/images/admin-settings.png?fit=max&auto=format&n=tjHtaiAN__Ai-ZM-&q=85&s=f9ef154e536e35dbddd2f51ae938b224" alt="image.png" width="2478" height="1744" data-path="images/admin-settings.png" />

## Edge 호출시 No Content 응답 해결 가이드

Edge (Supply Side Platform)에서 지면에 광고 요청(ad request)을 보낼 때 **No Content** 응답이 오는 경우, 이는 지면의 배정 또는 설정에 문제가 있을 가능성이 있습니다. 지면에는 게재상태인 배정이 하나 이상 있어야 콘텐츠가 정상적으로 노출될 수 있습니다. 아래 단계에 따라 지면이 올바르게 설정되었는지 확인하여 No Content 응답을 방지 하세요.

1. 해당 지면을 만든 **리테일러 계정**으로 Admin 페이지에 로그인합니다.
2. Admin 대시보드에서 **Placement** 메뉴로 이동합니다.
3. 확인할 지면을 선택합니다.
4. 선택한 지면 페이지에서 배정 중 **Published** 상태로 표시된 배정이 있는지 확인합니다.

만약 지면에 배정이 연결되어 있지 않거나 연결된 모든 배정이 비게재 상태일 경우 (**예를 들어 지면에 등록된 모든 캠페인이 예산이 소진되거나 종료일에 이르러서 완료 상태로 변경됨**), 광고 요청 시 콘텐츠를 불러올 수 없어 No Content 응답이 오게 됩니다. 각 지면에 활성화되고 발행된 배정이 연결되어 있어야 광고가 정상적으로 노출됩니다.

## 온프레미스 환경에서의 트러블슈팅

온프레미스 환경에서는 직접 서버에 접근하여 문제를 진단하고 해결할 수 있습니다. 이 섹션에서는 서버에 물리적으로 접근하여 수행할 수 있는 문제 해결 방법을 중점적으로 다룹니다. 로컬 로그 분석 등을 통해 보다 빠르고 세밀한 대처가 가능합니다.

### Supervisord

A2에서는 프로세스를 관리하기 위해 [supervisord](http://supervisord.org)를 사용합니다.

Docker 컨테이너의 상태가 `Unhealthy`로 표시되는 경우 supervisord가 관리하는 프로세스에 문제가 발생했음을 의미합니다. 이 때, `/opt/supervisord.log`에 기록된 로그를 통해 supervisord의 문제를 진단할 수 있습니다. 예를 들어, 특정 프로세스의 상태가 FATAL로 표시되는 경우, 이는 해당 프로세스가 종료되어 재시작에도 실패했다는 것을 의미하며, 로그를 통해 구체적인 원인을 파악할 수 있습니다.

일반적인 프로세스 관리를 위해서는 다음과 같이 supervisorctl에 접근할 수 있습니다:

```bash theme={null}
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                           FATAL     Exited too quickly (process log may have details)
a2-edge                          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는 크게 다음과 같은 컴포넌트로 이루어져있고 각각의 로그는 다음 경로에서 찾을 수 있습니다.

1. ADM (Advertising Manager)

* /var/log/nginx.log: ADM 프론트엔드 관련 로그
* /var/log/a2-adm-backend.log: ADM 백엔드 관련 로그

2. DMP (Data Management Platform)

* /var/log/a2-sinker.log: 데이터 수집 관련 로그
* /var/log/event\_stream.log: 이벤트 스트리밍 관련 로그
* /var/log/redis.log: 이벤트 스트리밍 관련 로그
* /var/log/vector.log: 로그 및 메트릭 수집기 관련 로그

3. Edge/DSP (Supply-Side Platform / Demand-Side Platform)

* /var/log/a2-edge.log: Edge 관련 로그
* /var/log/a2-dsp.log: DSP 관련 로그

4. Modeling

* /var/log/a2-train.log: 머신러닝 모델 학습 관련 로그

로그 스니펫을 기반으로 [슬랙](https://a2cloudsupporthub.slack.com)으로 문의주세요.
