Log CloudWatch dan Log Insights
Himpunkan log daripada EC2, Lambda dan bekas ke dalam kumpulan log, kemudian jalankan pertanyaan CloudWatch Logs Insights untuk mencari ralat dan corak.
Log CloudWatch dan Log Insights ialah pelajaran AWS Solutions Architect percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AWS Solutions Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Gambaran Keseluruhan CloudWatch Logs
Amazon CloudWatch Logs ialah perkhidmatan pengagregatan log terurus sepenuhnya yang mengumpulkan, menyimpan dan menganalisis data log daripada perkhidmatan AWS serta aplikasi Anda sendiri. Berbeza dengan pengurusan log tradisional yang memerlukan Anda menggunakan SSH ke pelayan untuk membaca fail, CloudWatch Logs memusatkan semua log dalam storan tahan lama dan disulitkan, dengan fungsi pertanyaan, penapisan, pengekstrakan metrik serta pengurusan pengekalan terbina dalam. Perkhidmatan ini berintegrasi secara natif dengan EC2, Lambda, ECS, EKS, API Gateway, CloudTrail dan VPC Flow Logs.
Kumpulan Log dan Strim Log
Log disusun secara hierarki: kumpulan log ialah bekas bernama untuk log yang berkongsi tetapan pengekalan dan kawalan akses yang sama (contohnya, /aws/lambda/my-function). Dalam kumpulan log, setiap strim log mewakili satu sumber peristiwa log berjujukan — satu tika EC2, satu bekas Lambda atau satu tugas ECS. Satu kumpulan log boleh mempunyai ribuan strim, tetapi setiap strim hanya dimiliki oleh satu kumpulan 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 \
--descendingMenghantar Log daripada Lambda dan EC2
AWS Lambda menghantar semua output stdout dan stderr ke CloudWatch Logs secara automatik — Anda hanya perlu memastikan peranan pelaksanaan Lambda mengandungi logs:CreateLogGroup, logs:CreateLogStream dan logs:PutLogEvents. Bagi tika EC2, Anda memasang CloudWatch Agent dan mengkonfigurasi fail log yang hendak dibaca secara berterusan (contohnya, /var/log/nginx/access.log), kumpulan log untuk penulisan dan corak yang mengenal pasti 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 ialah enjin pertanyaan interaktif yang membolehkan Anda mencari dan menganalisis data log menggunakan bahasa pertanyaan khusus. Anda boleh menjalankan pertanyaan merentas satu atau lebih kumpulan log, menapis mengikut julat masa, mengekstrak medan daripada baris log berstruktur atau tidak berstruktur, mengagregatkan data dan menggambarkan hasil sebagai carta bar atau siri masa. Pertanyaan dijalankan atas permintaan dan dikenakan caj bagi setiap GB data yang diimbas — penstrukturan log sebagai JSON mengurangkan jumlah imbasan dengan ketara.
# 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 Pertanyaan Logs Insights
Bahasa pertanyaan Logs Insights menggunakan perintah yang dipisahkan dengan paip: fields memilih medan untuk dipaparkan, filter mengecilkan skop peristiwa (menyokong ungkapan biasa dengan like dan =~), stats mengagregatkan data, sort menyusun hasil dan limit mengehadkan bilangan hasil. Perkhidmatan ini menemui medan dalam baris log berformat JSON secara automatik. Bagi log tidak berstruktur, Anda boleh menghuraikan nilai menggunakan parse dengan corak glob atau ungkapan biasa.
# 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 20Penapis Metrik: Log kepada Metrik
Penapis metrik mengimbas peristiwa log yang masuk secara berterusan untuk mencari corak dan menambah nilai metrik CloudWatch tersuai setiap kali padanan ditemui. Contohnya, Anda boleh mencipta penapis metrik pada kumpulan log Lambda yang menambah metrik ErrorCount setiap kali baris log mengandungi ERROR. Kemudian, Anda mencipta alarm CloudWatch pada metrik ini untuk memberi amaran kepada pasukan Anda. Kaedah ini menukar log kepada metrik yang boleh diambil tindakan tanpa menyimpan hasil dalam pangkalan data berasingan.
# 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:OpsLangganan Log dan Penstriman
penapis langganan menstrim peristiwa log hampir dalam masa nyata ke perkhidmatan lain untuk diproses atau disimpan. Anda boleh menstrim ke AWS Lambda (untuk mengubah dan menghalakan log), Amazon Kinesis Data Streams (untuk pemprosesan log volum tinggi), atau Amazon Kinesis Firehose (untuk menghantar ke S3, OpenSearch atau Splunk). Setiap kumpulan log menyokong sehingga dua penapis langganan. Penstriman log merentas akaun memerlukan destinasi dengan dasar sumber 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'Dasar Pengekalan dan Pengurusan Kos
Secara lalai, CloudWatch Logs menyimpan data tanpa had, yang boleh menjadi mahal. Tetapkan dasar pengekalan pada setiap kumpulan log untuk memadam peristiwa log lama secara automatik. Tempoh pengekalan yang biasa ialah 7 hari untuk log nyahpepijat, 30 hari untuk log aplikasi dan 1-5 tahun untuk log audit. Anda boleh mengeksport kumpulan log ke S3 untuk pengarkiban jangka panjang berkos rendah menggunakan API create-export-task, tetapi eksport ialah operasi kelompok (bukan masa 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"
doneVPC Flow Logs
VPC Flow Logs menangkap metadata tentang trafik IP yang mengalir ke dan dari antara muka rangkaian dalam VPC, subnet atau ENI individu Anda. Log ini disimpan dalam CloudWatch Logs atau S3. Log aliran merangkumi IP sumber, IP destinasi, port, protokol, kiraan paket, kiraan bait, tindakan (ACCEPT atau REJECT) dan cap masa. Log ini amat berguna untuk menyelesaikan masalah peraturan kumpulan keselamatan dan NACL, mengesan imbasan port dan mengaudit corak trafik — tetapi log ini TIDAK menangkap muatan paket sebenar.
# 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/FlowLogsRoleMembuat Pertanyaan VPC Flow Logs dengan Insights
CloudWatch Logs Insights amat berkuasa untuk analisis VPC Flow Log. Anda boleh mengenal pasti trafik yang ditolak dengan pantas, mencari sumber komunikasi teratas berdasarkan jumlah bait, mengesan sambungan luar biasa atau mengasingkan trafik kepada tika tertentu. Format log aliran secara lalai dipisahkan dengan ruang, tetapi penerbitan dalam format JSON ke CloudWatch Logs menjadikan pengekstrakan medan dilakukan secara automatik dalam pertanyaan 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 10Penyulitan Log dengan KMS
CloudWatch Logs menyulitkan semua data ketika tidak digunakan secara lalai menggunakan kunci yang diurus AWS. Untuk keselamatan yang dipertingkatkan — khususnya dalam persekitaran terkawal — Anda boleh mengaitkan kunci KMS yang diurus pelanggan dengan kumpulan log. Ini memberi Anda kawalan terhadap putaran dan akses kunci, serta membolehkan Anda membatalkan akses kepada semua data log dengan menyahdayakan kunci tersebut. Kunci KMS mesti mempunyai dasar kunci yang memberikan CloudWatch Logs kebenaran untuk menggunakannya bagi penyulitan dan penyahsulitan.
# 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}'Semakan Pantas
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) daripada pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda telah mempelajari bahawa: kumpulan log dan strim menyusun log mengikut sumber dengan tempoh penyimpanan yang boleh dikonfigurasikan, Logs Insights membolehkan Anda membuat pertanyaan dan mengagregat data log menggunakan bahasa pertanyaan berasaskan saluran paip yang berkuasa, dan penapis metrik menukar corak log kepada metrik CloudWatch yang boleh mencetuskan penggera. Seterusnya, kita akan meneroka CloudWatch Dashboards dan Container Insights untuk mendapatkan keterlihatan operasi.
Pelajari AWS Solutions Architect dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Log CloudWatch dan Log Insights” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran AWS Solutions Architect, termasuk “Log CloudWatch dan Log Insights”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Log CloudWatch dan Log Insights”?
Himpunkan log daripada EC2, Lambda dan bekas ke dalam kumpulan log, kemudian jalankan pertanyaan CloudWatch Logs Insights untuk mencari ralat dan corak. Anda berlatih AWS Solutions Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan AWS Solutions Architect?
Tiada pengalaman terdahulu diperlukan. Pembelajaran AWS Solutions Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Log CloudWatch dan Log Insights” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Metrik CloudWatch, Ruang Nama dan Dimensi
- Penggera CloudWatch dan Penggera Komposit
- Log CloudWatch dan Log Insights
- Papan Pemuka CloudWatch dan Container Insights