0Pricing
AWS Solutions Architect · Pelajaran

Log CloudWatch dan Log Insights

Agregasikan log dari EC2, Lambda, dan kontainer ke dalam grup log, lalu jalankan kueri CloudWatch Logs Insights untuk menemukan kesalahan dan pola.

Log CloudWatch dan Log Insights adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AWS Solutions Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AWS Solutions Architect mencakup 4 pelajaran total.

Ikhtisar CloudWatch Logs

Amazon CloudWatch Logs adalah layanan agregasi log terkelola penuh yang mengumpulkan, menyimpan, dan menganalisis data log dari layanan AWS dan aplikasi Anda sendiri. Tidak seperti pengelolaan log tradisional yang mengharuskan Anda menggunakan SSH ke server untuk membaca berkas, CloudWatch Logs memusatkan semua log dalam penyimpanan terenkripsi yang tahan lama, dengan kueri, pemfilteran, ekstraksi metrik, dan pengelolaan retensi bawaan. Layanan ini terintegrasi secara native dengan EC2, Lambda, ECS, EKS, API Gateway, CloudTrail, dan VPC Flow Logs.

Grup Log dan Aliran Log

Log diatur secara hierarkis: grup log adalah wadah bernama untuk log yang memiliki pengaturan retensi dan kontrol akses yang sama (misalnya, /aws/lambda/my-function). Di dalam grup log, setiap aliran log mewakili satu sumber peristiwa log berurutan — satu instans EC2, satu wadah Lambda, atau satu tugas ECS. Satu grup log dapat memiliki ribuan aliran, tetapi setiap aliran hanya termasuk dalam satu grup log.

# Create a log group with 30-day retention
aws logs create-log-group \
  --log-group-name /myapp/production/api

aws logs put-retention-policy \
  --log-group-name /myapp/production/api \
  --retention-in-days 30

# List log streams in a group
aws logs describe-log-streams \
  --log-group-name /myapp/production/api \
  --order-by LastEventTime \
  --descending

Mengirim Log dari Lambda dan EC2

AWS Lambda secara otomatis mengirim semua keluaran stdout dan stderr ke CloudWatch Logs — Anda hanya perlu memastikan peran eksekusi Lambda menyertakan logs:CreateLogGroup, logs:CreateLogStream, dan logs:PutLogEvents. Untuk instans EC2, Anda memasang CloudWatch Agent dan mengonfigurasi berkas log yang akan dipantau (misalnya, /var/log/nginx/access.log), grup log tujuan, serta pola yang mengidentifikasi setiap entri log.

# CloudWatch Agent config for tailing an application log file
# /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# {
#   "logs": {
#     "logs_collected": {
#       "files": {
#         "collect_list": [{
#           "file_path": "/var/log/myapp/app.log",
#           "log_group_name": "/myapp/production/api",
#           "log_stream_name": "{instance_id}",
#           "timestamp_format": "%Y-%m-%dT%H:%M:%S"
#         }]
#       }
#     }
#   }
# }

CloudWatch Logs Insights

CloudWatch Logs Insights adalah mesin kueri interaktif yang memungkinkan Anda mencari dan menganalisis data log menggunakan bahasa kueri khusus. Anda dapat menjalankan kueri di satu atau beberapa grup log, memfilter berdasarkan rentang waktu, mengekstrak bidang dari baris log terstruktur atau tidak terstruktur, mengagregasikan data, dan memvisualisasikan hasil sebagai diagram batang atau rangkaian waktu. Kueri dijalankan sesuai permintaan dan dikenai biaya per GB data yang dipindai — penataan log sebagai JSON mengurangi volume pemindaian secara signifikan.

# Find the top 10 slowest Lambda invocations in the last hour
aws logs start-query \
  --log-group-name /aws/lambda/my-function \
  --start-time $(date -d '1 hour ago' +%s) \
  --end-time $(date +%s) \
  --query-string 'filter @type = "REPORT"
| fields @requestId, @duration
| sort @duration desc
| limit 10'

Bahasa Kueri Logs Insights

