[Update] การเชื่อมต่อ RDS จาก Amazon Managed Grafana
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
มาพบกันอีกครั้งสำหรับการใช้งาน Amazon Managed Grafana (AMG) ครับ
ปัจจุบันนี้เราสามารถใช้งาน AMG ในรีเจี้ยน Singapore ได้แล้ว
ครั้งนี้จึงอยากจะมาอัปเดตการใช้งาน AMG ร่วมกับ RDS ในบทความนี้ครับ
เป้าหมาย
ครั้งนี้เราจะใช้ Amazon Managed Grafana ที่ตั้งค่าด้วย SAML Authentication ของ Auth0 เชื่อมต่อกับ RDS และทดสอบการแสดงผลข้อมูลใน Database ของ RDS ผ่าน Dashboard โดยขั้นตอนที่เกี่ยวกับ AWS ทั้งหมดจะดำเนินการในรีเจี้ยน Singapore
*การอธิบายในบทความนี้จะย่อคำว่า Amazon Managed Grafana เป็น AMG
ครับ
สิ่งที่ต้องมี
※สร้างบัญชี Auth0
ดูวิธีการสร้างบัญชี Auth0 ได้ที่ลิงก์ด้านล่างนี้
การเตรียมหน้า AWS Management Console
Login เข้ามาที่หน้า AWS Management Console แล้วเลือกรีเจี้ยน Singapore
ที่แท็บด้านขวาบน
การสร้าง Security Groups ใน EC2
เข้าไปที่ Service EC2
แล้วเลือก Security Groups
จากเมนูด้านซ้ายในหัวข้อ "Network & Security" แล้วสร้าง Security Groups ดังนี้
การสร้าง Security Groups สำหรับ AMG
คลิก Create security group
แล้วป้อน Security group name และ Description ตามต้องการ เช่น tinnakorn-test-amg
สำหรับ Inbound Rule และ Outbound Rule จะไม่เพิ่มอะไรเข้าไป
ให้เลื่อนลงมาด้านล่างสุด แล้วคลิก Create security group
การสร้าง Security Groups สำหรับ RDS
คลิก Create security group
แล้วป้อน Security group name และ Description ตามต้องการ เช่น tinnakorn-test-rds
แล้วตั้งค่าที่หัวข้อ Inbound rules ดังนี้
คลิก Add rule
แล้วเลือก Type: MYSQL/Aurora
| Source: tinnakorn-test-amg
(Security Group ของ AMG)
เลื่อนลงมาด้านล่างสุด แล้วคลิก Create security group
การสร้าง RDS
ครั้งนี้จะสร้าง Database MySQL ใน Amazon RDS
ก่อนที่จะเริ่มทำการสร้าง MySQL ให้ตรวจสอบ Region ที่แท็บด้านขวาบนว่าเป็น Singapore หรือไม่ ถ้าไม่ใช่ให้เปลี่ยนเป็นรีเจี้ยน Singapore
ดูวิธีการสร้าง MySQL ใน Amazon RDS ได้ที่บทความด้านล่างนี้
ตัวอย่างตั้งค่าการสร้าง RDS (MySQL) สำหรับ AMG ของบทความครั้งนี้
เลือก Region:
Singapore
※Create RDS (MySQL)
Choose a database creation method
◎ Standard create
Engine options
Engine type:MySQL
Edition:MySQL Community
Engine Version:MySQL 8.0.34
Templates
◎ Production
Availability and durability
Deployment options:Single DB instance
Settings
DB instance identifier:tinnakorn-test-rds
▼ Credentials Settings
Master username:admin
Master password:PassW0rd
(รหัสผ่านนี้เป็นแค่ตัวอย่าง ให้ป้อนรหัสผ่านที่ต้องการ)
Confirm master password:PassW0rd
Instance configuration
DB instance class:
◎ Burstable classes (includes t classes)
db.t3.micro
Storage
Storage type:General Purpose SSD (gp2)
Allocated storage:20
▼ Storage autoscaling
✅ Enable storage autoscaling
Connectivity
Existing VPC security groups:✅ tinnakorn-test-rds
(เลือก Security Group ที่สร้างสำหรับ RDS)
การสร้าง Workspace ใน AMG
ตรวจสอบ Region ที่แท็บด้านขวาบนว่าเป็น Singapore หรือไม่ ถ้าไม่ใช่ให้เปลี่ยนเป็นรีเจี้ยน Singapore
ค้นหา 🔍︎ Amazon Grafana
แล้วเลือก Amazon Grafana
คลิก Create workspace
หรือเลือก All workspaces
จากเมนูด้านซ้ายและคลิก Create workspace
ก็ได้ครับ
แล้วจะเข้าไปยังหน้าจอตั้งค่าและทำการตั้งค่าในขั้นตอนถัดไปครับ
Step 1: Specify workspace details
หัวข้อ Workspace details
・ป้อน Workspace name และ Workspace description ตามต้องการ เช่น tinnakorn-test-amg
・สำหรับ Grafana version เลือกได้ตามต้องการ แต่ครั้งนี้จะใช้เป็นค่าเริ่มต้นคือ 9.4
เนื่องจากเป็นเวอร์ชันล่าสุด (อาจมีการอัปเดต Version ในอนาคต)
・จากนั้นคลิก Next
Step 2: Configure settings
หัวข้อ Authentication access
Choose at least one authentication method: ✅ Security Assertion Markup Language (SAML)
หัวข้อ Permission type
⦿ Service managed
หัวข้อ Outbound VPC connection
เลือก VPC ที่ต้องการใช้งาน (ครั้งนี้จะเลือก VPC Default ในรีเจี้ยน Singapore)
แล้วจะมี Mappings และ Security groups ปรากฏขึ้นมาให้ตั้งค่าด้านล่างดังนี้
Mappings
ติ๊ก ✅ ap-southeast-1a
, ✅ ap-southeast-1b
, ✅ ap-southeast-1c
และเลือก Subnet เป็น default
ทั้ง 3 ช่อง
Security groups
เลือก Security Groups สำหรับ AMG เช่น tinnakorn-test-amg
จากนั้นเลื่อนลงมาด้านล่างสุด แล้วคลิก Next
Step 3: Service managed permission settings
ขั้นตอนนี้จะไม่ทำการตั้งค่าใดๆ เพราะเราสามารถตั้งค่าได้ภายหลัง ให้เลื่อนลงมาด้านล่างสุด แล้วคลิก Next
Step 4: Review and create
ตรวจสอบข้อมูลที่ตั้งค่าตั้งแต่ Step 1 - Step 3 แล้วคลิก Create workspace
แล้วรอการเปิดใช้งานของ Workspace สักครู่จนกว่า Status เป็น ✅ Active
ซึ่งครั้งนี้ใช้เวลาประมาณ 6 นาที (โดยปกติแล้วควรได้รับการเปิดใช้งานเสร็จภายใน 5 - 10 นาที)
เมื่อสร้าง Workspace ใน AMG เสร็จแล้ว ให้เริ่มทำขั้นตอนตามหัวข้อในลิงก์บทความด้านล่างนี้เป็นต้นไป (หัวข้อที่ทำแล้วข้ามไปได้เลยครับ)
เริ่มทำตั้งแต่หัวข้อนี้เป็นต้นไป: การตั้งค่า Workspace ของ Amazon Managed Grafana ใน SAML
การเตรียม Database RDS
เชื่อมต่อ RDS (MySQL) จาก EC2 Instance
ให้สร้าง EC2 Instance เพื่อใช้เชื่อมต่อและจัดการ RDS (MySQL) เนื่องจากเราไม่สามารถจัดการ RDS (MySQL) ได้โดยตรง
ดูวิธีการสร้าง EC2 Instance และเชื่อมต่อจาก EC2 ไปยัง RDS ได้โดยอ่านข้อควรระวังและทำตามลิงก์ด้านล่างนี้ได้เลยครับ
*ข้อควรระวัง:
・หัวข้อที่ทำแล้วข้ามไปได้เลย
・เมื่อเชื่อมต่อจาก EC2 ไปยัง RDS ได้แล้ว ยังไม่ต้องสร้าง Database เพราะจะสร้างในภายหลัง
・หากรันคำสั่งเชื่อมต่อไปยัง RDS แล้วไม่สำเร็จ ให้ตรวจสอบที่การตั้งค่า Inbound rule ใน Security Group ของ RDS
สร้าง Database สำหรับใช้ทดสอบใน AMG
เมื่อเชื่อมต่อ EC2 ไปยัง RDS ได้แล้ว จะทำการสร้าง Database และรันคำสั่งต่างๆ ใน Terminal ของ EC2 Linux 2023 ในขั้นตอนนี้ครับ
รันคำสั่งสร้าง Database โดยเปลี่ยน "database_name" เป็นชื่อ Database ที่ต้องการ (ตัวอย่างนี้ใช้ชื่อ grafana
)
CREATE DATABASE database_name;
แล้วรันคำสั่งนี้เพื่อแสดง Database ก็จะเห็นว่ามี Database ที่ชื่อ grafana
เพิ่มขึ้นมาแล้ว
show databases;
Output (example)
root@ip-xx-xx-xx-xx:~
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| grafana |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.001 sec)
MySQL [(none)]>
แล้วเปลี่ยนฐานข้อมูลไปยัง Database ที่เราสร้างขึ้นเมื่อสักครู่ เช่น grafana
(เปลี่ยน "database_name" เป็นชื่อ DB ที่สร้างจากขั้นตอนที่แล้ว)
use database_name;
Output (example)
root@ip-xx-xx-xx-xx:~
MySQL [(none)]> use grafana;
Database changed
MySQL [grafana]>
รันคำสั่งสร้าง Table โดยเปลี่ยน "table_name" เป็นชื่อ Table ที่ต้องการ (ตัวอย่างนี้ใช้ชื่อ data1
)
CREATE TABLE table_name ( id bigint PRIMARY KEY AUTO_INCREMENT, time datetime NOT NULL DEFAULT now(), data int NOT NULL );
Output (example)
root@ip-xx-xx-xx-xx:~
MySQL [grafana]> CREATE TABLE data1
-> (
-> id bigint PRIMARY KEY AUTO_INCREMENT,
-> time datetime NOT NULL DEFAULT now(),
-> data int NOT NULL
-> );
Query OK, 0 rows affected (0.076 sec)
MySQL [grafana]>
รันคำสั่ง INSERT ข้อมูลลง Table โดยเปลี่ยน "table_name" เป็นชื่อ Table ที่สร้างจากขั้นตอนที่แล้ว (ตัวอย่างนี้จะเพิ่มข้อมูลลงใน Table ที่ชื่อ data1
)
INSERT INTO table_name (data) values (1); INSERT INTO table_name (data) values (2);
Output (example)
root@ip-xx-xx-xx-xx:~
MySQL [grafana]> INSERT INTO data1 (data) values (1);
Query OK, 1 row affected (0.005 sec)
MySQL [grafana]> INSERT INTO data1 (data) values (2);
Query OK, 1 row affected (0.006 sec)
MySQL [grafana]>
รันคำสั่งแสดงข้อมูลใน Table โดยเปลี่ยน "table_name" เป็นชื่อ Table ที่สร้างเมื่อสักครู่นี้ (ตัวอย่างนี้จะแสดงข้อมูลของ Table ที่ชื่อ data1
)
SELECT * from table_name;
Output (example)
root@ip-xx-xx-xx-xx:~
MySQL [grafana]> SELECT * from data1;
+----+---------------------+------+
| id | time | data |
+----+---------------------+------+
| 7 | 2023-09-22 05:11:20 | 1 |
| 8 | 2023-09-22 05:11:22 | 2 |
+----+---------------------+------+
2 rows in set (0.001 sec)
MySQL [grafana]>
การเชื่อมต่อ RDS จาก AMG
*จากนี้ไปเป็นการใช้งาน AMG ฝั่งที่ไม่ใช่ AWS Management Console แต่เป็นการใช้งาน AMG ฝั่งที่เข้าสู่ระบบด้วย SAML !
กลับมาที่หน้าจอ AMG ที่เข้าสู่ระบบด้วย SAML แล้วทำการเชื่อมต่อ RDS จาก AMG ดังนี้
คลิก ☰ (Toggle menu)
ด้านซ้ายบน แล้วเลือก ⚙ Administration
ด้านล่าง
แล้วเลือก Data sources
จากเมนูด้านซ้าย แล้วคลิก Add data source
ป้อนข้อมูลของ RDS เพื่อให้สามารถเชื่อมต่อจาก AMG ได้ดังนี้
หัวข้อ MySQL Connection
・Host: tinnakorn-test-rds.xxxxxxxxxx.ap-southeast-1.rds.amazonaws.com
(ป้อน Endpoint ของ RDS)
・Database: grafana
(ป้อน Database ที่สร้างใน Query Editor)
・User: admin
(ป้อน Master username ตามที่ตั้งค่าตอนสร้าง RDS)
・Password: PassW0rd
(ป้อน Master password ตามที่ตั้งค่าตอนสร้าง RDS)
เลื่อนลงมาด้านล่างสุด แล้วคลิก Save & test
แล้วรอสักครู่ ถ้าแสดงข้อความ "✅ Database Connection OK" แบบนี้ถือว่าการเชื่อมต่อสำเร็จ
เลือก Data sources
จากเมนูด้านซ้ายอีกครั้ง จะเห็นว่ามี Data source ที่เราบันทึกการเชื่อมต่อไว้แล้ว
การสร้าง Dashboard ใน AMG
คลิก ☰ (Toggle menu)
ด้านซ้ายบน แล้วเลือก Dashboards
คลิก New
และเลือก New Dashboard
ด้านขวา
ดูที่ด้านล่างซ้าย แล้วตั้งค่าตามนี้
・Dataset: grafana
・Table: data1
・Column: *
・คลิก ▶ Run query
・คลิก Apply
ด้านบนขวาสุด
เมื่อสร้างเสร็จแล้วจะแสดงหน้าจอแบบนี้ เส้นสีเหลืองตรงช่วงเวลา 12:30 นี้คือข้อมูลของช่วงเวลาที่รันคำสั่งใน Terminal ของ EC2 Linux ตอนแรก
การทดสอบ Dashboard ใน AMG
รันคำสั่ง SQL ใน Terminal ของ EC2 Linux 2023 เพื่อทดสอบการแสดงผล Dashboard บน AMG
รันคำสั่ง SQL บน Terminal ของ EC2 Linux 2023
กลับมาที่หน้าจอ Terminal ของ EC2 Linux แล้วรันคำสั่ง INSERT ข้อมูลลง Table อีกครั้ง
INSERT INTO table_name (data) values (3); INSERT INTO table_name (data) values (4);
Output (example)
root@ip-xx-xx-xx-xx:~
MySQL [grafana]> INSERT INTO data1 (data) values (3);
Query OK, 1 row affected (0.005 sec)
MySQL [grafana]> INSERT INTO data1 (data) values (4);
Query OK, 1 row affected (0.005 sec)
MySQL [grafana]>
การตรวจสอบ Dashboard ใน AMG
เข้าไปที่หน้าจอ Dashboard ใน Grafana แล้วตั้งค่า "Quick ranges" และ "Set auto refresh interval" ตามต้องการ เช่น
・เปลี่ยน Quick ranges เป็น Last 30 minutes
(ช่วงเวลา 30 นาที)
・เลือก Set auto refresh interval เป็น 5s
(Refresh อัตโนมัติทุกๆ 5 วินาที)
แล้วจะแสดงหน้าจอแบบนี้ทุกครั้งตามเวลาที่มีการรันคำสั่งใน Terminal บน EC2 Linux
สรุป
เมื่อทำการเชื่อมต่อ RDS จาก AMG เสร็จแล้ว ถ้ามีการรันคำสั่งใน Terminal ของ EC2 Linux เราก็สามารถตรวจสอบข้อมูลโดยแสดงผลผ่าน Dashboard ของ AMG ตามเวลาที่รันคำสั่งได้อย่างสะดวกและรวดเร็วครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !