Skip to main content

Memonitor EC2 instance Linux/Ubuntu ke Amazon CloudWatch

Untuk memonitor EC2 instance ke Amazon CloudWatch, kamu bisa mengikuti langkah-langkah berikut. Secara default, EC2 sudah mengirimkan beberapa basic metrics ke CloudWatch, namun kamu juga bisa menambahkan detailed monitoring dan custom metrics.


✅ 1. Monitoring Dasar (Default)

Secara default, AWS CloudWatch akan mengumpulkan basic EC2 metrics setiap 5 menit, termasuk:

  • CPUUtilization

  • DiskReadBytes, DiskWriteBytes

  • NetworkIn, NetworkOut

  • StatusCheckFailed

❗ Default monitoring = interval 5 menit.

Cara melihatnya:

  1. Masuk ke AWS Console > CloudWatch > Metrics

  2. Pilih EC2 > Per-Instance Metrics


✅ 2. Aktifkan Detailed Monitoring (Interval 1 Menit)

Jika kamu butuh granular data, aktifkan Detailed Monitoring:

  • Masuk ke EC2 > Instances

  • Pilih instance > Actions > Monitor and troubleshoot > Enable detailed monitoring

💰 Perlu biaya tambahan karena mengirim data setiap 1 menit.


✅ 3. Install CloudWatch Agent (Untuk Custom Metrics)

Jika kamu ingin mengirim custom metrics seperti:

  • Memory usage

  • Disk space usage

  • Log file metrics

Langkahnya:

A. Install CloudWatch Agent di Linux / Ubuntu

# Amazon Linux / Ubuntu
sudo yum install amazon-cloudwatch-agent -y   # untuk Amazon Linux
# atau
sudo apt install amazon-cloudwatch-agent -y   # untuk Ubuntu/Debian

B. Buat File Konfigurasi

Contoh file: /opt/aws/amazon-cloudwatch-agent/bin/config.jsonnt.json

{
  "agent": {
    "metrics_collection_interval": 60,300,
    "run_as_user": "root"
  },
  "metrics": {
    "metrics_collected": {
      "cpu": {
        "measurement": ["cpu_usage_idle", "cpu_usage_user", "cpu_usage_system"],
        "metrics_collection_interval": 60,300,
        "totalcpu": true
      },
      "mem": {
        "measurement": ["mem_used_percent"],
        "metrics_collection_interval": 60300
      },
      "disk": {
        "measurement": ["used_percent"],
        "resources": ["/"],
        "metrics_collection_interval": 60300
      }
    },
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    }
  }
}

C. Jalankan CloudWatch Agent

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config -m ec2 \
  -c file:/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent.json \
  -s

✅ 4. Pastikan Instance Punya IAM Role

Agar CloudWatch Agent bisa kirim data, EC2 instance harus punya IAM role dengan policy seperti:

{
  "Effect": "Allow",
  "Action": [
    "cloudwatch:PutMetricData",
    "ec2:DescribeTags",
    "logs:PutLogEvents",
    "logs:CreateLogGroup",
    "logs:CreateLogStream"
  ],
  "Resource": "*"
}

IAM role ini perlu di-attach ke instance EC2 kamu.


✅ 5. (Opsional) Kirim Log ke CloudWatch Logs

Kalau kamu juga ingin kirim log file ke CloudWatch Logs (misal /var/log/nginx/access.log):

Tambahkan di konfigurasi agent:

"logs": {
  "logs_collected": {
    "files": {
      "collect_list": [
        {
          "file_path": "/var/log/nginx/access.log",
          "log_group_name": "nginx-access-log",
          "log_stream_name": "{instance_id}"
        }
      ]
    }
  }
}

Kalau kamu ingin saya bantu generate file konfigurasi atau membuat script provisioning otomatis (pakai Ansible atau Terraform), tinggal bilang saja.

Mau monitoring apa saja dari EC2-mu? Saya bisa bantu buatkan template config-nya.