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

# Thiết lập dự án LogBrew và kiểm tra tín hiệu

> Thiết lập dự án LogBrew. Chọn tên dịch vụ và môi trường, đọc trạng thái thiết lập và tìm sự kiện thử từ ứng dụng của bạn.

Dự án là ranh giới truy cập cho telemetry. Mỗi tín hiệu được chấp nhận đều thuộc
về một dự án, và mọi lệnh đọc đều có thể lọc theo dự án.

Dùng dự án riêng khi telemetry cần ranh giới sở hữu hoặc truy cập riêng. Với
phần lớn các nhóm, đó là một ứng dụng, một dịch vụ hoặc một khu vực sản phẩm.
Một repository không nhất thiết phải tương ứng với một dự án. Một monorepo có thể
gửi nhiều dịch vụ vào cùng một dự án. Dùng tên dịch vụ để phân biệt chúng.

## <span id="project-service-environment">Dự án, dịch vụ, môi trường</span>

| Thuật ngữ | Ví dụ | Dùng cho |
| - | - | - |
| Dự án | `checkout-platform` | Quyền sở hữu và truy cập. |
| Dịch vụ | `checkout-api` | Ứng dụng hoặc dịch vụ đã gửi tín hiệu. |
| Môi trường | `production` | Ngữ cảnh runtime. |
| Bản phát hành | `api@1.2.3` | Phiên bản mã. |

## <span id="recommended-model">Thiết lập dự án</span>

[Cài đặt CLI](/vi/guides/cli). Chạy `logbrew status --json` để đọc quyền truy cập
của tài khoản. Nếu quyền truy cập không hợp lệ, một người phải tự chạy
`logbrew login`. Không thể đăng nhập bằng khóa gửi dữ liệu của dự án.

<Steps>
  <Step title="Tạo hoặc chọn dự án">
    Liệt kê các dự án của bạn trước. Chỉ tạo dự án khi dự án đó chưa tồn tại.

    ```bash theme={null}
    logbrew projects --json
    install -d -m 700 "$HOME/.logbrew"

    logbrew projects create checkout-api \
      --runtime node \
      --environment production \
      --ingest-key-file "$HOME/.logbrew/checkout-api.ingest" \
      --json
    ```

    CLI ghi khóa gửi dữ liệu vào một tệp mới mà chỉ chủ sở hữu truy cập được.
    CLI không bao giờ in khóa hay đường dẫn tệp. Nếu kết quả không rõ ràng,
    chạy lại đúng lệnh đó. Đừng đổi tên dự án hoặc tệp khóa. CLI sẽ dùng lại
    định danh của yêu cầu đang chờ. Trang [Bắt đầu nhanh](/vi/quickstart) chỉ
    cách đọc ID dự án từ kết quả.

    Với dự án đã có, ghi lại trạng thái thiết lập:

    ```bash theme={null}
    logbrew projects setup "<project_id>" --source cli --environment production --json
    ```

    Để tạo thêm khóa gửi dữ liệu cho dự án đã có, dùng
    `logbrew projects keys create`.
    Hướng dẫn [Xoay vòng khóa gửi dữ liệu](/vi/guides/rotate-ingest-key) có
    ví dụ cho lệnh này.

    `logbrew setup --create-project` chỉ hiển thị trợ giúp. Lệnh này không tạo
    dự án.
  </Step>

  <Step title="Đặt tên dịch vụ trong SDK">
    Dùng tên lấy từ repository và cấu hình triển khai của bạn, chẳng hạn
    `api`, `worker`, `web`, `ios` hoặc `checkout-api`. Tên dịch vụ là một nhãn,
    không dùng để chọn dự án. Dự án do khóa gửi dữ liệu quyết định. Đổi tên
    dịch vụ không chuyển các sự kiện đã lưu. Nếu không tìm thấy sự kiện, kiểm
    tra dự án và khóa gửi dữ liệu mà ứng dụng đang dùng trước khi tạo dự án
    khác.
  </Step>

  <Step title="Dùng môi trường chuẩn">
    Dùng `production`, `staging`, `preview` và `local`. Nếu hệ thống triển khai
    của bạn dùng tên khác, dùng các tên đó một cách nhất quán. Tên môi trường
    không được chứa dấu cách, `/` hoặc dấu gạch chéo ngược.
  </Step>

  <Step title="Gửi sự kiện thử và đọc lại">
    Cấu hình SDK bằng khóa gửi dữ liệu của dự án, theo hướng
    dẫn [Tích hợp SDK](/vi/guides/sdk-ingestion). Tạo dự án
    không tự cài SDK vào ứng dụng của bạn. Không đưa khóa vào hệ thống quản lý
    mã nguồn. Đặt dịch vụ, môi trường và bản phát hành trong ứng dụng. Gửi một
    sự kiện an toàn, rồi đọc lại:

    ```bash theme={null}
    logbrew read logs --project "<project_id>" --json
    ```

    Mỗi loại tín hiệu có danh sách riêng. Danh sách log trống không có nghĩa là
    dự án không có vấn đề hay trace nào.

    Trong bảng điều khiển, chọn cùng dự án đó và một khoảng thời gian có chứa
    sự kiện thử. Đảm bảo bộ lọc dịch vụ, môi trường và bản phát hành khớp với
    sự kiện.
  </Step>
