Ravindra BagaleCourses & study guides English

अनेक 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 चा सुद्धा.

अनेक servers चे logs एकाच ठिकाणीweb1, web2, web3 …nginx / app logsCloudWatch agentप्रत्येक server वरIAM rolePutLogEvents ला परवानगीLog group /app/nginx/accessप्रत्येक instance ला एक streamLogs Insightsएक query, सगळे servers
एका log line चा प्रवास, वरून खाली.

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 किंवा जास्त.
StackServer वरची 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 WindowsWindows 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)

  1. IAM → Roles → Create role उघडा.
  2. Trusted entity type: AWS service. Use case: EC2. Next.
  3. CloudWatchAgentServerPolicy search करून tick करा.
  4. AmazonSSMManagedInstanceCore search करून tick करा. Next.
  5. Role name: EC2-CloudWatchAgent-Role. Create role.
  6. EC2 → प्रत्येक server select करा → Actions → Security → Modify IAM role → EC2-CloudWatchAgent-Role निवडा → Update IAM role.
  7. 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)

  1. 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)

  1. sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard चालवा.
  2. OS: linux. EC2 की on-premises: EC2. User: cwagent. cwagent का: agent root म्हणून चालू नये.
  3. StatsD: no. CollectD: no. का: आपण ते वापरत नाही; collectd ला package पण लागतो, नाहीतर agent start होत नाही.
  4. Host metrics monitor: yes. CPU per core: no. EC2 dimensions: yes. Aggregate: yes. Resolution: 60s. Level: Basic (mem आणि disk).
  5. Existing config: no. Log files monitor: yes.
  6. Log file path: /var/log/nginx/access.log. Log group: /app/nginx/access. Log group class: STANDARD. Stream name: {instance_id}. Retention: 30.
  7. अजून एक: /var/log/nginx/error.log → /app/nginx/error, तेच stream name आणि retention. मग आणखी files no.
  8. Config SSM Parameter Store मध्ये ठेवायचा: yes, नाव AmazonCloudWatch-linux. का: Step 5 मध्ये इतर servers तोच config download करू शकतात.
  9. 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_daysLogs कायमचे साठत राहत नाहीत
resources ["/"]फक्त root disk; extra volume साठी "/data" जोडा
  1. या 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
  1. थोडं traffic करा: for i in $(seq 1 50); do curl -s -o /dev/null http://localhost/; curl -s -o /dev/null http://localhost/nope; done.
  2. Verify: CloudWatch → Log groups → /app/nginx/access → i-0abc… सारख्या नावाचा stream, त्यात तुमच्या requests (200 आणि 404).
  3. 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)

  1. प्रत्येक server ला EC2-CloudWatchAgent-Role role (Step 1) आणि Role = web tag द्या.
  2. Systems Manager → Fleet Manager उघडा. सगळे servers Online दिसायला हवेत. (Amazon Linux आणि Ubuntu AMIs वर SSM agent आधीच असतो; त्याला outbound HTTPS लागतं.)
  3. Systems Manager → Run Command → Run command. Document: AWS-ConfigureAWSPackage.
  4. Action: Install. Name: AmazonCloudWatchAgent. Version: latest.
  5. Targets: Specify instance tags → Role = web. Tags का: नवीन web servers command न बदलता यात येतात.
  6. Output options: lab साठी S3 untick. Run. Verify: प्रत्येक target Success दाखवतो.
  7. पुन्हा Run command. Document: AmazonCloudWatch-ManageAgent. Action configure, Mode ec2, Optional Configuration Source ssm, Optional Configuration Location AmazonCloudWatch-linux, Optional Restart yes. तोच tag target. Run.
  8. Verify: /app/nginx/access log 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

  1. CloudWatch → Log groups → /app/nginx/access tick → Actions → Edit retention setting(s) → 1 month (30 days) → Save.
  2. CLI: aws logs put-retention-policy --log-group-name /app/nginx/error --retention-in-days 30.
  3. 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)

  1. CloudWatch → Logs Insights. Log group /app/nginx/access select करा. Time range: 1h.
  2. खालची 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)

  1. Log group /app/nginx/access → Actions → Create metric filter.
  2. Filter pattern: [ip, id, user, ts, request, status=5*, size]. Test करा, Next.
  3. Filter name nginx-5xx, namespace App/Web, metric name Nginx5xx, value 1, default value 0. Create.
  4. App/Web Nginx5xx वर alarm, statistic Sum, 5 minutes, > 10, SNS ops-alerts.

