अनेक EC2 Instances चे Logs CloudWatch Logs मध्ये कसे पाठवायचे (Agent, SSM, Logs Insights)
Metrics सांगतात की काहीतरी चुकलंय. Logs सांगतात का. या chapter मध्ये अनेक EC2 servers चे logs (nginx, Apache, Node.js, Java, Python) एकाच ठिकाणी, CloudWatch Logs मध्ये पाठवायचे आणि एका query ने सगळे शोधायचे. हा Amazon CloudWatch सोप्या भाषेत च्या पुढचा भाग आहे.
या chapter मध्ये तुम्ही काय शिकाल
- Log group, log stream, log event आणि retention
- CloudWatchAgentServerPolicy असलेला IAM role
- CloudWatch agent install; wizard ने आणि JSON ने config
- {instance_id} ने प्रत्येक instance ला एक log stream
- Systems Manager: एकाच वेळी अनेक servers वर agent install आणि configure
- Logs Insights queries आणि metric filter alarm
1. गोष्ट: पाच servers, एक error
एक food-delivery app load balancer मागे 5 web servers वर चालतं. Customer सांगतो "8:14 PM ला payment fail झालं". त्याला कोणत्या server ने serve केलं? Central logs नसतील तर 5 servers मध्ये SSH करून 5 वेळा grep. Auto Scaling ने तो server आधीच terminate केला असेल तर त्याचे logs कायमचे गेले.
CloudWatch Logs सोबत, पाचही servers त्यांचे logs एका log group ला पाठवतात. एक query काही seconds मध्ये error शोधते, अगदी आता अस्तित्वात नसलेल्या server चा सुद्धा.
2. Log groups, streams आणि retention
हे का लागतं?
लाखो lines ना folders हवेत, नाहीतर काहीच सापडणार नाही. जुने logs पण पैसे खातात, म्हणून वेळेवर delete करायला हवेत.
हे काय आहे?
- Log event: वेळेसोबत एक line. उदा. एक nginx request.
- Log stream: एका source च्या सगळ्या lines. आपण प्रत्येक instance ला एक stream, instance ID च्या नावाने.
- Log group: एकाच प्रकारच्या streams चा folder. उदा.
/app/nginx/accessमध्ये सगळ्या web servers चे access logs. - Retention: log group data किती दिवस ठेवतो. Default Never expire, ज्यामुळे bill कायम वाढत राहतं. Set करा, उदा. access logs ला 30 दिवस, audit logs ला 90 किंवा जास्त.
| Stack | Server वरची log file | सुचवलेला log group |
|---|---|---|
| nginx | /var/log/nginx/access.log, error.log | /app/nginx/access, /app/nginx/error |
| Apache (Amazon Linux) | /var/log/httpd/access_log, error_log | /app/httpd/access, /app/httpd/error |
| Apache (Ubuntu) | /var/log/apache2/access.log | /app/apache2/access |
| Node.js with PM2 | /home/ec2-user/.pm2/logs/app-out.log | /app/node |
| Java Spring Boot | /opt/app/logs/spring.log | /app/java |
| Python Flask + Gunicorn | /var/log/gunicorn/error.log | /app/python |
| PHP-FPM | /var/log/php-fpm/www-error.log | /app/php |
| MySQL | /var/log/mysqld.log (Amazon Linux) | /app/mysql |
| .NET on Windows | Windows Event Log: Application | /app/windows/application |
| Go service | /var/log/goapp/app.log | /app/go |
| System | /var/log/messages, /var/log/secure | /sys/messages, /sys/secure |
3. Step 1: IAM role
हे का लागतं?
Server वरच्या agent ने AWS ला सिद्ध करायला हवं की त्याला logs लिहायची परवानगी आहे. Servers वर access keys कधीच ठेवायच्या नाहीत: keys leak होतात. Role आपोआप short-lived keys देतो.
हे काय आहे?
CloudWatchAgentServerPolicy ही AWS managed policy आहे. ती agent ला metrics आणि logs पाठवायला (PutMetricData, CreateLogStream, PutLogEvents वगैरे) आणि Parameter Store मधून config वाचायला परवानगी देते. AmazonSSMManagedInstanceCore मुळे Systems Manager server manage करू शकतो (Step 5 मध्ये वापरू).
कसं करायचं (step by step)
- IAM → Roles → Create role उघडा.
- Trusted entity type: AWS service. Use case: EC2. Next.
- CloudWatchAgentServerPolicy search करून tick करा.
- AmazonSSMManagedInstanceCore search करून tick करा. Next.
- Role name:
EC2-CloudWatchAgent-Role. Create role. - EC2 → प्रत्येक server select करा → Actions → Security → Modify IAM role →
EC2-CloudWatchAgent-Roleनिवडा → Update IAM role. - Server वर verify करा:
TOKEN=$(curl -s -X PUT http://169.254.169.254/latest/api/token -H "X-aws-ec2-metadata-token-ttl-seconds: 60")
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/info
# expected: "InstanceProfileArn" : "arn:aws:iam::...:instance-profile/EC2-CloudWatchAgent-Role"
4. Step 2: agent install करा (एक server)
- web1 (Amazon Linux 2023) मध्ये SSH करा आणि logs मिळण्यासाठी nginx install करा:
sudo dnf install -y nginx amazon-cloudwatch-agent
sudo systemctl enable --now nginx
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/ # expected: 200
Ubuntu वर: https://amazoncloudwatch-agent.s3.amazonaws.com/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb download करा आणि sudo dpkg -i -E ./amazon-cloudwatch-agent.deb चालवा. Windows वर त्याच bucket मधला MSI वापरा.
5. Step 3: wizard ने configure करा
हे का लागतं?
Config file मध्ये खूप options असतात. Wizard सोपे प्रश्न विचारतो आणि तुमच्यासाठी बरोबर file लिहितो. पहिल्या server साठी छान.
कसं करायचं (step by step)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizardचालवा.- OS: linux. EC2 की on-premises: EC2. User: cwagent. cwagent का: agent root म्हणून चालू नये.
- StatsD: no. CollectD: no. का: आपण ते वापरत नाही; collectd ला package पण लागतो, नाहीतर agent start होत नाही.
- Host metrics monitor: yes. CPU per core: no. EC2 dimensions: yes. Aggregate: yes. Resolution: 60s. Level: Basic (mem आणि disk).
- Existing config: no. Log files monitor: yes.
- Log file path:
/var/log/nginx/access.log. Log group:/app/nginx/access. Log group class: STANDARD. Stream name:{instance_id}. Retention: 30. - अजून एक:
/var/log/nginx/error.log→/app/nginx/error, तेच stream name आणि retention. मग आणखी files no. - Config SSM Parameter Store मध्ये ठेवायचा: yes, नाव
AmazonCloudWatch-linux. का: Step 5 मध्ये इतर servers तोच config download करू शकतात. - File
/opt/aws/amazon-cloudwatch-agent/bin/config.jsonमध्ये save होते.
Ravindra Bagale's Tip
nginx logs फक्त root आणि nginx group ला वाचता येतात. Agent cwagent म्हणून चालत असेल तर read access द्या: sudo setfacl -m u:cwagent:rx /var/log/nginx; sudo setfacl -m u:cwagent:r /var/log/nginx/*.log, किंवा lab साठी wizard मध्ये user root निवडा.
6. Step 4: JSON file समजून घ्या, आणि agent start करा
हाच config हाताने लिहिलेला. प्रत्येक भागाला कारण आहे:
{
"agent": { "metrics_collection_interval": 60, "run_as_user": "cwagent" },
"metrics": {
"namespace": "CWAgent",
"append_dimensions": { "InstanceId": "${aws:InstanceId}" },
"metrics_collected": {
"mem": { "measurement": ["mem_used_percent"] },
"disk": { "measurement": ["used_percent"], "resources": ["/"] }
}
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{ "file_path": "/var/log/nginx/access.log",
"log_group_name": "/app/nginx/access",
"log_stream_name": "{instance_id}",
"retention_in_days": 30 },
{ "file_path": "/var/log/nginx/error.log",
"log_group_name": "/app/nginx/error",
"log_stream_name": "{instance_id}",
"retention_in_days": 30 }
]
}
}
}
}
| Key | का |
|---|---|
| metrics_collection_interval: 60 | मिनिटाला एक value, 60 s period च्या alarms शी जुळतं |
| append_dimensions InstanceId | प्रत्येक server ची memory graph वर वेगळी line |
| log_stream_name {instance_id} | प्रत्येक server ला एक stream; कोणत्या server ने line लिहिली ते दिसतं |
| retention_in_days | Logs कायमचे साठत राहत नाहीत |
| resources ["/"] | फक्त root disk; extra volume साठी "/data" जोडा |
- या file ने agent start करा:
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
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
# expected: "status": "running"
# from Parameter Store instead of a file: -c ssm:AmazonCloudWatch-linux
tail -n 20 /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log # look for errors
- थोडं traffic करा:
for i in $(seq 1 50); do curl -s -o /dev/null http://localhost/; curl -s -o /dev/null http://localhost/nope; done. - Verify: CloudWatch → Log groups →
/app/nginx/access→i-0abc…सारख्या नावाचा stream, त्यात तुमच्या requests (200 आणि 404). - Metrics verify: CloudWatch → Metrics → CWAgent → InstanceId →
mem_used_percent.
इतर stacks साठी entries (collect_list मध्ये जोडा):
{ "file_path": "/home/ec2-user/.pm2/logs/*-out.log", "log_group_name": "/app/node", "log_stream_name": "{instance_id}", "retention_in_days": 14 },
{ "file_path": "/opt/app/logs/spring.log", "log_group_name": "/app/java", "log_stream_name": "{instance_id}", "retention_in_days": 30,
"multi_line_start_pattern": "^\\d{4}-\\d{2}-\\d{2}" },
{ "file_path": "/var/log/gunicorn/error.log", "log_group_name": "/app/python", "log_stream_name": "{instance_id}", "retention_in_days": 30 },
{ "file_path": "/var/log/httpd/access_log", "log_group_name": "/app/httpd/access", "log_stream_name": "{instance_id}", "retention_in_days": 30 }
Java साठी multi_line_start_pattern का: Java stack trace 30 lines चा असतो. याशिवाय प्रत्येक line वेगळा event होतो आणि error वाचायला कठीण जातो. यामुळे date ने सुरू होणाऱ्या line वरच नवीन event सुरू होतो.
7. Step 5: Systems Manager ने अनेक servers
हे का लागतं?
20 servers वर SSH ने Steps 2-4 करणं slow आहे आणि प्रत्येक server थोडा वेगळा होऊ शकतो. Systems Manager (SSM) तीच command सगळ्यांवर चालवतो, SSH शिवाय आणि port 22 उघडा न ठेवता.
कसं करायचं (step by step)
- प्रत्येक server ला
EC2-CloudWatchAgent-Rolerole (Step 1) आणिRole = webtag द्या. - Systems Manager → Fleet Manager उघडा. सगळे servers Online दिसायला हवेत. (Amazon Linux आणि Ubuntu AMIs वर SSM agent आधीच असतो; त्याला outbound HTTPS लागतं.)
- Systems Manager → Run Command → Run command. Document: AWS-ConfigureAWSPackage.
- Action: Install. Name:
AmazonCloudWatchAgent. Version:latest. - Targets: Specify instance tags →
Role=web. Tags का: नवीन web servers command न बदलता यात येतात. - Output options: lab साठी S3 untick. Run. Verify: प्रत्येक target Success दाखवतो.
- पुन्हा Run command. Document: AmazonCloudWatch-ManageAgent. Action configure, Mode ec2, Optional Configuration Source ssm, Optional Configuration Location
AmazonCloudWatch-linux, Optional Restart yes. तोच tag target. Run. - Verify:
/app/nginx/accesslog group मध्ये आता प्रत्येक server चा एक stream आहे.
हेच CLI ने:
aws ssm put-parameter --name AmazonCloudWatch-linux --type String --overwrite \
--value file://config.json
aws ssm send-command --document-name AWS-ConfigureAWSPackage \
--targets Key=tag:Role,Values=web \
--parameters '{"action":["Install"],"name":["AmazonCloudWatchAgent"]}'
aws ssm send-command --document-name AmazonCloudWatch-ManageAgent \
--targets Key=tag:Role,Values=web \
--parameters '{"action":["configure"],"mode":["ec2"],"optionalConfigurationSource":["ssm"],"optionalConfigurationLocation":["AmazonCloudWatch-linux"],"optionalRestart":["yes"]}'
aws logs describe-log-streams --log-group-name /app/nginx/access --query 'logStreams[].logStreamName'
# expected: ["i-0aaa...", "i-0bbb...", "i-0ccc..."]
Ravindra Bagale's Tip
Auto Scaling group साठी install आणि fetch-config commands launch template च्या user data मध्ये ठेवा, किंवा agent AMI मध्येच टाका. मग प्रत्येक नवीन server पहिल्या मिनिटापासून logs पाठवतो.
8. Step 6: retention
- CloudWatch → Log groups →
/app/nginx/accesstick → Actions → Edit retention setting(s) → 1 month (30 days) → Save. - CLI:
aws logs put-retention-policy --log-group-name /app/nginx/error --retention-in-days 30. - Verify: Retention column मध्ये Never expire ऐवजी 1 month दिसतं.
9. Step 7: Logs Insights ने सगळं शोधा
हे का लागतं?
Streams मधून scroll करणं slow आहे. Logs Insights ही छोटी query language आहे जी एक किंवा अनेक log groups चे सगळे streams एकाच वेळी शोधते.
कसं करायचं (step by step)
- CloudWatch → Logs Insights. Log group
/app/nginx/accessselect करा. Time range: 1h. - खालची query paste करा आणि Run query करा. सगळ्यात सोप्यापासून सुरू करा.
# 1. latest 20 lines from all servers
fields @timestamp, @logStream, @message
| sort @timestamp desc
| limit 20
# 2. only 404 and 5xx lines
fields @timestamp, @logStream, @message
| filter @message like / 404 / or @message like / 50[0-9] /
| sort @timestamp desc
# 3. requests per server (which server gets the most?)
stats count(*) as requests by @logStream
| sort requests desc
# 4. errors per 5 minutes, ready for a graph
filter @message like / 50[0-9] /
| stats count(*) as errors by bin(5m)
# 5. top client IPs (nginx combined format: IP is the first word)
parse @message "* - * [*] \"* * *\" * *" as ip, user, time, method, path, proto, status, bytes
| stats count(*) as hits by ip
| sort hits desc
| limit 10
Verify: query 3 प्रत्येक instance ID ची एक row दाखवते, query 2 तुम्ही बनवलेल्या /nope च्या 404 lines दाखवते.
Bonus: logs मधल्या errors वर alarm (metric filter)
- Log group
/app/nginx/access→ Actions → Create metric filter. - Filter pattern:
[ip, id, user, ts, request, status=5*, size]. Test करा, Next. - Filter name
nginx-5xx, namespaceApp/Web, metric nameNginx5xx, value1, default value0. Create. App/Web Nginx5xxवर alarm, statistic Sum, 5 minutes, >10, SNSops-alerts.
10. Cleanup
/app/nginx/accessआणि/app/nginx/errorlog groups delete करा (Actions → Delete log group(s)).- Metric filter alarm आणि parameter delete करा:
aws ssm delete-parameter --name AmazonCloudWatch-linux. - Agent stop करा (
amazon-cloudwatch-agent-ctl -a stop) किंवा servers terminate करा. का: agent custom metrics पाठवत राहतो, त्यांचं billing होतं.
11. Interview questions
प्र. CloudWatch agent ला कोणती policy लागते?
EC2 instance role वर CloudWatchAgentServerPolicy (SSM ने manage करायचं असेल तर AmazonSSMManagedInstanceCore पण).
प्र. कोणत्या server ने log line लिहिली हे कसं ओळखायचं?
log_stream_name {instance_id} वापरा, म्हणजे प्रत्येक instance स्वतःच्या stream मध्ये लिहितो; Logs Insights मध्ये @logStream वापरा.
प्र. Log group चा default retention काय?
Never expire. नेहमी retention set करा.
प्र. 100 servers वर agent कसा install करायचा?
Systems Manager Run Command: install साठी AWS-ConfigureAWSPackage, Parameter Store मधल्या config सह AmazonCloudWatch-ManageAgent, tag ने target.
घरी करून बघा
- Role आणि Role=web tag सह दोन servers launch करा. SSM ने दोन्हीवर agent install आणि configure करा.
- Logs Insights query 3 चालवा आणि दोन्ही instance IDs दिसतात याची खात्री करा.
- Config मध्ये /var/log/secure जोडा आणि
filter @message like /Failed password/ने failed SSH logins शोधा.
थोडक्यात सांगायचं तर
- Log group = folder; log stream = एक source; stream name म्हणून {instance_id} वापरा.
- CloudWatchAgentServerPolicy असलेला role, access keys कधीच नाही.
- पहिल्या server साठी wizard, सगळ्यांसाठी Parameter Store मधला JSON.
- SSM Run Command tag ने अनेक servers वर agent install आणि configure करतो.
- Retention set करा; Logs Insights ने शोधा; metric filters ने alarm.
सराव Tasks
Bavaria Motors हा म्युनिक मधला ऑटोमोबाईल व्यवसाय आहे. Lukas Becker त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-central-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 12
सोपं Log group बनवा
का: Log group एका app च्या सगळ्या servers चे log streams ठेवतो.
काय करायचं: /bavariamotors/web log group बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Log मध्ये errors शोधा
का: grep फक्त शब्द असलेल्या lines दाखवतो, त्यामुळे problems पटकन सापडतात.
काय करायचं: /var/log/bavariamotors/app.log मधल्या ERROR असलेल्या सगळ्या lines दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Namespace मधले metrics दाखवा
का: Service साठी AWS कोणते metrics गोळा करतो ते पाहा.
काय करायचं: AWS/EC2 namespace मधले metrics दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Instance reboot करा
का: Reboot मध्ये disks व IPs तेच राहतात, stop/start ने public IP बदलू शकतो.
काय करायचं: i-040cb0cd42a011a2b instance reboot करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Log retention ठरवा
का: Retention नसल्यास logs कायम राहतात व खर्च चालू राहतो.
काय करायचं: /bavariamotors/web मधले logs 30 दिवस ठेवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Logs live पाहा
का: aws logs tail --follow म्हणजे CloudWatch Logs साठी tail -f.
काय करायचं: /aws/lambda/bavariamotors-orders-fn log group live follow करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Function ला logs लिहू द्या
का: या actions शिवाय Lambda logs CloudWatch मध्ये दिसत नाहीत.
काय करायचं: फक्त arn:aws:logs:*:*:* वर logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Log च्या शेवटच्या lines पाहा
का: नवे errors log च्या शेवटी असतात. पूर्ण file क्वचितच लागते.
काय करायचं: /var/log/bavariamotors/app.log च्या फक्त शेवटच्या 20 lines दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Custom metric publish करा
का: Custom metrics ने business numbers वर graph व alarm करता येतो.
काय करायचं: Namespace BavariaMotors/Shop मध्ये OrdersPlaced metric value 6 सह publish करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Instance status checks तपासा
का: System व instance status checks AWS hardware की तुमच्या OS मध्ये problem ते सांगतात.
काय करायचं: Instance i-040cb0cd42a011a2b चे status checks दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Logs मध्ये errors शोधा
का: filter-log-events group मधले सगळे streams एकदम शोधतो.
काय करायचं: /bavariamotors/web मध्ये ERROR pattern जुळणारे events शोधा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड CPU alarm बनवा
का: Alarm metric पाहतो व users ला कळण्याआधी तुम्हाला कळवतो.
काय करायचं: bavariamotors-cpu-high alarm बनवा: AWS/EC2 CPUUtilization, 300 seconds चा Average, 1 evaluation period, GreaterThanThreshold 80, InstanceId=i-040cb0cd42a011a2b साठी, arn:aws:sns:eu-central-1:106249807804:bavariamotors-alerts ला notify.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.



![उजळणी card: CloudWatch Logs Insights. 5 servers चे streams scroll करणं slow. एका query ने सगळं शोधावं. Logs Insights म्हणजे एक किंवा अनेक log groups वरची छोटी query language. Log group आणि time range निवडा, fields / filter / stats लिहा, Run query. filter @message like / 50[0-9] / सगळ्या servers च्या 5xx lines दाखवतो.](../../../aws/ravi-sirs-cards/cards/mr/rev-cw-logs-insights.webp)








अजून cards: Ravi Sir's Cards.