การเชื่อมต่อ RDS จาก Amazon Managed Grafana

Amazon Managed Grafana เป็นบริการเต็มรูปแบบบน Grafana แบบโอเพนซอร์สทำให้ง่ายต่อการจำลองเสมือน ข้อมูลการปฏิบัติงานตามปริมาณ โดยแสดงภาพ วิเคราะห์ และเชื่อมโยงข้อมูลการดำเนินงานในแหล่งข้อมูลต่างๆ และสืบค้นในบัญชี AWS และ Region ต่างๆ ครั้งนี้อยากจะมาแนะนำวิธีการเชื่อมต่อ RDS จาก Amazon Grafana และทดสอบการแสดงผลการดำเนินการใน RDS ผ่าน Dashboard ของ Grafana

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

เป้าหมาย

ครั้งนี้เราจะใช้ Amazon Managed Grafana ที่ตั้งค่าด้วย SAML Authentication ของ Auth0 เชื่อมต่อกับ RDS และทดสอบการแสดงผลข้อมูลใน Database ของ RDS ผ่าน Dashboard โดยขั้นตอนที่เกี่ยวกับ AWS ทั้งหมดจะดำเนินการในรีเจี้ยน Tokyo

(ณ วันที่ 23 มกราคม 2023) Amazon Managed Grafana สามารถใช้ฟังก์ชัน VPC ในรีเจี้ยน Singapore ได้แล้ว

เนื่องจากในปัจจุบันนี้ Amazon Managed Grafana ไม่สามารถใช้ฟังก์ชัน VPC ในรีเจี้ยน Singapore ได้ อย่างไรก็ตามผมคิดว่าเราจะสามารถใช้ฟังก์ชัน VPC ในรีเจี้ยน Singapore ได้ในเร็วๆนี้

ในบทความนี้อาจจะมีการย่อคำว่า Amazon Managed Grafana เป็น AMG ในหัวข้อต่อๆไป

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

※สร้างบัญชี Auth0 แล้ว

ดูวิธีการสร้างบัญชี Auth0 ได้ที่ลิงก์ด้านล่างนี้

การเตรียมหน้า AWS Management Console

Login เข้ามาที่หน้า AWS Management Console แล้วเลือกรีเจี้ยน Tokyo ที่แท็บด้านขวาบน

การสร้าง Security Groups ใน EC2

เข้าไปที่ Service EC2 แล้วเลือก Security Groups จากเมนูด้านซ้ายในหัวข้อ Network & Security แล้วสร้าง Security Groups ดังนี้

การสร้าง Security Groups สำหรับ Amazon Managed Grafana

คลิก 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 ของ Grafana)

เลื่อนลงมาด้านล่างสุด แล้วคลิก Create security group

การสร้าง RDS

ครั้งนี้จะสร้าง Amazon Aurora ใน Amazon RDS

ก่อนที่จะเริ่มทำการสร้าง Amazon Aurora ให้ตรวจสอบ Region ที่แท็บด้านขวาบนว่าเป็น Tokyo หรือไม่ ถ้าไม่ใช่ให้เปลี่ยนเป็นรีเจี้ยน Tokyo

ดูวิธีการสร้าง Amazon Aurora ได้ที่บทความด้านล่างนี้ (แนะนำให้ดู ตัวอย่างตั้งค่าการสร้าง Amazon Aurora สำหรับ Grafana ของบทความครั้งนี้ ใต้ลิงก์ด้านล่างนี้ประกอบด้วย)

ตัวอย่างตั้งค่าการสร้าง Amazon Aurora สำหรับ Grafana ของบทความครั้งนี้

เลือก Region: Tokyo

※Create RDS Aurora
Engine options
Engine type: Amazon Aurora
Edition: Amazon Aurora MySQL-Compatible Edition
Available versions: Aurora (MySQL 5.7) 2.07.1

Templates
◎ Production

Settings
DB instance identifier: tinnakorn-test-rds
Credentials Settings
Master username: admin
Master password: PassW0rd (รหัสผ่านนี้เป็นแค่ตัวอย่าง ให้ตั้งรหัสผ่านที่ต้องการ)
Confirm password: PassW0rd

Instance configuration
DB instance class
◎ Serverless
Serverless v1 ▼
Capacity range
Minimum ACUs: 1 ACU
Maximum ACUs: 1 ACU
▼ Additional scaling configuration
Autoscaling timeout and action: 00:05:00
Pause after inactivity: ✅ Scale the capacity to 0 ACUs when cluster is idle
00:30:00