10. Cleanup

  1. /app/nginx/access आणि /app/nginx/error log groups delete करा (Actions → Delete log group(s)).
  2. Metric filter alarm आणि parameter delete करा: aws ssm delete-parameter --name AmazonCloudWatch-linux.
  3. 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.

घरी करून बघा

  1. Role आणि Role=web tag सह दोन servers launch करा. SSM ने दोन्हीवर agent install आणि configure करा.
  2. Logs Insights query 3 चालवा आणि दोन्ही instance IDs दिसतात याची खात्री करा.
  3. Config मध्ये /var/log/secure जोडा आणि filter @message like /Failed password/ ने failed SSH logins शोधा.

थोडक्यात सांगायचं तर

  1. Log group = folder; log stream = एक source; stream name म्हणून {instance_id} वापरा.
  2. CloudWatchAgentServerPolicy असलेला role, access keys कधीच नाही.
  3. पहिल्या server साठी wizard, सगळ्यांसाठी Parameter Store मधला JSON.
  4. SSM Run Command tag ने अनेक servers वर agent install आणि configure करतो.
  5. Retention set करा; Logs Insights ने शोधा; metric filters ने alarm.

सराव Tasks

या scenario बद्दल

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 बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं Log मध्ये errors शोधा

का: grep फक्त शब्द असलेल्या lines दाखवतो, त्यामुळे problems पटकन सापडतात.

काय करायचं: /var/log/bavariamotors/app.log मधल्या ERROR असलेल्या सगळ्या lines दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Namespace मधले metrics दाखवा

का: Service साठी AWS कोणते metrics गोळा करतो ते पाहा.

काय करायचं: AWS/EC2 namespace मधले metrics दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं Instance reboot करा

का: Reboot मध्ये disks व IPs तेच राहतात, stop/start ने public IP बदलू शकतो.

काय करायचं: i-040cb0cd42a011a2b instance reboot करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Log retention ठरवा

का: Retention नसल्यास logs कायम राहतात व खर्च चालू राहतो.

काय करायचं: /bavariamotors/web मधले logs 30 दिवस ठेवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Logs live पाहा

का: aws logs tail --follow म्हणजे CloudWatch Logs साठी tail -f.

काय करायचं: /aws/lambda/bavariamotors-orders-fn log group live follow करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Function ला logs लिहू द्या

का: या actions शिवाय Lambda logs CloudWatch मध्ये दिसत नाहीत.

काय करायचं: फक्त arn:aws:logs:*:*:* वर logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents allow करा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

मध्यम Log च्या शेवटच्या lines पाहा

का: नवे errors log च्या शेवटी असतात. पूर्ण file क्वचितच लागते.

काय करायचं: /var/log/bavariamotors/app.log च्या फक्त शेवटच्या 20 lines दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Custom metric publish करा

का: Custom metrics ने business numbers वर graph व alarm करता येतो.

काय करायचं: Namespace BavariaMotors/Shop मध्ये OrdersPlaced metric value 6 सह publish करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Instance status checks तपासा

का: System व instance status checks AWS hardware की तुमच्या OS मध्ये problem ते सांगतात.

काय करायचं: Instance i-040cb0cd42a011a2b चे status checks दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Logs मध्ये errors शोधा

का: filter-log-events group मधले सगळे streams एकदम शोधतो.

