Centralized Logging (EC2 Application Logs ke CloudWatch Logs)
📌 Summary
Agar aplikasi kamu (misal: file log nginx, php, atau dotnet app) otomatis dikirim ke CloudWatch Logs, kamu perlu:
-
Install agent CloudWatch Logs Agent atau lebih modern CloudWatch Unified Agent di EC2.
-
Konfigurasi agent-nya untuk push file log ke CloudWatch Logs.
📌 Syarat Agar Bisa Mengirim ke CloudWatch:
-
EC2 harus memiliki IAM Role dengan policy:
CloudWatchAgentServerPolicy
-
Jika belum ada, kamu bisa:
-
Buat IAM Role
-
Attach role ke EC2
-
Tambahkan policy berikut:
{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }
-
Question:
Apakah EC2 defaultnya belum memiliki IAM Role CloudWatchAgentServerPolicy sehingga perlu ditambahkan lagi?
Answer:Â
Benar, secara default EC2 instance tidak memiliki IAM Role apa pun saat dibuat — termasuk CloudWatchAgentServerPolicy
. Jadi:
🔸 Kalau kamu belum secara eksplisit membuat dan meng-attach IAM Role ke EC2, maka:
🚫 EC2 tidak bisa mengirim log ke CloudWatch
🚫 EC2 tidak bisa menjalankan CloudWatch Agent dengan sukses
✅ Solusinya
Kamu perlu:
-
Membuat IAM Role dengan policy
CloudWatchAgentServerPolicy
-
Attach role tersebut ke EC2 instance kamu
----------------------------------------------------------------------------------------------------------------------------------------------------
🔧 Langkah 1: Buat IAM Role dengan Policy
-
Masuk ke AWS Console
-
Buka layanan IAM
-
Di sidebar kiri, pilih Roles
-
Klik [Create role]
-
Di bagian Trusted entity type, pilih:
AWS service
-
Di Use case, pilih:
EC2
→ Klik Next -
Di bagian Permissions, cari dan pilih:
-
✅
CloudWatchAgentServerPolicy
-
-
Klik Next lagi
-
Beri nama, misalnya:
EC2CloudWatchAgentRole
-
Klik Create role
🔧 Langkah 2: Attach IAM Role ke EC2 Instance
-
Masuk ke EC2 Console
-
Pilih instance kamu
-
Klik tab Actions → pilih:
-
Security
→Modify IAM role
-
-
Di dropdown IAM Role, pilih:
-
EC2CloudWatchAgentRole
(atau nama role yang kamu buat)
-
-
Klik Update IAM Role
✅ Hasil
Setelah langkah di atas selesai:
-
Instance kamu sekarang bisa mengakses AWS CloudWatch.
-
Script CloudWatch Agent akan bisa membuat log group, log stream, dan push log dengan sukses.
=======================================================================================
🔧 Install CloudWatch Agent
Setelah syarat agar EC2 bisa mengirimkan data ke cloudwatch terpenuh mari kita lanjut install AWS Agent di EC2 nya
install-cloudwatch-agent.sh
yang:
-
Menginstal CloudWatch Agent
-
Mengatur log dari:
-
/var/log/syslog
-
Semua file di
/var/log/nginx/*.log
-
#!/bin/bash
# Update & install CloudWatch Agent
sudo apt update -y
sudo apt install -y amazon-cloudwatch-agent
# Buat direktori config jika belum ada
sudo mkdir -p /opt/aws/amazon-cloudwatch-agent/etc
# Buat file konfigurasi CloudWatch Agent
cat <<EOF | sudo tee /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/syslog",
"log_group_name": "ec2-syslog",
"log_stream_name": "{instance_id}-syslog",
"timestamp_format": "%b %d %H:%M:%S"
},
{
"file_path": "/var/log/nginx/access.log",
"log_group_name": "ec2-nginx-access",
"log_stream_name": "{instance_id}-nginx-access",
"timestamp_format": "%Y-%m-%d %H:%M:%S"
},
{
"file_path": "/var/log/nginx/error.log",
"log_group_name": "ec2-nginx-error",
"log_stream_name": "{instance_id}-nginx-error",
"timestamp_format": "%Y/%m/%d %H:%M:%S"
}
]
}
},
"log_stream_name": "default"
}
}
EOF
# Jalankan CloudWatch Agent dengan config
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json \
-s
echo "✅ CloudWatch Agent configured and started."
Penjelasan Tambahan:
-
log_group_name
: Bisa kamu ubah sesuai kebutuhan project kamu. -
timestamp_format
: Disesuaikan dengan format waktu pada masing-masing log file. Bisa diubah jika ternyata formatnya berbeda.
No Comments