Connectivity
Existing VPC security groups: tinnakorn-test-rds (เลือก security group ที่เราสร้างสำหรับ Amazon Aurora PostgreSQL)
▼ Additional configuration
Web Service Data API: ✅ Data API

การสร้าง Workspace ใน Amazon Managed Grafana

ตรวจสอบ Region ที่แท็บด้านขวาบนว่าเป็น Tokyo หรือไม่ ถ้าไม่ใช่ให้เปลี่ยนเป็นรีเจี้ยน Tokyo

ค้นหา 🔍︎ Amazon Grafana แล้วเลือก Amazon Grafana

คลิก Create workspace

แล้วทำการตั้งค่าดังนี้

Step 1 - Specify workspace details

หัวข้อ Workspace details
ป้อน Workspace name และ Workspace description ตามต้องการ เช่น tinnakorn-test-amg แล้วคลิก 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 ในรีเจี้ยน Tokyo) แล้วจะมี Mappings และ Security groups ปรากฏขึ้นมา ให้ตั้งค่าดังนี้
Mappings
ติ๊ก ✅ ap-northeast-1d, ap-northeast-1a, ap-northeast-1c และเลือก Subnet ที่มีอยู่ทั้ง 3 ช่อง
Security groups
เลือก Security group ที่สร้างไว้สำหรับ Grafana เช่น 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 ครั้งนี้ใช้เวลาประมาณ 10 นาที

เมื่อสร้าง Workspace ใน Amazon Managed Grafana เสร็จแล้ว ให้เริ่มดำเนินการตามขั้นตอนในลิงก์บทความด้านล่างนี้ ตั้งแต่หัวข้อ การตั้งค่า Workspace ของ Amazon Managed Grafana ใน SAML เป็นต้นไป (สำหรับหัวข้อที่ดำเนินการไปแล้วให้ข้ามไปได้เลย)

การเตรียม Database RDS

การเชื่อมต่อ Aurora Serverless จาก Query Editor

ดูตัวอย่างได้ที่นี่เฉพาะหัวข้อนี้: การเชื่อมต่อ Aurora Serverless จาก Query Editor

การสร้าง Database สำหรับใช้ทดสอบใน Grafana

รันคำสั่งนี้เพื่อสร้าง Database ครั้งนี้ใช้ชื่อว่า grafana

CREATE DATABASE grafana;

เลื่อนลงมาด้านล่างที่หัวข้อ Output จะเห็นว่าสามารถเพิ่ม Database ชื่อ grafana ได้แล้ว

เมื่อสร้าง Database grafana เสร็จแล้ว เราสามารถ Change database เข้าไปยัง grafana ได้โดยตรงด้วยการคลิก เนื่องจากการ Change database จะทำให้เราสามารถสร้าง Table หรือ Insert ข้อมูลได้โดยไม่ต้องรันคำสั่ง use database_name ทุกครั้ง
ให้คลิก Change database

ป้อนข้อมูลเชื่อมต่อเข้าไปยัง Database grafana โดยตรงดังนี้:
» Database instance or cluster: tinnakorn-test-rds (ในส่วนนี้จะถูกเลือกโดยอัตโนมัติ)
» Database username: admin (เราสามารถเลือก username นี้หลังจากที่มีการเข้าใช้งานไปแล้วได้)
» Database password: หากเลือก username ที่มีการเข้าใช้งานไปแล้ว รหัสผ่านจะป้อนอัตโนมัติ
» Enter the name of the database or schema: grafana (ชื่อ database ที่สร้างเมื่อสักครู่นี้)
» คลิก Connect to database

หลังจากเปลี่ยน Database เสร็จแล้ว ให้รันคำสั่งสร้าง Table ตามนี้

CREATE TABLE data1
(
  id bigint PRIMARY KEY AUTO_INCREMENT,
  time datetime NOT NULL DEFAULT now(),
  data int NOT NULL
)

เลื่อนลงมาด้านล่างที่หัวข้อ Output จะเห็นว่าสามารถสร้าง Table ที่ชื่อว่า data1 ได้แล้ว

รันคำสั่ง INSERT ข้อมูลลง Table ตามนี้

INSERT INTO data1 (data) values (1);

