การเพิ่ม Monitoring ของ EC2 Instance ไปยัง CloudWatch Dashboard

การเพิ่ม Monitoring ของ EC2 Instance ไปยัง CloudWatch Dashboard จะทำให้เราสามารถตรวจสอบการทำงานของระบบ EC2 Instance ของเราได้ง่ายขึ้น เพราะเราสามารถเลือก Monitoring ตัวที่ต้องการติดตามเป็นพิเศษได้ ในบทความครั้งนี้จะมาแนะนำวิธีการทำเหล่านี้โดยการปฏิบัติจริงพร้อมมีคำอธิบายขั้นตอนไว้ให้ด้วยครับ

ครั้งนี้จะมาแนะนำเกี่ยวกับการเพิ่ม Monitoring ของ EC2 Instance ไปยัง CloudWatch Dashboard

สิ่งที่ต้องมี

ให้สร้าง EC2 Instnace โดยมีการใช้งาน SSM เชื่อมต่อกับ EC2 Instance

ดูตัวอย่างได้ที่บทความด้านล่างนี้

Service Name
IAM Role ec2-ssm-managed-instance-core
EC2 Instance (Amazon Linux 2023 AMI) tinnakorn-test

การเตรียม Dashboard ใน CloudWatch

ไปที่ช่องค้นหา พิมพ์ชื่อบริการ CloudWatch แล้วเลือก CloudWatch

คลิก Dashboards จากเมนูด้านซ้าย

คลิก Create dashboard ปุ่มไหนก็ได้

ป้อนชื่อลงใน "Dashboard name" ตามต้องการ เช่น tinnakorn-test แล้วคลิก Create dashboard

"Add widget" นี้เป็นประเภท Widget ต่างๆที่เราสามารถเพิ่มไปยัง Dashboard ได้
แต่ขั้นตอนนี้เป็นการเตรียม Dashboard จึงยังไม่เพิ่ม Widget ใดๆ ก็ให้คลิก หรือ Cancel ก็ได้

เมื่อสร้าง Dashboard เสร็จแล้ว จะแสดงหน้าจอแบบนี้

เราสามารถเพิ่มกราฟจาก Add a first widget ได้
แต่ครั้งนี้ผมจะใช้วิธีที่เข้าใจง่าย โดยให้ดูวิธีการในขั้นตอนถัดไปครับ

การเพิ่ม Monitoring ของ EC2 Instance ไปยัง CloudWatch Dashboard

เข้าไปที่หน้าจอ EC2 Instance ของเรา แล้วเลื่อนลงมาด้านล่าง

แล้วเลือกแท็บ Monitoring ก็จะเห็น Monitoring ต่างๆ ของ EC2 Instance แสดงอยู่ที่นี่
Monitoring ของ EC2 Instance ที่จะเพิ่มไปยัง CloudWatch Dashboard มีดังนี้

  • CPU utilization (%)
  • Network in (bytes)
  • Network out (bytes)

ก่อนอื่นเราจะทำการเพิ่ม Monitoring ของ CPU utilization (%) ก่อน
ให้คลิกที่ CPU utilization (%) แล้วเลือก View in metrics ก็จะย้ายไปหน้าจอ Metrics ใน CloudWatch โดยอัตโนมัติ

คลิก Actions แล้วเลือก Add to dashboard - Improved

ในหน้า Add to dashboard ให้ดูที่ "Select a dashboard" แล้วเลือก Dashboard ที่เราสร้างก่อนหน้านี้ เช่น tinnakorn-test แล้วคลิก Add to dashboard

แล้วจะแสดง Widget ที่เป็น Monitoring ของ EC2 Instance แบบนี้ จากนั้นให้คลิก Save (แนะนำให้ Save ทุกครั้งที่มีการเพิ่มหรือแก้ไข)

ต่อไปเราจะเพิ่ม Monitoring ของ Network in (bytes) และ Network out (bytes) โดยทำวิธีเดียวกับที่เพิ่ม "CPU utilization (%)" เมื่อสักครู่นี้ครับ

เมื่อเพิ่มเสร็จแล้ว Save ให้เรียบร้อย ก็จะแสดงหน้าจอแบบนี้ครับ

การปรับแต่ง Widget actions

เราสามารถปรับแต่ง Widget actions ได้ตามต้องการง่ายๆ โดยใช้เม้าส์ลากเพื่อย้ายตำแหน่งหรือจะขยาย Widget ตามขนาดที่เราต้องการก็ได้ และถ้าเราปรับแต่งเสร็จเรียบร้อยแล้ว แนะนำให้ Save ทุกครั้งที่มีการปรับแต่ง เพิ่มหรือแก้ไขครับ

