Giám sát AWS EC2 Windows instance với CloudWatch Agent

Giám sát AWS EC2 Windows instance với CloudWatch Agent

March 19, 2019 Off By harvey

1. Trước hết, chúng ta cần những gì?

  1. Quyền truy cập vào 1 tài khoản AWS (đương nhiên rồi)
  2. Quyền admin đối với service IAM (Identity and Access Management)
  3. Ít nhất 2 server EC2 Windows trở lên.

Nếu đã có đủ những thứ bên trên, chúng ta có thể tiếp tục

2. Ý tưởng

Ý tưởng của chúng ta chỉ đơn giản như sau:

  • Ta sử dụng 1 server có quyền Admin đối với CloudWatch Agent, server này có thể cập nhật và chỉnh sửa các thiết lập trong configuration file.
  • Configuration file được lưu trong parameter store. File này lưu lại các thiết lập của ta về việc giám sát các server được cài CloudWatch Agent. Sau này, nếu muốn chỉnh sửa 1 thiết lập nào đó, ta sẽ sửa ở file này.
  • Đối với các server còn lại, để giám sát chúng, ta cài CloudWatch Agent, point đến configuration file bên trên là có thể theo dõi được.

3. Tại sao chúng ta cần dùng CloudWatch Agent?

Giám sát (Monitoring) là 1 việc rất quan trọng để duy trì tính ổn định, khả dụng và hiệu năng của server. Khi bạn khởi động 1 server EC2 trên AWS, mặc định, bạn sẽ chỉ có thể nhìn thấy các đồ thị tổng quan về những thứ như là CPU ultilization, Network, Disk I/O,…

Tuy nhiên, còn một vài thứ khác cũng khá là quan trọng mà chúng ta cần phải theo dõi như là Memory ultilization (hay còn gọi là RAM), dung lượng trống trong ổ đĩa, hiệu suất hoạt động của các chương trình,… Các phương diện này chỉ có thể được theo dõi từ bên trong hệ điều hành máy khách (tức là trong windows chứ không trong hệ điều hành chủ).

Ngoài ra, không chỉ theo dõi các tài nguyên máy tính, ta cũng cần theo dõi logs để xem có vấn đề gì xảy ra trên server EC2 của chúng ta hay không (như là có quá nhiều đăng nhập lỗi, hoặc có nhiều mã error 500…). Chính vì vậy, chúng ta cần cài CloudWatch Agent ở bên trong hệ điều hành Windows để giám sát.

4. Các hệ điều hành tương thích

Chúng ta có thể sử dụng CloudWatch Agent với các hệ điều hành Windows phiên bản 64-bit như Windows Server 2016Windows Server 2012, và Windows Server 2008.

5. Unified CloudWatch Agent hoạt động trên Windows như thế nào?

Sau khi bạn cài đặt xong CloudWatch Agent lên Windows, nó sẽ tạo ra 1 Windows Service. Windows Service này sẽ đọc configuration file và dựa theo đó, nó gửi các thống kê hoặc logs đến CloudWatch.

6. Bắt tay vào làm nào…

1. Setup IAM roles

Trước hết, chúng ta cần có ít nhất 2 con EC2 đang hoạt động đã nhé. 1 con sẽ đóng vai trò admin, cập nhật configuration file, con còn lại sẽ đóng vai trò là server được giám sát.

And here it is :))

 

Tiếp theo, chúng ta cần tạo 2 IAM roles tương ứng với 2 server này. Chúng ta vào services IAM, chọn mục Roles, sau đó chọn Create Role. Ở đây, ta chọn type là AWS service, và chọn service là EC2 rồi nhấn Next: Permission.

Trong phần tiếp theo này, để cho nhanh, ta search và chọn các mục sau:

  • AmazonEC2RoleforSSM
  • CloudWatchAgentAdminPolicy

Sau khi chọn xong, ta tiếp tục Next: Review. Ở đây, ta hãy đặt cho Role này 1 cái tên thật tường minh, mình sẽ để là CWAdmin nhé.

Ta làm tương tự với role thứ 2, chọn 2 Permission là:

  • AmazonEC2RoleforSSM
  • CloudWatchAgentServerPolicy

Sau đó, ta để tên role này cũng thật tường minh nhé. Mình sẽ để là CWServer.

Nếu để ý kỹ, ta có thể thấy sự khác biệt nhỏ giữa 2 permission CloudWatchAgentAdminPolicy và CloudWatchAgentServerPolicy, role cho Admin thì có quyền được PutParameter (tức là quyền cập nhật configuration file), còn role cho server thì không, mà chỉ có quyền đọc:

CloudWatchAgentAdminPolicy

 

Vậy giờ, ta đã có 2 role CWAdmin và CWServer sẵn sàng rồi. Tiếp theo, ta sẽ gán 2 role này cho 2 server ban đầu.

Đơn giản thôi, vào mục Services, chọn EC2, chọn Instances ở cột bên trái, sau đó, với mỗi instance EC2, ta gán role tương ứng cho chúng bằng cách click chuột trái vào chúng, chọn Instance Settings -> Attach/Replace IAM Role. Tiếp tục chọn role tương ứng như sau:

  • Server Administrator ta gán role CWAdmin
  • Server còn lại ta gán role CWServer

