Ravindra BagaleCourses & study guides English

AWS CLI CloudWatch Commands: Metrics, Alarms आणि Logs

Systems वर लक्ष: metrics वाचा, स्वतःचे numbers push करा, alarms लावा, logs ठेवा आणि Logs Insights ने शोधा.

या chapter मध्ये तुम्ही काय शिकाल

  • Metrics list आणि read
  • Custom metric
  • Alarm बनवा
  • Log groups आणि retention
  • Logs tail आणि query

1. मोठं चित्र: गाडीचा dashboard

हे का लागतं?

गाडीचा dashboard speed, fuel दाखवतो; काही चुकलं की warning light. CloudWatch metrics = gauges, alarms = warning lights, logs = प्रवासाची diary.

हे काय आहे?

Metrics, alarms aws cloudwatch मध्ये. Logs aws logs मध्ये.

कसं करायचं (step by step)

Monitoring workflowlist-metrics ने नावं शोधाget-metric-statisticsput-metric-alarmSNS topic ला alertlogs tail / start-query
Alarm कोणाला तरी सांगेल तरच उपयोग.

2. Metrics शोधा आणि वाचा

हे का लागतं?

मागच्या तासात server किती busy होता ते जाणायचं.

हे काय आहे?

प्रत्येक metric ला namespace (AWS/EC2), name (CPUUtilization), dimensions (InstanceId). get-metric-statistics period नुसार numbers देतो.

कसं करायचं (step by step)

  1. EC2 CPU metrics list.
aws cloudwatch list-metrics --namespace AWS/EC2 --metric-name CPUUtilization --query "Metrics[].Dimensions[0].Value" --output text

अपेक्षित output:

i-0abc123def4567890
  1. एका तासाचा average CPU.
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization --dimensions Name=InstanceId,Value=i-0abc123def4567890 --start-time $(date -u -d "-1 hour" +%FT%TZ) --end-time $(date -u +%FT%TZ) --period 300 --statistics Average --query "Datapoints[].Average" --output text

अपेक्षित output:

2.1  1.9  3.4  2.2

3. Custom metrics

हे का लागतं?

तुमचे business numbers (orders per minute) AWS ला माहीत नाहीत.

हे काय आहे?

put-metric-data तुमची value तुमच्या namespace ला पाठवतो. मग ती इतर metric सारखीच.

कसं करायचं (step by step)

  1. Value पाठवा.
aws cloudwatch put-metric-data --namespace MyApp --metric-name Orders --value 42 --unit Count

अपेक्षित output:

(no output means success)
  1. आहे का verify.
aws cloudwatch list-metrics --namespace MyApp --query "Metrics[].MetricName" --output text

अपेक्षित output:

Orders

4. Alarms

हे का लागतं?

दिवसभर graphs बघू शकत नाही. CPU जास्त राहिला की message हवा.

हे काय आहे?

put-metric-alarm threshold, periods आणि SNS topic सारखी action. States: OK, ALARM, INSUFFICIENT_DATA.

कसं करायचं (step by step)

  1. Alarm बनवा.
aws cloudwatch put-metric-alarm --alarm-name cli-high-cpu --namespace AWS/EC2 --metric-name CPUUtilization --dimensions Name=InstanceId,Value=i-0abc123def4567890 --statistic Average --period 300 --evaluation-periods 2 --threshold 80 --comparison-operator GreaterThanThreshold --alarm-actions arn:aws:sns:ap-south-1:111122223333:cli-alerts

अपेक्षित output:

(no output means success)
  1. State force करून test.
aws cloudwatch set-alarm-state --alarm-name cli-high-cpu --state-value ALARM --state-reason "test"
aws cloudwatch describe-alarms --alarm-names cli-high-cpu --query "MetricAlarms[0].StateValue" --output text

अपेक्षित output:

ALARM

5. Logs: groups, retention, tail आणि Insights

हे का लागतं?

कायम ठेवलेले logs पैसे खातात; लाखो lines मध्ये एक error शोधायची.

हे काय आहे?

Log group मध्ये streams. put-retention-policy जुना data delete. tail live. start-query Logs Insights query.