เลื่อนลงมาด้านล่างที่หัวข้อ Output จะเห็นว่าสามารถ Insert ข้อมูลลงใน Table data1 ได้แล้ว

รันคำสั่ง INSERT ข้อมูลลง Table ตามนี้อีกครั้ง

INSERT INTO data1 (data) values (2);

ผลลัพธ์

รันคำสั่งเรียกดูข้อมูลใน Table ตามนี้

SELECT * from data1;

เลื่อนลงมาด้านล่างที่หัวข้อ Result set 1 จะเห็นว่ามีข้อมูลของ Table data1

การเชื่อมต่อ RDS จาก Amazon Grafana

คลิกไอคอนตั้งค่า ด้านล่างซ้าย แล้วเลือกแท็บ Data sources ในหน้า Configuration แล้วคลิก Add data source

ค้นหา MySQL แล้วเลือก MySQL

ป้อนข้อมูลของ RDS เพื่อให้สามารถเชื่อมต่อจาก Grafana ได้ดังนี้:
MySQL Connection
» Host: tinnakorn-test-rds.cluster-xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com (ป้อน Endpoint ของ RDS)
» Database: grafana (ป้อน Database ที่สร้างใน Query Editor)
» User: admin (ป้อน Master username ตามที่ตั้งค่าตอนสร้าง RDS)
» Password: ป้อน Master password ตามที่ตั้งค่าตอนสร้าง RDS

เลื่อนลงมาด้านล่างสุด แล้วคลิก Save & test แล้วรอสักครู่ ถ้าแสดงข้อความ "✅ Database Connection OK" แบบนี้ถือว่าการเชื่อมต่อสำเร็จ

คลิกไอคอนตั้งค่า ด้านล่างซ้าย แล้วเลือกแท็บ Data sources ในหน้า Configuration อีกครั้ง จะเห็นว่ามี Data source ที่เราบันทึกการเชื่อมต่อไว้แล้ว

การสร้าง Dashboard ใน Grafana

คลิก + จากเมนูด้านซ้าย แล้วเลือก Add a new panel

ดูที่ด้านล่างซ้าย แล้วตั้งค่าตามนี้
» FROM: data1 (Default)
» Time column: time (Default)
» SELECT: Column: data
» แล้วคลิก Apply

เมื่อสร้างเสร็จแล้วจะแสดงหน้าจอแบบนี้ เส้นสีเขียวตรงช่วงเวลา 12:30 นี้คือข้อมูลของ ช่วงเวลาที่รันคำสั่งใน Query Editor ตอนแรก

การทดสอบ Dashboard ใน Grafana

เราจะมารันคำสั่งใน Query Editor เพื่อทดสอบการแสดงผลใน Dashboard ใน Grafana

การรันคำสั่งใน Query Editor ของ RDS

กลับมาที่หน้าคอนโซล RDS ใน Query Editor ของเรา แล้วรันคำสั่ง INSERT ข้อมูลลง Table ตามนี้

INSERT INTO data1 (data) values (3);

ผลลัพธ์

รันคำสั่ง INSERT ข้อมูลลง Table ตามนี้อีกครั้ง

INSERT INTO data1 (data) values (4);

ผลลัพธ์


รันคำสั่งเรียกดูข้อมูลใน Table ตามนี้อีกครั้ง

SELECT * from data1;

ผลลัพธ์

การตรวจสอบ Dashboard ใน Grafana

เข้าไปที่หน้าจอ Dashboard ใน Grafana แล้วตั้งค่า quick ranges และเวลาการ Reload ตามต้องการ เช่น:
» เปลี่ยน quick ranges เป็น Last 30 minutes (ช่วงเวลา 30 นาที)
» เลือกเวลาการ Reload เป็น 5s (Reload อัตโนมัติทุกๆ 5 วินาที)
ก็จะแสดงหน้าจอแบบนี้ทุกครั้งตามเวลาที่มีการรันคำสั่งใน Query Editor ของ RDS

สรุป

เมื่อทำการเชื่อมต่อ RDS จาก Amazon Managed Grafana เสร็จแล้ว ถ้ามีการดำเนินการใน Query Editor ของ RDS เราก็สามารถตรวจสอบข้อมูลโดยแสดงผลผ่าน Dashboard ของ Grafana ตามเวลาที่ดำเนินการได้อย่างสะดวกและรวดเร็ว

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

POP จากบริษัท Classmethod (Thailand) ครับ !

Link อ้างอิง