ทักทายและเกริ่นนำ
สวัสดีครับผู้อ่านทุกท่าน ช่วงนี้อากาศร้อน ดูแลสุขภาพกันด้วยนะครับ ดื่มน้ำเยอะ ๆ จะได้ไม่เป็นลมครับ เราควรจะต้องหมั่นตรวจเช็คและติดตามสุขภาพของเรากันเรื่อย ๆ นะครับ ซึ่งการที่ผมเกริ่นนำมาแบบนี้ก็เพราะว่าการใช้ AWS Cloud Platform นั้น ไม่ว่าจะเป็นบริการไหนก็ตาม เราก็ควรจะต้องมีการติดตามและประเมินผลของการทำงานของบริการต่าง ๆ รวมไปถึงติดตามข้อมูลที่เกิดขึ้นระหว่างการทำนาย หรือติดตามการแจ้งเตือนรวมไปถึงข้อผิดพลาดต่าง ๆ ที่อาจจะเกิดขึ้นได้ครับ โดยในบทความนี้เราจะมาเจาะลึกบริการตัวหนึ่งของ AWS ที่ชื่อว่า Amazon CloudWatch ซึ่งเรียกได้ว่าเป็น service ที่ใครที่ใช้ AWS จะต้องรู้จักดี เพราะว่าบริการที่ถูกนำไปใช้ร่วมกับการทำงานกับบริการอื่น ๆ ของ AWS มากที่สุดตัวหนึ่งก็ว่าได้
ภาพที่สื่อถึงการเฝ้าหรือสอดส่องของ CloudWatch
AWS CloudWatch
CloudWatch => ก็คือการที่เราสอดส่องและติดตามระบบคลาวด์ของเรา
ข้อดีของการใช้ CloudWatch
1. ทุกอย่างครบและจบใน Platform เดียว
บริการแรกที่น่าสนใจของ CloudWatch ก็คือ บริการ Amazon CloudWatch Logs ซึ่งช่วยให้เราสามารถรวบรวมและจัดเก็บบันทึกข้อมูลจากทรัพยากรหรือ resource ของแอปพลิเคชันได้อย่างต่อเนื่อง โดยบริการในส่วนนี้จะมีด้วยกันสามอันคือ
1) การบันทึกข้อมูลที่ทำงานเสร็จแล้ว โดยจะเป็นบริการของ AWS ได้แก่ บันทึก Amazon VPC Flow และบันทึก Amazon Route 53
2) การบันทึกข้อมูลที่เผยแพร่โดยบริการของ AWS เช่น Amazon API Gateway, AWS Lambda, AWS CloudTrail และอื่นๆ อีกมากมาย
3) การบันทึกข้อมูลแบบกำหนดเอง ซึ่งไฟล์บันทึกเหล่านี้มาจากแอปลิเคชันและทรัพยากรของแอพพลิเคชั่นของเราเอง
2. รวบรวมตัววัด (Metric) บน AWS
ตัววัดหรือ Metric คือพารามิเตอร์ที่เรานำมาใช้ในการประเมินประสิทธิภาพของแอพพลิเคชั่นหรือการบริการ รวมไปถึงเป็นตัวที่จะบ่งบอกค่าที่เราต้องการ โดยเราสามารถกำหนดเงื่อนไขต่าง ๆ ได้
3. ปรับปรุงประสิทธิภาพการทำงานและการเพิ่มประสิทธิภาพทรัพยากร
เราสามารถเพิ่มประสิทธิภาพของ CloudWatch ได้ง่าย ๆ เช่น ตั้งการแจ้งเตือนและดำเนินการอัตโนมัติตามเกณฑ์ที่กำหนดไว้ล่วงหน้า หรือบนอัลกอริทึม Machine Learning ที่ตรวจจับการทำงานที่ผิดปกติของตัววัดที่เรากำหนดไว้สำหรับแอพพลิเคชั่นของเรา ถ้าตรวจพบสิ่งผิดปกติก็จะแจ้งเตือนเราทันที
4. รับข้อมูลเชิงลึกไปทำอย่างอื่นได้ต่อ
CloudWatch สามารถสำรวจ วิเคราะห์ และแสดงบันทึกข้อมูลของเราออกมาเป็นภาพ เช่น กราฟ หรือ ตาราง ที่สามารถเข้าใจง่าย ๆ ได้ ดังนั้นจึงทำให้เราแก้ไขปัญหาการทำงานได้อย่างง่ายดาย เช่น บริการ CloudWatch Logs Insights ซึ่งเราจ่ายเพียงแค่เฉพาะการสืบค้นที่เราใช้เท่านั้น โดยค่าบริการจะปรับไปตามขนาดของการบันทึกและความซับซ้อนของการสืบค้น
CloudWatch ทำงานอย่างไร
CloudWatch เป็นบริการที่รวบรวมการจัดการทั้งหมดของข้อมูลที่อยู่ในรูปแบบของ logs ไฟล์ โดยจะเป็นไฟล์ที่บันทึกกิจกรรมหรือเหตุการณ์ทั้งหมดที่เกิดขึ้นภายในระบบหรือบัญชีของผู้ใช้งาน โดยทั่วไปแล้วไฟล์ log นั้นจะเป็นการบันทึกที่อ้างอิงตามเวลา เช่น อาจจะบันทึกทุก ๆ วินาที ทุก ๆ นาที ทุก ๆ ชั่วโมง หรืออาจจะทุก ๆ วันก็ได้ ขึ้นอยู่กับความถี่ที่ต้องการบันทุกข้อมูล โดยเราสามารถแสดงหรือ visualize แอพพลิเคชั่นของเราพร้อม ๆ กับดูการเปลี่ยนแปลงของข้อมูลหรือพารามิเตอร์ที่เราสนใจได้ นอกจากนี้ยังมีฟีเจอร์อื่น ๆ เพิ่มเติมที่ CloudWatch สามารถทำได้ เช่น เราสามารถทำการทดลองหรือ experiment เพื่อทดสอบฟีเจอร์อะไรบางอย่าง โดยที่เราไม่ไปรบกวนระบบจริง ๆ ที่กำลังทำงานหรือรันอยู่บน Production server ตัวอย่างเช่น เราสามารถทั้งการกระทำแบบอัตโนมัติให้แจ้งเตือนเรา เปรียบเสมือนเป็นตัวสัญญาณตรวจจับควันในบ้านอะไรแบบนั้นเลยครับ นอกจากนี้ยังสามารถตั้งให้มีการบันทึกข้อมูลแล้วนำไปวิเคราะห์หรือไปทำงานร่วมกับบริการอื่น ๆ ได้อีก เช่น Machine Learning ใน SageMaker เป็นต้น
Credit: AWS
ตัวอย่างการใช้งาน CloudWatch
CloudWatch สามารถนำไปใช้งานกับบริการอื่น ๆ ได้หลากหลายรูปแบบ เช่น
- Infrastructure monitoring
- Containers
- Serverless
- Events
- Logs analytics
- Anomaly detection & alarms
- Dashboards
- Custom metrics
- Application monitoring
- Metrics analytics
โดยเราจะมาดูตัวอย่างของแบบแรกกันก็คือ Infrastructure monitoring ซึ่งตัวอย่างที่ผมจะยกให้ดูนั้นก็คือการส่งข้อมูลจาก EC2 เข้าไปวิเคราะห์ต่อใน CloudWatch นั่นเอง
การส่ง Logs จาก Amazon EC2 ไปยัง CloudWatch
โอเคครับ สำหรับ tutorial ต่อไปนี้เราจะมาดู Service ที่ชื่อว่า CloudWatch Logs agent กันนะครับ โดยที่ CloudWatch Logs agent จะช่วยให้เราสามารถส่งข้อมูลแบบ log จาก Amazon EC2 instance ไปยัง CloudWatch ได้แบบอัตโนมัติ ก่อนอื่นเรามาดูกันที่ Configuration file กันก่อนเลย โดยมีหน้าตาของไฟล์และพารามิเตอร์ที่อยู่ด้านในที่เราจะต้องทำการกำหนดค่าของแต่ละพารามิเตอร์ดังต่อไปนี้
[general]
state_file = value
logging_config_file = value
use_gzip_http_content_encoding = [true | false]
[logstream1]
log_group_name = value
log_stream_name = value
datetime_format = value
time_zone = [LOCAL|UTC]
file = value
file_fingerprint_lines = integer | integer-integer
multi_line_start_pattern = regex | {datetime_format}
initial_position = [start_of_file | end_of_file]
encoding = [ascii|utf_8|..]
buffer_duration = integer
batch_count = integer
batch_size = integer
[logstream2]
…
โดยรายละเอียดของพารามิเตอร์แต่ละตัว (Definition & Usage) สามารถศึกษาเพิ่มเติมได้จากเว็บไซต์ https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html
หลังจากที่เราสร้าง configuration file แล้ว ลำดับต่อไปคือการติดตั้ง AWS CloudWatch Logs agen ครับ โดยใช้คำสั่งต่อไปนี้
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
sudo python awslogs-agent-setup.py –region us-east-1 –http-proxy http://your/proxy –https-proxy http://your/proxy –no-proxy 169.254.169.254
หลังจากนั้นให้ไปที่ไฟล์ /var/awslogs/etc/proxy.conf แล้วทำการแก้ไขโดยให้เพิ่ม proxies เข้าไป ดังนี้
HTTP_PROXY=
HTTPS_PROXY=
NO_PROXY=
แล้วทำการ restart ตัว agent ครับ
sudo service awslogs restart
เพียงเท่านี้ก็ทำการติดตั้งเสร็จแล้ว
นอกจากนี้เรายังสามารถทำการเรียกดู API call ได้ด้วยว่ามีการทำงานอย่างไร โดยเราสามารถเรียกดู IAM policy ล่าสุดได้แบบนี้ครับ
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“logs:CreateLogGroup”,
“logs:CreateLogStream”,
“logs:PutLogEvents”,
“logs:DescribeLogStreams”
],
“Resource”: [
“arn:aws:logs:*:*:*”
]
}
]
}
ซึ่งไฟล์ log นั้นจะถูกเก็บไว้ที่ /var/log/awslogs-agent-setup.log และ /var/log/awslogs.log ตามลำดับ
นอกจากนี้ยังมี tutorial เพิ่มเติมอื่น ๆ อีกมากมายที่เกี่ยวข้องกับการใช้ Amazon CloudWatch สำหรับ service อื่น ๆ ไว้ถ้าหากผู้เขียนมีโอกาสได้เขียนบทความเกี่ยวกับ CloudWatch อีก จะนำมาแบ่งปันให้ได้อ่านและศึกษากันนะครับ หวังว่าบทความนี้จะเป็นประโยชน์กับผู้อ่านที่กำลังสนใจหรือศึกษา AWS อยู่ไม่มากก็น้อยครับ
อ่านมาจนถึงจุดนี้แล้วถ้าหากผู้อ่านมีความสนใจในบริการของ AWS โดยเฉพาะถ้าอยากจะปรึกษาเกี่ยวกับการใช้ Amazon CloudWatch สำหรับการติดตามและประเมินข้อมูลต่าง ๆ ของบริการอื่น ๆ ใน AWS Cloud Platform ก็สามารถติดต่อ Cloud HM ได้โดยตรงเลยครับ เพราะเรามีการให้บริการ Cloud Platform ครบวงจร ทั้ง Domestic Cloud และ Global Cloud เพื่อตอบสนองความต้องการรอบด้านของลูกค้าครับ
— Cloud HM