कसं करायचं (step by step)

  1. Group बनवा, 14 दिवस retention.
aws logs create-log-group --log-group-name /cli/app
aws logs put-retention-policy --log-group-name /cli/app --retention-in-days 14
aws logs describe-log-groups --log-group-name-prefix /cli --query "logGroups[].[logGroupName,retentionInDays]" --output text

अपेक्षित output:

/cli/app  14
  1. Log line लिहा.
aws logs create-log-stream --log-group-name /cli/app --log-stream-name s1
aws logs put-log-events --log-group-name /cli/app --log-stream-name s1 --log-events timestamp=$(date +%s000),message="ERROR payment failed"

अपेक्षित output:

{"nextSequenceToken": "..."}
  1. Follow आणि filter.
aws logs tail /cli/app --since 1h --filter-pattern ERROR

अपेक्षित output:

2026-10-24T06:00:01 s1 ERROR payment failed
  1. Insights query.
Q=$(aws logs start-query --log-group-name /cli/app --start-time $(date -d "-1 hour" +%s) --end-time $(date +%s) --query-string "fields @message | filter @message like /ERROR/ | limit 5" --query queryId --output text)
sleep 3; aws logs get-query-results --query-id $Q --query status

अपेक्षित output:

"Complete"

6. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये

हे का लागतं?

Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.

हे काय आहे?

प्रत्येक CLI command म्हणजे एक API call. उदा. aws cloudwatch put-metric-data --namespace MyApp --metric-name Orders --value 42 म्हणजे Put metric API.

कसं करायचं (step by step)

हीच action (Metric पाठवा) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.

StackCode
Python (boto3)boto3.client("cloudwatch").put_metric_data(Namespace="MyApp",MetricData=[{"MetricName":"Orders","Value":42}])
Node.js (v3)await cw.send(new PutMetricDataCommand({Namespace:"MyApp",MetricData:[{MetricName:"Orders",Value:42}]}));
Java (v2)cw.putMetricData(r -> r.namespace("MyApp").metricData(MetricDatum.builder().metricName("Orders").value(42.0).build()));
Go (v2)c.PutMetricData(ctx, &cloudwatch.PutMetricDataInput{Namespace: aws.String("MyApp"), MetricData: []types.MetricDatum{{MetricName: aws.String("Orders"), Value: aws.Float64(42)}}})
.NETawait cw.PutMetricDataAsync(new PutMetricDataRequest{Namespace="MyApp",MetricData=new(){new MetricDatum{MetricName="Orders",Value=42}}});
PHP$cw->putMetricData(["Namespace"=>"MyApp","MetricData"=>[["MetricName"=>"Orders","Value"=>42]]]);

7. काहीही खर्च चालू राहू नये म्हणून cleanup

हे का लागतं?

चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.

हे काय आहे?

उलट्या क्रमाने delete करा: आधी children, मग parents.

कसं करायचं (step by step)

  1. Alarm delete.
aws cloudwatch delete-alarms --alarm-names cli-high-cpu

अपेक्षित output:

(no output means success)
  1. Log group delete.
aws logs delete-log-group --log-group-name /cli/app

अपेक्षित output:

(no output means success)
  1. Verify.
aws cloudwatch describe-alarms --alarm-names cli-high-cpu --query "MetricAlarms" --output text

अपेक्षित output:

(no output means success)
  1. Custom metrics delete होत नाहीत; data नसेल तर 15 महिन्यांनी जातात. काय उरलं ते बघा.
aws cloudwatch list-metrics --namespace MyApp --query "length(Metrics)"

अपेक्षित output:

1

Ravindra Bagale's Tip

get-metric-statistics ला UTC ISO times लागतात. date -u +%FT%TZ वापरा, नाहीतर Datapoints रिकामे.

8. मुलाखत प्रश्न आणि उत्तरं

प्र. Namespace, metric, dimension?

Group, measure, filter.

प्र. Alarm states?

OK, ALARM, INSUFFICIENT_DATA.

प्र. Alarm action test कसा?

set-alarm-state.

प्र. Retention का?

Default कायम; cost कमी.

प्र. Logs Insights काय?

Logs वर query language.