</Steps>

## <span id="diagnose-project-setup">Chẩn đoán thiết lập dự án</span>

Đọc trạng thái thiết lập bằng project doctor (công cụ chẩn đoán dự án). Đừng
suy ra trạng thái thiết lập từ tệp cục bộ hoặc từ một truy vấn log trống.

```bash theme={null}
: "${LOGBREW_PROJECT_ID:?set a project UUID}"

logbrew doctor --project "$LOGBREW_PROJECT_ID" --json
```

CLI trả về một báo cáo có `status`, `checks` và `next`. Mã thoát `0` không cho
thấy mọi bước kiểm tra đều đạt. Đọc từng mục trong `checks`. Xem
[Đọc báo cáo doctor của dự án](/vi/reference/cli#read-a-project-doctor-report).

### Phản hồi trực tiếp từ API

Client API gọi `GET /api/projects/{project_id}/doctor` bằng xác thực tài khoản.
Endpoint này không có tham số truy vấn hay body của yêu cầu. Không bao giờ dùng
khóa gửi dữ liệu của dự án cho lần đọc này.

Phản hồi `200` có các trường sau: `project_id`, `state`, `setup_status`,
`setup_acknowledged`, `has_active_ingest_key`, `first_telemetry_seen_at`,
`last_seen_at`, `last_signal`, `next` và `next_action`. Dấu thời gian có định
dạng RFC3339 hoặc là `null`. `last_signal` là bản tóm tắt an toàn để hiển thị,
không phải tín hiệu thô.

| `state` | `next_action.code` | `next_action.target` |
| - | - | - |
| `needs_ingest_key` | `create_ingest_key` | `project_ingest_keys` |
| `needs_setup` | `choose_setup_path` | `project_setup` |
| `needs_telemetry` | `send_first_telemetry` | `telemetry_ingest` |
| `ready` | `inspect_recent_telemetry` | `telemetry_reads` |

Doctor kiểm tra khóa gửi dữ liệu trước tiên. Dự án không có khóa gửi dữ liệu
nào đang hoạt động sẽ ở trạng thái `needs_ingest_key`, bất kể trạng thái thiết
lập là gì.

`setup_status` là `created`, `setup_started`, `sdk_seen`,
`first_telemetry_seen` hoặc `active`. `setup_acknowledged` chỉ là `true` với 3
giá trị cuối. `created` cho ra `needs_setup`. `setup_started` và `sdk_seen` cho
ra `needs_telemetry`. `first_telemetry_seen` và `active` cho ra `ready`.

| Phản hồi | Bước tiếp theo |
| - | - |
| `404`, `code: "not_found"` | Dự án không tồn tại, dự án đã lưu trữ và dự án mà tài khoản của bạn không có quyền đọc đều cho cùng một kết quả. Đọc lại ID dự án từ `logbrew projects`. Đừng thử các ID khác. |
| `405`, `code: "method_not_allowed"` | Dùng `GET`, không kèm body hay tham số truy vấn. |

Nếu vẫn không đọc được, [báo cáo sự cố](/vi/guides/report-a-problem). Không đưa
thông tin xác thực, header, nội dung tín hiệu, dữ liệu khách hàng, đường dẫn cục
bộ hoặc mã nguồn vào báo cáo.

## <span id="archive-or-delete-a-project">Lưu trữ hoặc xóa dự án</span>

Lưu trữ dự án để đưa nó ra khỏi danh sách dự án đang hoạt động:

```bash theme={null}
logbrew projects archive "<project_id>" --yes --json
```

Lệnh này cần `--yes`. Sau khi lưu trữ, các khóa gửi dữ liệu của dự án ngừng
nhận telemetry mới. Route API là `DELETE /api/projects/{project_id}`. Route này
trả về `204` không kèm body. Liệt kê các dự án đã lưu trữ bằng
`GET /api/projects/archived`. Khôi phục một dự án bằng
`POST /api/projects/{project_id}/restore`, route này cũng trả về `204`.

Chỉ xóa vĩnh viễn dự án khi bạn chắc chắn:

```bash theme={null}
logbrew projects delete "<project_id>" --confirm "<project_id>" --json
```

Nhập lại chính xác ID dự án sau `--confirm`. Khi yêu cầu được chấp nhận, dự án
ngừng hoạt động ngay lập tức và được lên lịch xóa vĩnh viễn. Sau đó bạn không
thể khôi phục dự án.

## <span id="rotate-an-ingest-key-without-telemetry-loss">Xoay vòng khóa gửi dữ liệu</span>

Hướng dẫn [Xoay vòng khóa gửi dữ liệu](/vi/guides/rotate-ingest-key) mô tả
quy trình thay khóa, triển khai, kiểm tra và thu hồi.


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