Bahasa kueri Logs Insights menggunakan perintah yang dipisahkan tanda pipa: fields memilih bidang yang akan ditampilkan, filter mempersempit peristiwa (mendukung ekspresi reguler dengan like dan =~), stats mengagregasikan data, sort mengurutkan hasil, dan limit membatasi jumlah hasil. Layanan ini secara otomatis menemukan bidang dalam baris log berformat JSON. Untuk log tidak terstruktur, Anda dapat mengurai nilai menggunakan parse dengan pola glob atau ekspresi reguler.

# Count errors by status code in the last 24 hours
fields @timestamp, @message
| filter @message like /ERROR/
| parse @message '* * * [*] "* *" * *' as host, user, datetime, request, method, status, bytes
| stats count(*) as errorCount by status
| sort errorCount desc
| limit 20

Filter Metrik: Dari Log Menjadi Metrik

Filter metrik terus-menerus memindai peristiwa log yang masuk untuk mencari pola dan menambah metrik CloudWatch khusus setiap kali ditemukan kecocokan. Misalnya, Anda dapat membuat filter metrik pada grup log Lambda yang menambah metrik ErrorCount setiap kali suatu baris log berisi ERROR. Selanjutnya, Anda membuat alarm CloudWatch pada metrik ini untuk memberi tahu tim Anda. Dengan demikian, log diubah menjadi metrik yang dapat ditindaklanjuti tanpa menyimpan hasilnya di basis data terpisah.

# Create a metric filter that counts ERROR lines
aws logs put-metric-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorCount \
  --filter-pattern 'ERROR' \
  --metric-transformations \
    metricName=ApplicationErrors,metricNamespace=MyApp,metricValue=1,defaultValue=0

# Now create an alarm on the resulting metric
aws cloudwatch put-metric-alarm \
  --alarm-name HighErrorRate \
  --metric-name ApplicationErrors \
  --namespace MyApp \
  --statistic Sum \
  --period 60 \
  --evaluation-periods 1 \
  --threshold 10 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

Langganan dan Pengaliran Log

Filter langganan mengalirkan peristiwa log hampir secara waktu nyata ke layanan lain untuk diproses atau disimpan. Anda dapat mengalirkannya ke AWS Lambda (untuk mengubah dan merutekan log), Amazon Kinesis Data Streams (untuk pemrosesan log bervolume tinggi), atau Amazon Kinesis Firehose (untuk mengirimkannya ke S3, OpenSearch, atau Splunk). Setiap grup log mendukung hingga dua filter langganan. Pengaliran log lintas akun memerlukan tujuan dengan kebijakan sumber daya yang sesuai.

# Stream all logs containing ERROR to a Kinesis Firehose for S3 archiving
aws logs put-subscription-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorsToFirehose \
  --filter-pattern 'ERROR' \
  --destination-arn arn:aws:firehose:us-east-1:111122223333:deliverystream/LogArchive \
  --distribution 'ByLogStreamName'

Kebijakan Retensi dan Pengelolaan Biaya

Secara bawaan, CloudWatch Logs menyimpan data tanpa batas waktu, yang dapat menjadi mahal. Tetapkan kebijakan retensi pada setiap grup log untuk menghapus peristiwa log lama secara otomatis. Periode retensi yang umum adalah 7 hari untuk log penelusuran kesalahan, 30 hari untuk log aplikasi, dan 1–5 tahun untuk log audit. Anda dapat mengekspor grup log ke S3 untuk pengarsipan jangka panjang berbiaya rendah menggunakan API create-export-task, meskipun ekspor merupakan operasi batch (bukan waktu nyata).

# Set retention on all log groups that have no retention policy
aws logs describe-log-groups \
  --query 'logGroups[?!retentionInDays].logGroupName' \
  --output text | tr '\t' '\n' | while read lg; do
    aws logs put-retention-policy \
      --log-group-name "$lg" \
      --retention-in-days 90
    echo "Set 90-day retention on $lg"
done

VPC Flow Logs

VPC Flow Logs menangkap metadata tentang lalu lintas IP yang mengalir ke dan dari antarmuka jaringan di VPC, subnet, atau ENI individual Anda. Data tersebut disimpan di CloudWatch Logs atau S3. Log aliran mencakup IP sumber, IP tujuan, porta, protokol, jumlah paket, jumlah bita, tindakan (ACCEPT atau REJECT), dan stempel waktu. Data ini sangat berguna untuk memecahkan masalah aturan grup keamanan dan NACL, mendeteksi pemindaian porta, serta mengaudit pola lalu lintas — tetapi data ini TIDAK menangkap muatan paket yang sebenarnya.

