> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Ghi log

> Đọc, sao chép và lưu giữ log của một bản triển khai Kubernetes.

Mỗi dịch vụ bên trong pod Ayakaleaf Pro ghi tệp log riêng của nó trong `/var/log/overleaf/`; `kubectl logs` chỉ hiển thị đầu ra khởi động của container (các script khởi tạo, migration). `bin/logs` của Toolkit đọc cùng các tệp này, xem [Ghi log](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/overleaf-toolkit/logging.md).

| Ở đâu | Nội dung |
| - | - |
| `kubectl -n overleaf logs <pod>` | khởi động: kiểm tra secret, migration (`Finished migrations`), khởi động dịch vụ |
| `/var/log/overleaf/<service>.log` trong pod | `web.log`, `web-api.log`, `clsi.log`, `real-time.log`, `document-updater.log`, `docstore.log`, `filestore.log`, `history-v1.log`, `project-history.log`, `chat.log`, `notifications.log`, `linked-url-proxy.log`, và `third-party-datastore.log` khi bật Dropbox |
| `/var/log/nginx/` trong pod | `access.log`, `error.log` của nginx đứng trước các dịch vụ |
| `kubectl -n overleaf logs mongo-0`, `redis-0`, `git-bridge-0` | MongoDB, Redis và git-bridge, vốn chạy trong các pod riêng |

### Đọc log

| Toolkit | Kubernetes |
| - | - |
| `bin/logs web` | `kubectl -n overleaf exec deploy/overleaf -- tail -n 20 /var/log/overleaf/web.log` |
| `bin/logs -f web clsi` | `kubectl -n overleaf exec deploy/overleaf -- tail -f /var/log/overleaf/web.log /var/log/overleaf/clsi.log` |
| `bin/logs -n all web > web.log` | `kubectl -n overleaf cp overleaf/<pod>:/var/log/overleaf/web.log web.log` |
| `bin/logs mongo` | `kubectl -n overleaf logs mongo-0` |

Với [nhiều replica](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/kubernetes/horizontal-scaling.md), mỗi pod có các tệp riêng: hãy dùng tên pod (`overleaf-0`, `overleaf-1`, ...) thay cho `deploy/overleaf`. Header `X-Served-By` mà HAProxy thêm vào cho biết replica nào đã trả lời một yêu cầu.

`LOG_LEVEL` trong ConfigMap (mặc định `info`, ngoài ra có `debug`, `warn`, `error`) đặt mức log cho mọi dịch vụ trong pod cùng lúc.

### Lưu giữ log

Các tệp nằm trong container và sẽ bị mất khi pod bị thay thế. Để lưu giữ chúng, hãy mount một volume tại `/var/log/overleaf`, ví dụ một `hostPath` trên node hoặc một PersistentVolumeClaim, trong Deployment hoặc StatefulSet:

```yaml theme={null}
          volumeMounts:
            # ...
            - name: logs
              mountPath: /var/log/overleaf
      volumes:
        # ...
        - name: logs
          hostPath:
            path: /srv/overleaf-logs
            type: DirectoryOrCreate
```

Container xoay vòng các tệp hằng ngày và giữ lại năm tệp, nên volume không tăng kích thước vô hạn. Hoặc hãy thu thập chúng từ đường dẫn đó bằng log agent của cluster.

### Đã kiểm thử trên Kubernetes

Trên Kubernetes 1.37 với ba replica và một volume `hostPath` tại `/var/log/overleaf` như trên, `/srv/overleaf-logs` của mỗi node chứa mười hai log dịch vụ của replica tương ứng, và các lệnh trong bảng hoạt động như mô tả: `tail` thông qua `kubectl exec`, `kubectl cp` một tệp log, `kubectl logs` của pod Overleaf (khởi động và migration) và của `mongo-0`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.