घरी करून बघा

  1. 5 मिनिटं दर मिनिटाला custom metric पाठवून average बघा.
  2. त्यावर alarm बनवून ALARM मध्ये force करा.

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

  1. cloudwatch = metrics, alarms.
  2. logs = log groups.
  3. UTC times.
  4. set-alarm-state ने test.
  5. Retention लावा.

सराव Tasks

या scenario बद्दल

Kolhapuri Chappal Co हा कोल्हापूर मधला पादत्राणे व्यवसाय आहे. Sachin Mane त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं 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 दाबा.

सोपं SNS topic बनवा

का: Topic म्हणजे channel: एकदा publish, सगळ्या subscribers ना मिळतं.

काय करायचं: kolhapurichappal-alerts topic बनवा.

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

सोपं Firing alarms दाखवा

का: Incident मध्ये आधी ALARM state मधले alarms पाहा.

काय करायचं: फक्त ALARM state असलेले alarms describe करा.

कसं करायचं:
  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-0da02400dac111a2b instance reboot करा.

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

सोपं एका topic वर publish

का: Alerting app ला फक्त publish लागतं.

काय करायचं: फक्त arn:aws:sns:ap-south-1:118690042069:kolhapurichappal-alerts वर sns:Publish allow करा.

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

मध्यम Custom metric publish करा

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

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

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

मध्यम Email subscribe करा

का: Email subscribers नी messages मिळण्याआधी confirm link दाबावी लागते.

काय करायचं: ops@kolhapurichappal.in ला email ने arn:aws:sns:ap-south-1:118690042069:kolhapurichappal-alerts वर subscribe करा.

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

मध्यम Target health तपासा

का: Targets unhealthy असल्यास site 502/503 errors दाखवते.

काय करायचं: arn:aws:elasticloadbalancing:ap-south-1:118690042069:targetgroup/kolhapurichappal-tg/6d0ecf831eec9f09 मधल्या targets चं health दाखवा.

कसं करायचं:
  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 दाबा.

मध्यम Kubernetes LoadBalancer Service

का: LoadBalancer Service ला AWS load balancer मिळतो.

काय करायचं: app: web select करणारी LoadBalancer Service, port 80 → targetPort 8080.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

अवघड CPU alarm बनवा

का: Alarm metric पाहतो व users ला कळण्याआधी तुम्हाला कळवतो.

काय करायचं: kolhapurichappal-cpu-high alarm बनवा: AWS/EC2 CPUUtilization, 300 seconds चा Average, 1 evaluation period, GreaterThanThreshold 80, InstanceId=i-0da02400dac111a2b साठी, arn:aws:sns:ap-south-1:118690042069:kolhapurichappal-alerts ला notify.

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

अवघड Alarm ने instance auto-recover करा

का: System check fail झाल्यास recover action instance healthy hardware वर हलवतो.

काय करायचं: kolhapurichappal-recover alarm बनवा: AWS/EC2 StatusCheckFailed_System, 60 s चा Maximum, 2 periods, GreaterThanOrEqualToThreshold 1, InstanceId=i-0da02400dac111a2b, action arn:aws:automate:ap-south-1:ec2:recover.

कसं करायचं:
  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 उघडतो.

CloudWatch alarms. दिवसभर graphs बघू शकत नाही. Alarm = threshold + periods + SNS action. States: OK, ALARM, INSUFFICIENT_DATA. set-alarm-state ने test.
उजळणी card: CloudWatch alarms · PNG download करा · Card page उघडा
Logs tail, query. लाखो lines मध्ये एक error. Retention लावा; default कायम. Filter सह live follow. Insights: start-query मग get-query-results.
उजळणी card: Logs tail, query · PNG download करा · Card page उघडा
Metrics vs Logs. वेळेनुसार numbers. / वेळेसह text lines.
तुलना: Metrics vs Logs · PNG download करा · Card page उघडा
Datapoints रिकामे का?. Times UTC ISO 8601 हवेत. date -u +%FT%TZ वापरा. Dimensions अगदी जुळायला हवेत.
मुलाखत card: Datapoints रिकामे का? · PNG download करा · Card page उघडा

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