# Automatic Log Cleanup

OvenMediaEngine Enterprise on AWS는 운영 중 **지속적으로 Log File을 생성**합니다. Log가 누적되면 Disk 사용량이 과도하게 증가할 수 있으므로, 이를 사전에 방지하기 위해 **Automatic Log Cleanup** 기능을 제공합니다.

## Log Cleanup 기본 정책 <a href="#default-log-cleanup-policy" id="default-log-cleanup-policy"></a>

현재 OvenMediaEngine Enterprise on AWS에 적용된 Automatic Log Cleanup 기본 정책은 다음과 같습니다:

* **보존 기간 (Days):** <mark style="color:yellow;">90일</mark>이 지난 Log는 자동으로 삭제됩니다.
* **최소 보존 기간 (Days):** <mark style="color:yellow;">최근 1일</mark> 이내의 Log는 보존됩니다.
* **용량 제한 (MB):** 총 용량이 <mark style="color:yellow;">1GB (1024MB)</mark>를 초과하면, 가장 오래된 File부터 삭제하여 용량을 확보합니다.
* **실행 주기:** Automatic Log Cleanup 기능은 기본으로 활성화되어 있으며, 매일 새벽 <mark style="color:yellow;">03:00 (UTC)</mark>에 자동 실행됩니다.

위 Policy는 아래 Log에 적용됩니다:

<table><thead><tr><th width="164.7777099609375">Log Type</th><th width="221.6666259765625">Directory</th><th width="199.9998779296875">File Pattern</th><th>Description</th></tr></thead><tbody><tr><td>OvenMediaEngine</td><td>/var/log/ovenmediaengine</td><td><code>ovenmediaengine.log.*</code></td><td>OME Core Engine Log (Rotated)</td></tr><tr><td>Web Console</td><td>/var/log/ovenmediaengine/ovenstudio</td><td><code>oven-studio_*.log</code></td><td>Web Console Service Log</td></tr><tr><td>OvenMediaEngine Delivery</td><td>/var/log/ovenmediaengine/ovenmediaengine-delivery</td><td><code>delivery-daemon.log.*</code></td><td>Recording Delivery System Log</td></tr><tr><td>OvenMediaEngine Monitoring</td><td>/var/log/ovenmediaengine</td><td><code>events.log.*</code></td><td>OME Monitoring Event Log</td></tr></tbody></table>

## Log Cleanup 정책 변경하기 <a href="#changing-the-log-cleanup-policy" id="changing-the-log-cleanup-policy"></a>

운영 방식에 따라 Log 보존 기간, 용량 제한 등의 Policy 변경이 필요하다면, 아래 절차에 따라 세부 조정할 수 있습니다.

{% stepper %}
{% step %}

### Log Cleanup Script 수정 <a href="#edit-the-log-cleanup-script" id="edit-the-log-cleanup-script"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FdMrTWq1brTCLP4hsfjJz%2Fimage.png?alt=media&#x26;token=4a5d3bfc-84fc-4beb-a323-631f27cf7874" alt=""><figcaption></figcaption></figure>

1. [EC2 연결 공식 가이드](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)에 따라 Instance에 SSH로 접속한 뒤, 아래 명령어로 Script를 편집합니다:

```bash
sudo vi /opt/omee-log-cleanup.sh
```

{% endstep %}

{% step %}

### 변수를 이용한 Policy 변경

2. Script 상단에 명시된 '변수'에 기본값이 적용되어 있습니다.

```bash
# Configuration (Adjust according to your environment)
RETENTION_DAYS=90    # Max retention period (days)
MIN_RETENTION_DAYS=1    # Min retention period (days) - Safety guard for size limit
MAX_TOTAL_SIZE_MB=1024    # Max allowed size (MB) - e.g., 1GB
```