काय करायचं: /bavariamotors/web मध्ये ERROR pattern जुळणारे events शोधा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. 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.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: Log group, stream आणि retention. पाच servers, एक error: logs एका ठिकाणी नसतील तर पाचही मध्ये SSH. Log event = एक line. Log stream = एका source च्या lines. Log group = streams चा folder. Retention = किती दिवस ठेवायचं. प्रत्येक instance ला एक stream आणि retention set करा; default Never expire. Group /app/nginx/access मध्ये streams i-0aaa, i-0bbb, i-0ccc. Retention 30 दिवस.
उजळणी card: Log group, stream आणि retention · PNG download करा
उजळणी card: CloudWatch agent साठी IAM role. Agent ला logs लिहायची परवानगी सिद्ध करावी लागते. Servers वरच्या access keys leak होऊ शकतात. EC2 role आपोआप short-lived keys देतो. CloudWatchAgentServerPolicy metrics आणि logs पाठवू देते. IAM › Create role › EC2 › CloudWatchAgentServerPolicy आणि AmazonSSMManagedInstanceCore जोडा. EC2-CloudWatchAgent-Role web1 ला attach → agent /app/nginx/access मध्ये लिहितो.
उजळणी card: CloudWatch agent साठी IAM role · PNG download करा
उजळणी card: CloudWatch agent config. EC2 ला memory, disk space किंवा log files दिसत नाहीत. Agent server च्या आत चालून ते पाठवतो. JSON file मध्ये metrics (mem, disk) आणि log files, त्यांचा log group, stream name आणि retention. एकदा wizard चालवा किंवा JSON लिहा, मग fetch-config ने load करा. -a status ने तपासा → "running". Logs मिनिटात दिसतात.
उजळणी card: CloudWatch agent config · PNG download करा
उजळणी 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 दाखवतो.
उजळणी card: CloudWatch Logs Insights · PNG download करा
तुलना: Manual agent install vs SSM Run Command install. Manual agent install: Server मध्ये SSH करून CloudWatch agent हाताने install आणि configure. SSM Run Command install: Systems Manager एकाच वेळी अनेक servers वर install आणि config चालवतो.
तुलना: Manual agent install vs SSM Run Command install · PNG download करा
तुलना: Config wizard vs JSON config file. Config wizard: प्रश्न विचारून agent config लिहिणारा program. JSON config file: हाताने लिहिलेला किंवा बदललेला agent config.
तुलना: Config wizard vs JSON config file · PNG download करा
तुलना: Log group vs Log stream. Log group: एकाच प्रकारच्या streams चा folder, एक retention. Log stream: एका source च्या सगळ्या lines, उदा. एक instance.
तुलना: Log group vs Log stream · PNG download करा
तुलना: Logs Insights vs Metric filter. Logs Insights: Log groups वर चालवायची query language. Metric filter: जुळणाऱ्या log lines चा metric बनवणारा rule.
तुलना: Logs Insights vs Metric filter · PNG download करा
मुलाखत card: EC2 वर CloudWatch agent ला कोणती IAM policy लागते?. EC2 instance role वर CloudWatchAgentServerPolicy. Role short-lived keys देतो; servers वर ठेवलेल्या access keys leak होतात. Systems Manager ने agent install करायचा असेल तर AmazonSSMManagedInstanceCore पण.
मुलाखत card: EC2 वर CloudWatch agent ला कोणती IAM policy लागते? · PNG download करा
मुलाखत card: 10 servers चे logs. कोणत्या server ने line लिहिली हे कसं कळेल?. log_stream_name {instance_id} ठेवा, प्रत्येक server स्वतःचा stream लिहितो. Customer complaint साठी नक्की server हवा, Auto Scaling ने काढला तरी. Logs Insights मध्ये @logStream वाचा, किंवा stats count(*) by @logStream.
मुलाखत card: 10 servers चे logs. कोणत्या server ने line लिहिली हे कसं कळेल? · PNG download करा
मुलाखत card: 100 servers वर CloudWatch agent कसा install करायचा?. Systems Manager Run Command, tag ने target, config Parameter Store मध्ये. SSH नाही, port 22 नाही, आणि सगळ्यांना तोच config. AWS-ConfigureAWSPackage (AmazonCloudWatchAgent install), मग AmazonCloudWatch-ManageAgent (configure, ssm).
मुलाखत card: 100 servers वर CloudWatch agent कसा install करायचा? · PNG download करा
मुलाखत card: CloudWatch log group चा default retention काय?. Never expire. Delete करेपर्यंत logs राहतात. साठवलेल्या logs चं दर महिन्याला billing, bill वाढत राहतं. Access logs ला 30 दिवस, audit logs ला 90+.
मुलाखत card: CloudWatch log group चा default retention काय? · PNG download करा

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