# Enable VPC Flow Logs to CloudWatch Logs
aws ec2 create-flow-logs \
  --resource-ids vpc-0abc1234def567890 \
  --resource-type VPC \
  --traffic-type ALL \
  --log-destination-type cloud-watch-logs \
  --log-group-name /aws/vpc/flow-logs \
  --deliver-logs-permission-arn arn:aws:iam::111122223333:role/FlowLogsRole

Membuat Kueri VPC Flow Logs dengan Insights

CloudWatch Logs Insights sangat berguna untuk menganalisis VPC Flow Logs. Anda dapat dengan cepat mengidentifikasi lalu lintas yang ditolak, menemukan sumber komunikasi teratas berdasarkan volume bita, mendeteksi koneksi yang tidak biasa, atau mengisolasi lalu lintas ke instans tertentu. Format log aliran secara bawaan dipisahkan oleh spasi, tetapi menerbitkannya dalam format JSON ke CloudWatch Logs membuat ekstraksi bidang berlangsung otomatis dalam kueri Insights.

# Find top 10 source IPs by rejected byte volume in the last day
fields srcAddr, dstAddr, dstPort, action, bytes
| filter action = 'REJECT'
| stats sum(bytes) as rejectedBytes by srcAddr
| sort rejectedBytes desc
| limit 10

Mengenkripsi Log dengan KMS

CloudWatch Logs secara bawaan mengenkripsi semua data saat tidak digunakan menggunakan kunci yang dikelola AWS. Untuk keamanan yang lebih baik — terutama di lingkungan yang diatur secara ketat — Anda dapat mengaitkan kunci KMS yang dikelola pelanggan dengan grup log. Dengan demikian, Anda dapat mengendalikan rotasi dan akses kunci, serta mencabut akses ke semua data log dengan menonaktifkan kunci tersebut. Kunci KMS harus memiliki kebijakan kunci yang memberikan izin kepada CloudWatch Logs untuk menggunakannya dalam enkripsi dan dekripsi.

# Associate a KMS key with a log group
aws logs associate-kms-key \
  --log-group-name /myapp/production/api \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID

# Verify encryption is configured
aws logs describe-log-groups \
  --log-group-name-prefix /myapp/production \
  --query 'logGroups[].{Name:logGroupName,KmsKey:kmsKeyId}'

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep AWS Arsitek Solusi (SAA-C03) dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini Anda telah mempelajari: log groups dan streams mengatur log berdasarkan sumber dengan retensi yang dapat dikonfigurasi, Logs Insights memungkinkan Anda membuat kueri dan mengagregasikan data log dengan bahasa kueri berbasis pipe yang canggih, dan metric filters mengubah pola log menjadi metrik CloudWatch yang dapat memicu alarm. Selanjutnya kita akan membahas CloudWatch Dashboards dan Container Insights untuk visibilitas operasional.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Log CloudWatch dan Log Insights” gratis?

Ya — teks lengkap “Log CloudWatch dan Log Insights” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AWS Solutions Architect, upgrade ke CoddyKit PRO. Kursus AWS Solutions Architect mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Log CloudWatch dan Log Insights”?

Agregasikan log dari EC2, Lambda, dan kontainer ke dalam grup log, lalu jalankan kueri CloudWatch Logs Insights untuk menemukan kesalahan dan pola. Kamu berlatih AWS Solutions Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AWS Solutions Architect?

Tidak diperlukan pengalaman sebelumnya. AWS Solutions Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Log CloudWatch dan Log Insights” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AWS Solutions Architect ini?

Ya. Setiap pelajaran AWS Solutions Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Metrik, Ruang Nama, dan Dimensi CloudWatch
  2. Alarm CloudWatch dan Alarm Gabungan
  3. Log CloudWatch dan Log Insights
  4. Dasbor CloudWatch dan Container Insights
← Kembali ke AWS Solutions Architect