Vậy là đã xong xuôi với các Role và Permission rồi, ta đến phần tiếp theo.

2. Download và cài đặt agent (sử dụng AWS Systems manager)

Để download và cài đặt CloudWatch Agent cho 2 server, chúng ta trước hết truy cập vào AWS Systems Manager (Services -> AWS Systems Manager). Ở cột bên trái, chúng ta có thể nhìn thấy 2 server đã được liệt kê trong mục Managed Instances (nếu bạn không thấy 2 server này, hãy kiểm tra lại và chắc chắn rằng các server đều đã được gán role và trong đó có permission AmazonEC2RoleforSSM).

Tiếp theo, ta chọn Run Command ở cột bên trái, tiếp tục chọn nút Run Command màu cam. Một giao diện mới xuất hiện, và ta chọn lần lượt như sau:

  • AWS-ConfigureAWSPackage ở mục Command document
  • Trong mục Command parameters, chọn Action là Install, sau đó gõ vào Name là AmazonCloudWatchAgent (chú ý viết đúng chữ in hoa), rồi chọn Version là latest.
  • Trong mục Targets, ta chọn cả 2 Server ban đầu được liệt kê trong danh sách.

  • Trong mục Output options, bỏ chọn Enable writing to an S3 bucket

Sau khi thiết lập xong như bên trên, click Run. Đợi một lúc là chúng ta sẽ thấy trạng thái success.

Nếu hoàn thành được như trên là chúng ta đã xong được 1 nửa quá trình rồi :)) Hãy tiếp tục với phần tiếp theo.

3. Tạo configuration file và lưu trong AWS Systems Manager parameter store

Ở bước này, ta sẽ truy cập vào Server admin của chúng ta thông qua kết nối RDP (Remote Desktop Protocol). Để có kết nối này, trong giao diện Instance ở Services EC2. Ta chọn Server cần kết nối rồi chọn nút Connect ở bên trên và download file .rdp về máy. Chạy file là ta sẽ có kết nối.

Sau khi kết nối thành công được vào server Admin, ta truy cập vào theo đường dẫn sau: C:/Program Files/Amazon/AmazonCloudWatchAgent. Tiếp tục mở Command Prompt ở trong thư mục này (có thể mở bằng cách click vào thanh đường dẫn ở bên trên, xóa hết đi và gõ “cmd”).

Ở cửa sổ cmd mới hiện ra, để chạy wizard cập nhật configuration file, ta gõ “amazon-cloudwatch-agent-config-wizard.exe”. Tiếp đây, CloudWatch Agent sẽ hỏi chúng ta 1 vài câu hỏi để tạo configuration file. Bạn có thể thiết lập tùy ý bạn. Sau đây là cách mà mình thiết lập:

Những mục nào mình không đề cập tới thì ta sẽ chọn theo default choice mặc định mà wizard đưa ra, còn những câu hỏi chúng ta có thay đổi sẽ là:

  • Do you want to turn on StatsD deamon? -> 2. no
  • Which default metrics config do you want? -> 2. Standard

Với thiết lập này, bạn có thể tham khảo thêm bảng sau:

  • Ở phần thiết lập “Do you want to monitor any customized log files?”, ta để mặc định là yes và nhập Log file path như sau: C:\inetpub\logs\LogFiles\W3SVC1\*.log . Default choice ta để là IISLogs nhé
  • Do you want to specify any additional log files to monitor? -> 2. no
  • Log group name: WindowsSystemEvents
  • Do you want to specify any additional Windows event log to monitor? -> 2. no

Sau khi thiết lập như bên trên, configuration file của chúng ta sẽ được cập nhật trong parameter store (AWS Systems Manager -> Parameter Store) và trông như này:

Vậy, nếu bạn đã có được 1 configuration file trông như trên, ta có thể sẵn sàng cho phần cuối cùng rồi.

4. Chạy agent trong khi trỏ nó đến configuration file, sử dụng AWS Systems manager

Để giám sát 1 server EC2, đầu tiên ta vẫn vào AWS Systems Manager (Services -> AWS Systems Manager). Ở cột bên trái, ta chọn Run Command, rồi sau đó bấm vào nút Run Command màu cam. Tiếp theo, bạn thực hiện lần lượt các thiết lập như sau:

  • Ở mục Command document, để cho nhanh chóng, chúng ta search và chọn Document name prefix -> Equal -> AmazonCloudWatch -> Chọn AmazonCloudWatch-ManageAgent
  • Ở mục Command parameters, chọn Action là configureMode là ec2Optional Configuration Sourcelà ssmOptional Configuration Location là AmazonCloudWatch-windows và Optional Restart là yes.
  • Ở mục Targets, ta chỉ chọn server ta cần giám sát (không cần chọn server Admin)
  • Ở mục Output options, bỏ chọn Enable writing to an S3 bucket.

Sau khi thiết lập đầy đủ như trên rồi, ta ấn nút Run. Đợi một lát là Tiến trình của chúng ta sẽ success.

Đến đây là xong rồi, giờ chúng ta có thể vào CloudWatch và theo dõi các metrics và logs. Chúc các bạn thành công! :))