Tìm hiểu về Amazon CloudWatch Logs và ứng dụng vào Unity

Xin chào các bạn, mình là Nguyễn Bảo Khánh, hiện đang là XR Developer tại Công ty OneTech Asia. Hôm nay, mình sẽ giới thiệu sơ lược về Amazon CloudWatch Logs và cách kết hợp nó vào các ứng dụng build trên Unity nhé.

Như các bạn đã biết, Amazon Web Services (AWS) là một giải pháp đám mây toàn diện được sử dụng rộng rãi, với hơn 200 dịch vụ đầy đủ tính năng được cung cấp từ các trung tâm dữ liệu trên toàn thế giới. Thông thường, chúng ta thường sử dụng AWS trên các nền tảng như PHP, Javascript, Python, và nhiều nền tảng khác. Tuy nhiên, trong bài viết này, tôi sẽ trình bày cách ứng dụng dịch vụ CloudWatchLogs của AWS vào Unity Engine bằng .NET và hướng dẫn các bước cơ bản để tạo một ứng dụng.

GIỚI THIỆU VỀ AWS CLOUDWATCH LOG VÀ NUGET

AWS CloudWatch Logs

  • CloudWatch Logs cho phép bạn tập trung nhật ký từ tất cả các hệ thống, ứng dụng và dịch vụ AWS mà bạn sử dụng, trong một dịch vụ duy nhất, có khả năng mở rộng cao. Sau đó, bạn có thể dễ dàng xem chúng, tìm kiếm chúng để tìm các mã hoặc mẫu lỗi cụ thể, lọc chúng dựa trên các trường cụ thể hoặc lưu trữ chúng một cách an toàn để phân tích trong tương lai. CloudWatch Logs cho phép bạn xem tất cả nhật ký của mình, bất kể nguồn của chúng là gì, dưới dạng một luồng sự kiện duy nhất và nhất quán được sắp xếp theo thời gian.
  • CloudWatch Logs cũng hỗ trợ truy vấn nhật ký của bạn bằng ngôn ngữ truy vấn mạnh mẽ, kiểm tra và ẩn dữ liệu nhạy cảm trong nhật ký cũng như tạo số liệu từ nhật ký bằng bộ lọc hoặc định dạng nhật ký được nhúng.
  • Bạn có thể sử dụng Amazon CloudWatch Logs để giám sát, lưu trữ và truy cập các tệp nhật ký của mình từ các phiên bản Amazon Elastic Compute Cloud (Amazon EC2), AWS CloudTrail, Route 53 và các nguồn khác.
  • Xem thêm tại: WhatIsCloudWatchLogs

Nuget

  • NuGet là trình quản lý gói, chủ yếu được sử dụng để đóng gói và phân phối phần mềm được viết bằng .NET framework. Quỹ Outercurve ban đầu tạo ra nó dưới tên NuPack. Kể từ khi được giới thiệu vào năm 2010, NuGet đã phát triển thành một hệ sinh thái công cụ và dịch vụ lớn hơn, bao gồm ứng dụng khách nguồn mở và miễn phí, máy chủ gói được lưu trữ và công cụ triển khai phần mềm.
  • Xem them tại: https://en.wikipedia.org/wiki/NuGet

NỘI DUNG

Điều kiện tiên quyết:

Trước khi có thể sử dụng AWS cho Unity, bạn sẽ cần những thứ sau:

  • Tài khoản AWS: https://aws.amazon.com/
  • Phiên bản 4. Unity x hoặc 5.x (Unity 4.6.4p4 hoặc Unity 5.0.1p3 là bắt buộc nếu bạn muốn viết ứng dụng chạy trên iOS 64-bit. Khuyến khích các phiên bản từ 2019 trở lên.

Import Nuget Unity Package:

Như trình bày ở phần I, AWS thuộc .NET framework nên để sử dụng được AWS SDK ta cần Import Nuget vào Unity trước.

Cách Import Nuget Unity tham khảo tại: https://github.com/GlitchEnzo/NuGetForUnity

Sau khi Import, Unity sẽ load một lúc và sẽ hiện Nuget trên Editor (trường hợp nếu không load thì restart lại Unity).

Nuget trên Editor

Tiếp theo, chúng ta hãy mở Nuget Package lên để tải AWS Package về.

Nuget Package lên để tải AWS Package

Tab Nuget hiện lên, chúng ta lần lượt tải 02 Package sau đây:

  • Core
  • CloudWatchLogs
CloudWatchLogs

Sau khi tải xong, ta sẽ thấy Folder “Packages” chứa các SDK AWS như hình dưới sau:

Folder “Packages” chứa các SDK AWS

Setup Scene:

Chúng ta sẽ tạo Scene đơn giản như sau:

  • Button “Create Log Group”: Để tạo Log Name và Log Stream Group
  • Input Field: User sẽ nhập vào
  • Button “Put Log”: Nhấn vào để Put Log lên AWS CloudWatchLogs

Viết code chương trình:

Các bạn có thể tham khảo code tại: https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/csharp_cloudwatch-logs_code_examples.html

Đầu tiên, chúng ta cần khai báo các biến như sau:

khai báo các biến

“m_LogStreamName”: Tên của Log Stream mà người dùng tự định nghĩa.

“m_LogGroupName”: Tên của Log Group mà người dùng tự định nghĩa.

Giải thích đơn giản là:

  • LogStream: là một chuỗi các Log event chia sẻ cùng một nguồn. Cụ thể hơn, LogStream thường nhằm biểu thị chuỗi sự kiện đến từ phiên bản ứng dụng hoặc tài nguyên đang được giám sát. Ví dụ: LogStream có thể được liên kết với Apache Access Log trên một máy chủ cụ thể.
  • LogGroup: Là nơi để chứa LogStream. Mỗi LogStream phải thuộc vào LogGroup.

Tham khảo thêm: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogsConcepts.html

“m_AccessKeyID” và “m_SecretKey”: Dùng để connect đến AWS

Tiếp theo, trong hàm Start(), chúng ta code như sau:

client = new AmazonCloudWatchLogsClient(m_AccessKeyID, m_SecretKey, RegionEndpoint.USWest2);

Dòng này để kết nối đến AWS với 03 Parameters: awsAccessKeyId, awsSecretAccessKeyregion

Cách lấy awsAccessKeyId, awsSecretAccessKey

Sau khi đăng nhập vào AWS, chúng ta click vào tên username và chọn “Security credentials”

Security credentials

Sau đó, nhấn vào “User” phía bên trái:

User

Nhấn vào tên “User name” cần lấy accessKeyID và secretKey

 accessKeyID và secretKey

Nhấn vào Tab “Security credentials”

Nhấn vào Tab “Security credentials”

Kéo xuống phần Access keys => Nhấn vào “Create access key”.

Create access key

Lưu ý: Nếu không có button “Create access key” tức là Access keys đang bị Full. Chúng ta cần xóa bớt

Sau khi nhấn vào “Create access key” sẽ hiện ra bảng chọn mục đích tạo access key. Chúng ta có thể chọn Other như hình và sau đó nhấn “Next”

Sau khi nhấn vào “Create access key”

Sau khi nhấn “Next”, tiếp theo chúng ta điền tag vào. Có thể không điền cũng được. Sau đó nhấn vào “Create access key”

“Create access key”

Sau khi nhấn vào “Create access key” sẽ hiện bảng Retrieve access keys để lấy Access key và Secret access key như hình dưới. Chúng ta có thể Download .csv file về để lưu lại Key.

 Retrieve access keys

Nhấn “Done” để hoàn thành.

Về Region

Để get Region, đầu tiên chúng ta Search Service mà chúng ta đang cần quan tâm. Ví dụ như CloudWatch thì chúng ta gõ CloudWatch trên thanh Search.

CloudWatch

Địa chỉ CloudWatch: https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#home:

Chúng ra để ý địa chỉ trang web sẽ có “us-west-2” đầu tiên => Đây chính là Region tuy nhiên chúng ta cần lưu ý mà set Region hợp lý vì mỗi địa chỉ có thể sẽ có Region khác nhau.

Tiếp theo, chúng ta check nếu LogGroupName đã có rồi thì không tạo nữa.

var existingLogGroups = await client.DescribeLogGroupsAsync(); if (existingLogGroups.LogGroups.Any(x => x.LogGroupName == m_LogGroupName)) {       Debug.Log("LogGroupName is existed");       m_Group1.SetActive(false);       m_Group2.SetActive(true);       return; }

Tổng hợp code trong hàm Start()

Tổng hợp code trong hàm Start()

Lưu ý: Do chúng ta dùng hàm await nên tên hàm bắt buộc phải có async.

Hàm onCreateLogGroup”: Hàm tạo LogGroup và LogStream. Chúng ta gắn vào sự kiện OnClick() của Button “CreateLogGroupNameBtn”

onCreateLogGroup

Chạy chương trình để xem kết quả:

kết quả

Chúng ta thấy Log trên Unity đã Log tạo thành công LogGroup và LogStream, đồng thời Button “Create Log Group” sẽ bị ẩn, Input Field và button “Put Log” sẽ hiện lên. Hãy kiểm tra trên AWS xem LogGroupName và LogStreamName đã được tạo chưa:

Unity đã Log tạo thành công LogGroup và LogStream

Nhấn vào tên “LogGroupDemo” vừa tạo để xem “LogStreamDemo”

LogStreamDemo

Như vậy LogGroup và LogStream Name đã được tạo thành công.

Khi chạy lên lần nữa, chương trình sẽ kiểm tra nếu LogName đã tồn tại thì sẽ không cho tạo nữa (Button “Create Log Group” sẽ bị ẩn, Input Field và button “Put Log” sẽ hiện lên).

Input Field và button “Put Log”

Tiếp theo, ta sẽ viết code xử lý sự kiện Button “Put Log” như sau:

“Put Log

Chúng ta gắn vào sự kiện OnClick() của Button “Put Log”.

Bây giờ chúng ta hãy chạy chương trình lên, gõ bất kỳ vào ô InputField, ví dụ như: OneTech Asia Log Demo

InputField

Nhấn vào Button “Put Log” xem Log và kiểm tra kết quả trên AWS. Chúng ta nhấn vào tên LogStream (“LogStreamDemo”) để kiểm tra Log:

Put Log

Kết quả:

Kết quả:

Chúng ta thấy, Text chúng ta vừa nhập trên InputField đã được Put lên AWS.

KẾT LUẬN

Trên đây là những chia sẻ của mình đã tìm hiểu về cách Put Log trên AWS từ Unity như thế nào và hướng dẫn tạo một ứng dụng đơn giản với Unity. Những chia sẻ trên chỉ là cơ bản để các bạn có thể hiểu, qua đó các bạn có thể tùy biến và nâng cấp nhiều hơn để có thể hiểu thêm.

Rất hy vọng bài viết này sẽ hữu ích cho các bạn.

株式会社one technology japan
Đội ngũ những nhà phát triển trẻ tài năng của công ty OneTech Asia

ONETECH cung cấp dịch vụ xây dựng và vận hành hệ thống doanh nghiệp trên AWS Cloud. Nếu bạn quan tâm hoặc cần tư vấn thêm, vui lòng liên hệ với chúng tôi.

Tư vấn - Báo giá
Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
Mọi thông tin tư vấn và báo giá đều miễn phí.

    「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
    Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
    Tư vấn - Báo giá
    Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
    Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
    Mọi thông tin tư vấn và báo giá đều miễn phí.

      「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
      Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
      liên hệ