การรวบรวม Log จาก EC2 Instance โดยใช้ CloudWatch Agent บน Amazon Linux 2023
ก่อนที่เราจะเริ่มต้นทำอะไรให้เราเลือก Region ที่อยู่ใกล้ประเทศเรามากที่สุดซึ่งในตัวอย่างของผมจะเป็น Singapore Region ซึ่งอยู่ใกล้กับประเทศไทยเรามากที่สุด
สร้าง IAM
เราจะเริ่มจากการสร้าง Role เพื่อมอบสิทธิ์การใช้งาน CloudWatch ให้อนุญาตเข้าถึงการทำงานของ EC2 และทำการเก็บข้อมูล Log ได้ โดยการเข้าไปที่หน้าแรกของ IAM
ดูตัวอย่างได้ที่ลิงก์บทความด้านล่างนี้
การสร้าง SSM สำหรับใช้กับ EC2 Instance
*ลิงก์บทความด้านบนนี้เป็นแค่ตัวอย่าง อาจมีการตั้งค่าบางส่วนที่แตกต่างกัน
แนะนำให้ดูตัวอย่างตั้งค่าการสร้าง Role สำหรับ CloudWatch Log ของบทความครั้งนี้ตามด้านล่างนี้ประกอบด้วยครับ
ตัวอย่างตั้งค่าการสร้าง Role สำหรับ CloudWatch Log ของบทความครั้งนี้
เข้ามาที่
Service Identity and Access Management (IAM)
เลือกRoles
จากเมนูด้านซ้าย
คลิกCreate role
Step 1 - Select trusted entity:
Trusted entity type:AWS service
Use case: ◉EC2
คลิกNext
Step 2 - Add permissions:
Permissions policies
Policy name: (ค้นหาและติ๊ก Policy ตามด้านล่างนี้)
・CloudWatchAgentServerPolicy
(*จำเป็นสำหรับ CloudWatch Agent)
・AmazonSSMManagedInstanceCore
(หากไม่ต้องการรันคำสั่งบน SSM ไม่ต้องเพิ่มก็ได้)
คลิกNext
Step 3 - Name, review, and create:
Role details
Role Name:tinnakorn-cwagent-ec2-role
(ชื่ออะไรก็ได้)
เลื่อนลงมาด้านล่างสุด คลิกCreate role
เมื่อสร้าง SSM Role เสร็จแล้ว โปรดอ่านที่นี่ก่อนที่จะไปสร้าง EC2 Instance ครับ
- สำหรับใครที่มี EC2 Instance (Amazon Linux) ที่พร้อมใช้งานอยู่แล้ว ข้ามไปทำที่หัวข้อ เพิ่ม Role สำหรับ CloudWatch Log ใน EC2 Instance ได้เลยครับ
- สำหรับใครที่ยังไม่ได้สร้าง EC2 Instance ให้ทำตามหัวข้อ สร้าง EC2 Instance ด้านล่างนี้ครับ
สร้าง EC2 Instance
ดูตัวอย่างได้ที่ลิงก์บทความด้านล่างนี้
วิธีติดตั้ง Amazon Linux 2023 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY
*ลิงก์บทความด้านบนนี้เป็นแค่ตัวอย่าง อาจมีการตั้งค่าบางส่วนที่แตกต่างกัน
แนะนำให้ดูตัวอย่างตั้งค่าการสร้าง EC2 Instance ของบทความครั้งนี้ตามด้านล่างนี้ประกอบด้วยครับ
ตัวอย่างตั้งค่าการสร้าง EC2 Instance ของบทความครั้งนี้
Region:
Singapore
※Launch instances
Name and tags
Name:tinnakorn-cwagent-ec2
(ตั้งชื่อที่ต้องการ)Application and OS Images (Amazon Machine Image)
Amazon Machine Image (AMI):Amazon Linux 2023 AMI
Instance type
Instance type:t3a.micro
(เลือกสเปคตามต้องการ)Key pair (login)
Key pair name - required:Proceed without a key pair (Not recommended)
Network settings
Firewall (security groups)
เลือกSelect existing security group
Common security groups: ไม่ต้องเลือก Security group เพราะตัวระบบจะเลือก default ให้อัตโนมัติConfigure storage
1x:8
GiBgp3
Root volume (Default)ー เพิ่ม Role ที่ Advanced details นี้ ー
คลิก
Advanced details
เพื่อขยายหน้าจอ แล้วเลือก Role ที่เราสร้างไว้ก่อนหน้านี้
IAM instance profile:tinnakorn-cwagent-ec2-role
เมื่อสร้าง EC2 Instance สำหรับ CloudWatch Log เสร็จแล้ว ข้ามไปขั้นตอนติดตั้ง CloudWatch Agent และ Collectd ใน Instanceได้เลย เนื่องจากได้เพิ่ม Role ใน EC2 Instance ระหว่างที่สร้าง EC2 Instance ไปแล้ว
เพิ่ม Role ใน EC2 Instance
ขั้นตอนนี้จะเหมาะสำหรับผู้ใช้งานที่มี EC2 Instance (Amazon Linux) ที่พร้อมใช้งานอยู่แล้ว แต่ยังไม่ได้เพิ่ม Role
ก่อนอื่นให้เราเข้ามาที่หน้าจอ EC2 Intance ของเรา แล้วตรวจสอบ IAM Role ตามรูปภาพ
ถ้าแสดง -
ตามรูปภาพนี้ คือเรายังไม่มี IAM Role
ทีนี้เรามาเพิ่ม Role โดยมาที่ด้านขวาบน เลือก Actions
> Security
> Modify IAM Role
เมื่อเข้ามาหน้าจอ Modify IAM role แล้ว ให้เลือก IAM role ที่สร้างเตรียมไว้ เช่น tinnakorn-cwl-ec2-role แล้วคลิก Update IAM role
แล้วกลับมาหน้าจอหลักของ EC2 Instance และตรวจสอบที่ IAM Role อีกครั้ง จะเห็นว่ามี IAM Role ของเราเพิ่มเข้ามาแล้ว
หลังจากเพิ่ม IAM Role ใน EC2 Instance เสร็จแล้ว เริ่มทำขั้นตอนถัดไปได้เลย
*หากเกิดปัญหาระหว่างดำเนินเกี่ยวกับ CloudWatch Log แนะนำให้ลอง Stop/Start EC2 Instance และดำเนินการต่ออีกครั้ง
เปิด Session Manager
ครั้งนี้จะรันคำสั่งใน Session Manager บน Instnace เนื่องจากได้เพิ่ม Policy AmazonSSMManagedInstanceCore
ไว้ก่อนหน้านี้แล้ว โดยเข้าไปที่ "Instnace > Connect > แท็บ Session Manager > Connect"
แล้วรันคำสั่ง Login Root และ Update server
sudo su -
yum update -y
ติดตั้ง rsyslog
เปิดใช้งานไฟล์บันทึก (Log) ในไดเร็กทอรี /var/log/
บน Amazon Linux 2023
หากต้องการติดตั้งแพ็กเกจ rsyslog
บน Amazon Linux 2023 และ start service ให้เรียกใช้คำสั่งนี้
yum install rsyslog -y
systemctl enable rsyslog --now
ตรวจสอบ Log ของ Instance ใน /var/log/messages
less /var/log/messages
Output (ออกจากหน้าจอนี้โดยกดปุ่ม Q
)
Aug 14 03:21:15 ip-172-31-8-142 kernel: Linux version 6.1.102-108.177.amzn2023.x86_64 (mockbuild@ip-10-0-62-55) (gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), GNU ld version 2.39-6.amzn2023.0.10) #1 SMP PREEMPT_DYNAMIC Wed Jul 31 10:18:50 UTC 2024
Aug 14 03:21:15 ip-172-31-8-142 kernel: Command line: BOOT_IMAGE=(hd0,gpt1)/boot/vmlinuz-6.1.102-108.177.amzn2023.x86_64 root=UUID=2277f5ea-ebeb-42da-a2e1-3b9cf1c1bca9 roconsole=tty0 console=ttyS0,115200n8 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0 selinux=1 security=selinux quiet
Aug 14 03:21:15 ip-172-31-8-142 kernel: KASLR enabled
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-provided physical RAM map:
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-e820: [mem 0x0000000000100000-0x00000000314cdfff] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-e820: [mem 0x00000000314ce000-0x000000003174dfff] reserved
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-e820: [mem 0x000000003174e000-0x000000003175dfff] ACPI data
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-e820: [mem 0x000000003175e000-0x00000000317ddfff] ACPI NVS
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-e820: [mem 0x00000000317de000-0x000000003d77bfff] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: BIOS-e820: [mem 0x000000003d77c000-0x000000003d7fffff] reserved
Aug 14 03:21:15 ip-172-31-8-142 kernel: NX (Execute Disable) protection: active
Aug 14 03:21:15 ip-172-31-8-142 kernel: extended physical RAM map:
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x0000000000000000-0x000000000009ffff] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x0000000000100000-0x000000002f6be017] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x000000002f6be018-0x000000002f6c6e57] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x000000002f6c6e58-0x00000000314cdfff] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x00000000314ce000-0x000000003174dfff] reserved
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x000000003174e000-0x000000003175dfff] ACPI data
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x000000003175e000-0x00000000317ddfff] ACPI NVS
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x00000000317de000-0x000000003d77bfff] usable
Aug 14 03:21:15 ip-172-31-8-142 kernel: reserve setup_data: [mem 0x000000003d77c000-0x000000003d7fffff] reserved
Aug 14 03:21:15 ip-172-31-8-142 kernel: efi: EFI v2.70 by EDK II
Aug 14 03:21:15 ip-172-31-8-142 kernel: efi: SMBIOS=0x3166a000 ACPI=0x3175d000 ACPI 2.0=0x3175d014 MEMATTR=0x2fe10a98
Aug 14 03:21:15 ip-172-31-8-142 kernel: SMBIOS 2.7 present.
Aug 14 03:21:15 ip-172-31-8-142 kernel: DMI: Amazon EC2 t3a.micro/, BIOS 1.0 10/16/2017
Aug 14 03:21:15 ip-172-31-8-142 kernel: Hypervisor detected: KVM
Aug 14 03:21:15 ip-172-31-8-142 kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00
Aug 14 03:21:15 ip-172-31-8-142 kernel: kvm-clock: using sched offset of 4257464174 cycles
Aug 14 03:21:15 ip-172-31-8-142 kernel: clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
Aug 14 03:21:15 ip-172-31-8-142 kernel: tsc: Detected 2199.990 MHz processor
Aug 14 03:21:15 ip-172-31-8-142 kernel: last_pfn = 0x3d77c max_arch_pfn = 0x400000000
/var/log/messages
ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
systemd journal replaces rsyslog - Amazon Linux 2023 (เกี่ยวกับการใช้ rsyslog ใน AL2023)
Find log files in Amazon Linux 2023 | AWS re:Post (เกี่ยวกับคำสั่ง rsyslog)
ติดตั้ง CloudWatch Agent และ Collectd ใน Instance
yum install amazon-cloudwatch-agent -y
yum install collectd -y
หากไม่ต้องการรับ Log โดยใช้
collectd
ไว้สำหรับ Custom Metrics ก็ไม่จำเป็นต้องติดตั้งที่ collectd
หากสร้างการกำหนดค่าด้วย Wizard แล้วเกิด Error ในตอนที่เริ่มต้นระบบ ก็ต้องติดตั้ง collectd ในสภาพแวดล้อมเตรียมไว้ในตอนนี้ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
Retrieve custom metrics with collectd - Amazon CloudWatch
สร้างการกำหนดค่าด้วย Wizard
รันคำสั่งสร้างการกำหนดค่าด้วย Wizard (หากรันใน root ไม่จำเป็นต้องป้อน sudo
)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
ตัวอย่างการกำหนดค่า นอกจากคำถามด้านล่างนี้คือค่าเริ่มต้น
- Which user are you planning to run the agent? =
2. root
(เนื่องจาก "/var/log/messages" ต้องการเข้าถึงด้วยสิทธิ์ root) - Do you want to monitor any log files? =
1. yes
- Log file pate: =
/var/log/messages
(ครั้งนี้จะป้อน Path ที่ติดตั้ง rsyslog ในตอนแรก) - Log group name:
- default choice: [messages] =
tinnakorn-cwagent-ec2/var_log_messages
(ป้อนตามต้องการ)
- default choice: [messages] =
- Log group class: =
1. STANDARD
- Log stream name:
- default choice: [{instance_id}] = Enter
- Log Group Retention in days =
7. 30
(ตั้งค่าให้ Log เก็บข้อมูล 30 วัน เมื่อเวลาผ่านไป 30 วันข้อมูล Log นี้จะหายไป)
- Log file pate: =
- Do you want to specify any additional log files to monitor? =
2. no
- Do you want the CloudWatch agent to also retrieve X-ray traces? =
2. no
- Do you want to store the config in the SSM parameter store? =
2. no
[root@ip-xx-xx-xx-xx ~]# sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
================================================================
= Welcome to the Amazon CloudWatch Agent Configuration Manager =
= =
= CloudWatch Agent allows you to collect metrics and logs from =
= your host and send them to CloudWatch. Additional CloudWatch =
= charges may apply. =
================================================================
On which OS are you planning to use the agent?
1. linux
2. windows
3. darwin
default choice: [1]:
Trying to fetch the default region based on ec2 metadata...
I! imds retry client will retry 1 timesAre you using EC2 or On-Premises hosts?
1. EC2
2. On-Premises
default choice: [1]:
Which user are you planning to run the agent?
1. cwagent
2. root
3. others
default choice: [1]:
2
Do you want to turn on StatsD daemon?
1. yes
2. no
default choice: [1]:
Which port do you want StatsD daemon to listen to?
default choice: [8125]
What is the collect interval for StatsD daemon?
1. 10s
2. 30s
3. 60s
default choice: [1]:
What is the aggregation interval for metrics collected by StatsD daemon?
1. Do not aggregate
2. 10s
3. 30s
4. 60s
default choice: [4]:
Do you want to monitor metrics from CollectD? WARNING: CollectD must be installed or the Agent will fail to start
1. yes
2. no
default choice: [1]:
Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes
2. no
default choice: [1]:
Do you want to monitor cpu metrics per core?
1. yes
2. no
default choice: [1]:
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes
2. no
default choice: [1]:
Do you want to aggregate ec2 dimensions (InstanceId)?
1. yes
2. no
default choice: [1]:
Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.
1. 1s
2. 10s
3. 30s
4. 60s
default choice: [4]:
Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:
Current config as follows:
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:
Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration?
1. yes
2. no
default choice: [2]:
Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:
Log file path:
/var/log/messages
Log group name:
default choice: [messages]
tinnakorn-cwagent-ec2/var_log_messages
Log group class:
1. STANDARD
2. INFREQUENT_ACCESS
default choice: [1]:
Log stream name:
default choice: [{instance_id}]
Log Group Retention in days
1. -1
2. 1
3. 3
4. 5
5. 7
6. 14
7. 30
8. 60
9. 90
10. 120
11. 150
12. 180
13. 365
14. 400
15. 545
16. 731
17. 1096
18. 1827
19. 2192
20. 2557
21. 2922
22. 3288
23. 3653
default choice: [1]:
7
Do you want to specify any additional log files to monitor?
1. yes
2. no
default choice: [1]:
2
Do you want the CloudWatch agent to also retrieve X-ray traces?
1. yes
2. no
default choice: [1]:
2
Existing config JSON identified and copied to: /opt/aws/amazon-cloudwatch-agent/etc/backup-configs
Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.
Current config as follows:
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/messages",
"log_group_class": "STANDARD",
"log_group_name": "tinnakorn-cwagent-ec2/var_log_messages",
"log_stream_name": "{instance_id}",
"retention_in_days": 30
}
]
}
}
},
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
Please check the above content of the config.
The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
Edit it manually if needed.
Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:
2
Program exits now.
[root@ip-xx-xx-xx-xx ~]#
การตั้งค่าจะส่งออกไปที่ /opt/aws/amazon-cloudwatch-agent/bin/config.json
ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
Create the CloudWatch agent configuration file with the wizard - Amazon CloudWatch
โหลดการกำหนดค่า
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
หากเกิด Error ขณะโหลดการกำหนดค่า ให้ตรวจสอบว่ามีการติดตั้ง Collected หรือไม่
Configuration validation second phase failed
======== Error Log ========
2024-08-14T03:58:50Z E! [telegraf] Error running agent: Error loading config file /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml: error parsing socket_listener, open /usr/share/collectd/types.db: no such file or directory
คำสั่งเพิ่มเติมเกี่ยวกับ Cloudwatch Agent
เริ่มต้นระบบ
sudo systemctl start amazon-cloudwatch-agent.service
ตรวจสอบสถานะ
sudo systemctl status amazon-cloudwatch-agent.service
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
หยุดการทำงานของระบบ
sudo systemctl stop amazon-cloudwatch-agent.service
ตรวจสอบ Log ของ Cloudwatch Agent
sudo journalctl -u amazon-cloudwatch-agent.service
ตรวจสอบ Log groups ใน CloudWatch
เข้ามาที่บริการ "CloudWatch > Log groups" แล้วค้นหาชื่อ Log group ที่ป้อนในขั้นตอนสร้างการกำหนดค่าด้วย Wizard ครั้งนี้คือ tinnakorn-cwagent-ec2/var_log_messages
จะเห็นว่ามีชื่อ Log group ของเราแสดงอยู่ที่นี่โดยมี Retention เป็น 1 month
ตามที่กำหนดค่าไว้ ให้คลิกเข้าไปที่ Log group ได้เลย
เมื่อเข้ามาแล้วจะเห็น Log stream โดยมี Instance ID ที่เราดำเนินการติดตั้ง Cloudwatch Agent ให้คลิกเข้าไปที่ Instance ID ได้เลย
แล้วจะแสดง Log events แบบนี้
ทดสอบการทำงาน Cloudwatch Agent
เราจะทดสอบโดยรันคำสั่ง Log flow ใน SSM ตามด้านล่างนี้ และดูว่าข้อมูลที่แสดงใน SSM นั้นเหมือนกันกับ Log ที่อยู่ใน Log stream หรือไม่ ถ้าข้อมูลแสดงเหมือนกันนั้นหมายความว่าเราได้ทำการสร้าง Cloudwatch Agent อย่างถูกต้องสมบูรณ์แล้ว
tail -f /var/log/messages
Output หน้าจอ SSM (ออกจากหน้าจอนี้โดยกดปุ่ม Ctrl + C
)
หน้าจอ Log events ใน CloudWatch ซึ่งจะเห็นว่าจะแสดงข้อมูลเหมือนกับหน้าจอ SSM ด้านบน
แล้วมา Terminate Instance นี้กันและดูว่าข้อมูล Log ของเราจะหายไปหรือไม่ ถ้าข้อมูลยังอยู่แสดงว่าเราทำการตั้งค่า CloudWatch ถูกต้องแล้ว
กลับมาที่ Log group ของเราอีกครั้ง จะเห็นว่า Log stream ยังไม่หายไป
Filter ข้อมูลใน Log stream
การ Filter ข้อมูลใน Log stream จะมีทั้งหมด 4 วิธีให้เราสามารถเลือกใช้งานได้
- Hot key filter
- Absolute filter
- Relative filter
- Search bar filter
1. Hot key filter
Hot key filter เป็นตัวเลือกที่ระบบสร้างมาให้เรากดใช้งาน Filter ได้เลยเพียงแค่คลิกโดยจะมีเงื่อนไขการ Filter พื้นฐานดังนี้
1m
คือกรองข้อมูลล่าสุดเมื่อ 1 นาทีที่ผ่านมา30m
คือกรองข้อมูลล่าสุดเมื่อ 30 นาทีที่ผ่านมา1h
คือกรองข้อมูลล่าสุดเมื่อ 1 ชั่วโมงที่ผ่านมา12h
คือกรองข้อมูลล่าสุดเมื่อ 12 ชั่วโมงที่ผ่านมา
2. Absolute filter
Absolute filter เป็นการ Filter ข้อมูล Log แบบกำหนดวันที่ ซึ่งเราสามารถเลือกได้เลยว่าต้องการจะดู Log จากวันที่เท่าไหร่ถึงวันที่เท่าไหร่
3. Relative filter
Relative filter เป็นการกำหนดเวลาและวันที่ข้อมูล Log ที่เราต้องการจะดูย้อนหลัง โดยสามารถกำหนดได้ตั้งแต่ระดับ Minutes, Hours, Days, Weeks และ Months
4. Search bar filter
Search bar filter เป็นการค้นหาเนื้อหาที่เราต้องการจะดูข้อมูล Log
ครั้งนี้จะลองค้นหาคำว่า systemd
จะเห็นว่าข้อมูล Log ที่แสดงทั้งหมดจะแสดงเฉพาะ Log ที่เกี่ยวกับ systemd ตามที่เราค้นหาเท่านั้น
ราคา Amazon CloudWatch
ราคา Amazon CloudWatch ในปัจจุบัน ณ วันที่เขียนบทความ (2024/08/14) สามารถตรวจสอบได้ตามด้านล่าง
ครั้งนี้จะตรวจสอบการใช้งานใน Region Singapore
โดยจะมีอัตราค่าใช้จ่ายดังนี้
จัดการข้อมูลบันทึก / Manage Logs | ค่าใช้จ่าย / Cost |
---|---|
รวบรวม (การนำข้อมูลเข้า) / Collect (Data Ingestion) | |
มาตรฐาน / Standard | USD 0.70 ต่อ GB |
การเข้าถึงไม่บ่อย / Infrequent Access | USD 0.35 ต่อ GB |
จัดเก็บ (แบบถาวร) / Store (Archival) | USD 0.03 ต่อ GB |
วิเคราะห์ (คิวรี Logs Insights) / Analyze (Logs Insights queries) | USD 0.007 ต่อ GB ของข้อมูลที่สแกน |
ตรวจจับและปกปิด (การปกป้องข้อมูล) / Detect and Mask (Data Protection) | USD 0.12 ต่อ GB ของข้อมูลที่สแกน |
วิเคราะห์ (Live Tail) / Analyze (Live Tail) | 0.01 USD ต่อนาที |
※หมายเหตุ: ข้อมูลราคาอาจจะมีการเปลี่ยนแปลงไปตามกาลเวลา ขอแนะนำให้ตรวจสอบในหน้าเว็บไซต์ทางการของ AWS เพื่อยืนยันความถูกต้องตามลิงก์ด้านล่างนี้
ราคาของ Amazon CloudWatch – Amazon Web Services (AWS)
สรุป
ต่อให้เรา Terminate Instance ไปแล้ว แต่ Log ของ Instance จะยังบันทึกอยู่ใน Log groups ของเราตามระยะเวลาที่เรากำหนดไว้ เช่น ครั้งนี้กำหนดการจัดเก็บ Log ไว้ 30 วัน หลังจากครบ 30 วัน Log ก็จะหายไปอัตโนมัติ
บทความที่เกี่ยวข้อง
- การสร้าง SSM สำหรับใช้กับ EC2 Instance
- วิธีติดตั้ง Amazon Linux 2023 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY
- systemd journal replaces rsyslog - Amazon Linux 2023 (ภาษาอังกฤษ)
- Find log files in Amazon Linux 2023 | AWS re:Post (ภาษาอังกฤษ)
- Retrieve custom metrics with collectd - Amazon CloudWatch (ภาษาอังกฤษ)
- Create the CloudWatch agent configuration file with the wizard - Amazon CloudWatch (ภาษาอังกฤษ)
- ราคาของ Amazon CloudWatch – Amazon Web Services (AWS)
- 【2023年11月版】AmazonLinux 2023 で CloudWatch Agentを使用して EC2インスタンスからログを収集【メトリクス、ログ、トレース】 (ภาษาญี่ปุ่น)