ทดสอบการเพิ่มและหยุดการเพิ่มโหลด

เมื่อเราเตรียม EC2 Instnace โดยมีการใช้งาน SSM ที่สามารถเชื่อมต่อกับ EC2 Instance และเพิ่ม Monitoring ไปยัง CloudWatch Dashboard เรียบร้อยแล้ว เราจะมาทดสอบการเพิ่มและหยุดโหลด โดยสังเกตกราฟใน CloudWatch Dashboard ไปด้วยครับ

การเพิ่มโหลด

เข้ามาที่หน้าจอ EC2 Instance ของเรา แล้วคลิก Connect

เลือกแท็บ Session Manager แล้วคลิก Connect

เมื่อเข้ามาแล้วจะแสดงหน้าจอแบบนี้

รันคำสั่งนี้เพื่อเข้าใช้งานสิทธิ์ root

sudo su -

Output (example) ถ้าแสดงหน้าจอแบบนี้ถือว่าเราสามารถใช้งานสิทธิ์ root ได้แล้ว

Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx

sh-5.2$ sudo su -
[root@ip-xx-xx-xx-xx ~]#


รันคำสั่งนี้เพื่อเพิ่มโหลดให้กับระบบ แล้วรอให้โหลดเพิ่มขึ้นเรื่อยๆ ประมาณ 5 นาที

yes > /dev/null &


ระหว่างรอให้รันคำสั่ง w เพื่อดูโหลดของระบบประมาณ 2-3 ครั้ง

w

Output (example) จะเห็นว่าโหลดจะเพิ่มขึ้นเรื่อยๆ โดยสังเกตุที่ load average: 0.08 → 0.28 → 0.81

Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx

[root@ip-xx-xx-xx-xx ~]# w
 10:55:10 up  5:56,  0 users,  load average: 0.08, 0.02, 0.01
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
 10:55:28 up  5:56,  0 users,  load average: 0.28, 0.07, 0.02
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
 10:56:47 up  5:58,  0 users,  load average: 0.81, 0.29, 0.11
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#


เมื่อผ่านไป 5 นาทีแล้วให้รันคำสั่ง w อีกครั้ง

w

Output (example) จะเห็นว่าโหลดเพิ่มขึ้นสูงมาก โดยสังเกตุที่ load average: 1.00

Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx

[root@ip-xx-xx-xx-xx ~]# w
 11:03:11 up  6:04,  0 users,  load average: 1.00, 0.81, 0.42
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#


แล้วกลับไปที่หน้าจอ Dashboard ใน CloudWatch ของเรา แล้วดูที่กราฟ "CPU utilization (%)" จะเห็นได้ชัดเจนว่าโหลดกำลังเพิ่มขึ้นเรื่อยๆ อย่างต่อเนื่องครับ

หยุดการเพิ่มโหลด

รันคำสั่ง ps เพื่อตรวจสอบ Process ที่มีการทำงานอยู่ในระบบ Linux

ps

Output (example) เราจะทำการลบ PID: 11965 ซึ่งเป็นตัว CMD: yes ที่แสดงอยู่ด้านล่างนี้

Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx

[root@ip-xx-xx-xx-xx ~]# ps
    PID TTY          TIME CMD
  11621 pts/0    00:00:00 sudo
  11638 pts/0    00:00:00 su
  11639 pts/0    00:00:00 bash
  11965 pts/0    00:13:45 yes
  12382 pts/0    00:00:00 ps
[root@ip-xx-xx-xx-xx ~]#


รันคำสั่ง [kill + ป้อนหมายเลข PID: 11965] ของแถวที่ 6 ที่แสดงอยู่ด้านบน ตามตัวอย่างด้านล่างนี้ (คำสั่ง kill เป็นคำสั่งยกเลิกการทำงาน Process ที่มีการทำงานอยู่ในระบบ Linux)

kill 11965


แล้วรันคำสั่ง ps เพื่อตรวจสอบ Process อีกครั้ง

ps

Output (example) จะเห็นว่า PID หายไปแล้ว และตัว CMD: yes มีสถานะเป็น Terminated เรียบร้อยแล้ว จากนั้นรอให้โหลดลดลงประมาณ 5 นาที

root@ip-xx-xx-xx-xx:~

[root@ip-xx-xx-xx-xx ~]# ps
    PID TTY          TIME CMD
  11621 pts/0    00:00:00 sudo
  11638 pts/0    00:00:00 su
  11639 pts/0    00:00:00 bash
  12446 pts/0    00:00:00 ps
[1]+  Terminated              yes > /dev/null
[root@ip-xx-xx-xx-xx ~]#