<table><thead><tr><th width="176.2222900390625">Value</th><th width="159.5555419921875" align="center">Input Range</th><th>Description</th></tr></thead><tbody><tr><td><code>RETENTION_DAYS</code></td><td align="center"><p>0~</p><ul><li><mark style="color:yellow;">Default: 90</mark></li></ul></td><td>보관되는 Log의 최대 보존 기간 (일; Days)을 설정합니다.</td></tr><tr><td><code>MIN_RETENTION_DAYS</code></td><td align="center"><p>0~</p><ul><li><mark style="color:yellow;">Default: 1</mark></li></ul></td><td><p>보관되는 Log의 최소 보존 기간 (일; Days)을 설정합니다.</p><ul><li><mark style="color:yellow;">용량 제한에 걸리더라도 이 기간 내의 File은 삭제되지 않도록 보호하는 안전 장치입니다.</mark></li></ul></td></tr><tr><td><code>MAX_TOTAL_SIZE_MB</code></td><td align="center"><p>0~</p><ul><li><mark style="color:yellow;">Default: 1024</mark></li></ul></td><td>Log를 보관할 Storage의 최대 허용 용량 (MB)을 설정합니다.</td></tr></tbody></table>

3. Script 상단의 변수를 수정하면, Script 하단 `cleanup_logs`에 전체 적용됩니다.

```bash
# 1. OvenMediaEngine Core Logs
cleanup_logs "/var/log/ovenmediaengine" "ovenmediaengine.log.*" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB

# 2. OvenStudio Logs
cleanup_logs "/var/log/ovenmediaengine/ovenstudio" "oven-studio_*.log" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB

# 3. Delivery Daemon Logs
cleanup_logs "/var/log/ovenmediaengine/ovenmediaengine-delivery" "delivery-daemon.log.*" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB

# 4. Events Logs
cleanup_logs "/var/log/ovenmediaengine" "events.log.*" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB
```

{% endstep %}

{% step %}

### Log별 Policy 변경 (선택 사항) <a href="#customize-policy-per-log-type-optional" id="customize-policy-per-log-type-optional"></a>

* Log Type별로 서로 다른 Policy를 적용하려면, Script 하단의 `cleanup_logs` 호출 부분을 직접수정하십시오.

```bash
# 1. OvenMediaEngine Core Logs
cleanup_logs "/var/log/ovenmediaengine" "ovenmediaengine.log.*" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB

# 2. OvenStudio Logs
cleanup_logs "/var/log/ovenmediaengine/ovenstudio" "oven-studio_*.log" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB

# 3. Delivery Daemon Logs
cleanup_logs "/var/log/ovenmediaengine/ovenmediaengine-delivery" "delivery-daemon.log.*" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB

# 4. Events Logs
cleanup_logs "/var/log/ovenmediaengine" "events.log.*" $RETENTION_DAYS $MIN_RETENTION_DAYS $MAX_TOTAL_SIZE_MB
```

#### Syntax

```bash
cleanup_logs "<로그_디렉토리>" "<파일_패턴>" 최대보존기간(일) 최소보존기간(일) 허용용량(MB)
```

#### Example

* **Main Log** (`ovenmediaengine.log.*`)는 중요도가 높으므로 7\~180일 동안 Log를 보관하고, 최대 5GB까지 저장하는 설정 예제.

```bash
cleanup_logs "/var/log/ovenmediaengine" "ovenmediaengine.log.*" 180 7 5120
```

* **Event Log** (`events.log.*`)는 상대적으로 중요도가 낮으므로 1\~30일 동안 Log를 보관하고, 최대 500MB까지 저장하는 설정 예제.

```bash
cleanup_logs "/var/log/ovenmediaengine" "events.log.*" 30 1 500
```

{% endstep %}

{% step %}

### Log Cleanup Script 저장 <a href="#save-the-log-cleanup-script" id="save-the-log-cleanup-script"></a>

4. Script를 수정한 뒤 저장하면 변경 사항이 즉시 적용됩니다. 따라서 별도로 Instance 또는 OvenMediaEngine(Service)을 재시작하거나 Crontab을 다시 등록할 필요가 없습니다.
   {% endstep %}
   {% endstepper %}