ระหว่างรอให้รันคำสั่ง w อีกประมาณ 2-3 ครั้ง

w

Output (example) จะเห็นว่าโหลดจะลดลงเรื่อยๆ โดยสังเกตุที่ load average: 0.26 → 0.20 → 0.09

root@ip-xx-xx-xx-xx:~

[root@ip-xx-xx-xx-xx ~]# w
 11:12:03 up  6:13,  0 users,  load average: 0.26, 0.74, 0.60
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
 11:12:18 up  6:13,  0 users,  load average: 0.20, 0.70, 0.59
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
 11:13:04 up  6:14,  0 users,  load average: 0.09, 0.60, 0.56
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#


เมื่อผ่านไป 5 นาทีแล้วให้รันคำสั่ง w อีกครั้ง

w

Output (example) จะเห็นว่าโหลดลดลงมาเป็นสถานะปกติแล้ว โดยสังเกตุที่ load average: 0.01

root@ip-xx-xx-xx-xx:~

[root@ip-xx-xx-xx-xx ~]# w
 11:22:14 up  6:23,  0 users,  load average: 0.01, 0.11, 0.30
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#


แล้วกลับไปที่หน้าจอ Dashboard ใน CloudWatch ของเรา แล้วดูที่กราฟ "CPU utilization (%)" จะเห็นได้ชัดเจนว่าโหลดลดลงมาเป็นสถานะปกติแล้วครับ

แถมอีกนิด

สำหรับผู้ใช้งานที่ต้องการตั้งค่ารายละเอียดต่างๆ เกี่ยวกับกราฟเพิ่มเติม สามารถเข้าไปตั้งค่าได้ดังนี้

ไปที่หน้าจอ Dashboard ใน CloudWatch ของเรา
คลิก ของกราฟที่ต้องการตั้งค่า แล้วเลือก Edit

แล้วจะมี POPUP แสดงขึ้นมาให้ตั้งค่าแบบนี้ เราสามารถตั้งค่าการแสดงผลของกราฟได้ตามต้องการเลย เช่น ชื่อกราฟ, ช่วงเวลาแสดงผล, จุดเวลาที่มีการเปลี่ยนแปลง, รูปแบบการแสดงผล, และตัวเลือกอื่นๆ เป็นต้น
เมื่อตั้งค่าเสร็จแล้วอย่าลืมคลิกปุ่ม Update widget ด้วยนะครับ

การลบ AWS Resource ที่สร้างขึ้นในบทความนี้

การลบ Resource ใน Service ต่างๆ ถ้าเราไม่รู้ลำดับของการลบ Resource ก็จะทำให้เกิด Error ในขณะลบ หรือไม่สามารถลบได้นั่นเอง เช่น ถ้าทำการลบ Security Group ที่กำลังเชื่อมต่ออยู่กับ EC2 โดยที่ไม่ Terminate EC2 ก่อน ก็จะไม่สามารถลบ Security Group ได้ เป็นต้น ดังนั้นแนะนำให้ลบตามขั้นตอนที่ผมเรียงไว้ได้เลยครับ

การลบ Resource ที่ได้สร้างขึ้นใน Service ต่างๆ

ลบเรียงตามขั้นตอนดังนี้:

  • Amazon EC2
    • Instances
    • Security Groups
  • AWS Identity and Access Management (IAM)
    • Roles
  • Amazon CloudWatch
    • Dashboards

การลบ Resource ใน Amazon EC2

การ Terminate Instance, ลบ Key pairs และ Security Groups

ดูตัวอย่างการลบได้ที่ลิงก์ด้านล่างนี้

การลบ Resource ใน AWS Identity and Access Management (IAM)

การลบ Roles

เข้าไปที่ Service IAM > Roles ค้นหาและเลือกตัวที่ต้องการลบ คลิก Delete แล้วยืนยันการลบตามคำแนะนำ

การลบ Resource ใน Amazon CloudWatch

การลบ Dashboards

เข้าไปที่ Service CloudWatch > Dashboards เลือกตัวที่ต้องการลบโดยติ๊ก ชื่อ Dashboard ของเรา แล้วคลิก Delete แล้วยืนยันการลบตามคำแนะนำ

สรุป

เราสามารถตรวจสอบ Monitoring ของระบบ EC2 Instance ในตัวได้ปกติ แต่การสาธิตของทั้งหมดนี้เป็นการแนะนำการเพิ่ม Monitoring ไปยัง CloudWatch Dashboard เพื่อให้การใช้งาน Monitoring มีความสะดวกมากขึ้น เพราะเราสามารถเลือก Monitoring ตัวที่เราต้องการได้ครับ

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

บทความที่เกี่ยวข้อง