CloudWatch Alarm ने EC2 Instance Stop, Start, Reboot किंवा Recover कसा करायचा
Amazon CloudWatch सोप्या भाषेत मध्ये alarm फक्त email पाठवत होता. इथे alarm स्वतः काम करतो: idle server stop करतो, अडकलेला reboot करतो किंवा healthy hardware वर हलवतो. आणि एक नेहमीचा प्रश्न: "Alarm stopped instance start करू शकतो का?" थोडक्यात उत्तर: नाही. योग्य दोन पद्धती इथे शिकाल.
या chapter मध्ये तुम्ही काय शिकाल
- चार EC2 alarm actions: stop, terminate, reboot, recover
- Lab: CPU कमी राहिला की instance आपोआप stop
- "start" alarm action का नाही
- EventBridge Scheduler ने ठरलेल्या वेळी stopped instance start
- Alarm वरून Lambda function ने instance start
1. गोष्ट: विसरलेला test server
पुण्यातला एक developer शुक्रवारी Java build test करायला c5.2xlarge start करतो. तो विसरतो. सोमवारी bill मध्ये 60+ तास काहीही न करणारा मोठा server दिसतो.
दुसरी गोष्ट: payroll server रोज रात्री 1 ते 3 चालतो, मग idle बसतो. Team ला तो दिवसा बंद आणि रात्री 1 ला पुन्हा चालू हवा आहे.
दोन्ही problems alarms आणि schedules ने सुटतात. कोणालाही काही लक्षात ठेवायची गरज नाही.
2. चार EC2 alarm actions
हे का लागतं?
Email आला तरी कोणीतरी login करून click करावं लागतं. सोप्या, safe fixes साठी alarm ने लगेच action घ्यावा, अगदी रात्री 3 ला सुद्धा.
हे काय आहे?
EC2 alarm action म्हणजे alarm एका instance वर दाबू शकणारं बटण. ते per-instance metric (ज्यात InstanceId dimension आहे) बघणाऱ्या alarms वर चालतं.
| Action | काय होतं | कधी वापरायचं | काय राहतं |
|---|---|---|---|
| Stop | Instance बंद; compute billing थांबतं | Idle dev/test servers | Instance ID, EBS data; public IP बदलतो |
| Terminate | Instance कायमचा delete | संपलेले batch jobs | काहीच नाही (root EBS default ने delete) |
| Reboot | त्याच host वर OS restart | Instance status check fail (OS अडकला) | सगळं, तेच IPs |
| Recover | AWS नवीन hardware वर हलवतं | System status check fail (AWS hardware) | Instance ID, private IP, Elastic IP, metadata |
Ravindra Bagale's Tip
Terminate undo होत नाही. महत्त्वाच्या servers वर termination protection चालू ठेवा; protected instance वर terminate action काही करत नाही.
3. Lab 1: idle instance आपोआप stop करा
नियम: average CPU 1 तास 5% खाली राहिला तर instance stop करायचा.
या values का: खरा idle Linux server 0-2% CPU वर असतो. 5% मुळे छोट्या background jobs ना जागा राहते. 1 तास (5 minutes चे 12 periods) मुळे छोट्या coffee break मध्ये server stop होत नाही.
- EC2 → Instances उघडा, test instance select करा, त्याचा Instance ID copy करा.
- Monitoring tab उघडा. CPU graph वरच्या ⋮ किंवा Alarm status शेजारच्या + वर click करा. (किंवा CloudWatch → Alarms → Create alarm.)
- Metric: तुमच्या instance चा EC2 → Per-Instance Metrics → CPUUtilization.
- Statistic Average, period 5 minutes.
- Condition:
5पेक्षा Lower. - Datapoints to alarm:
12out of12. का: तासातले सगळे 12 boxes शांत हवेत. - Missing data: Treat missing data as ignore. का: stop नंतर CPU येत नाही; "ignore" शेवटची state ठेवतो, इकडे-तिकडे उड्या मारत नाही.
- Next. EC2 action मध्ये Add EC2 action. Alarm state trigger: In alarm. Action: Stop this instance.
ops-alertsSNS topic ला notification पण जोडा, म्हणजे server का बंद झाला हे कळेल.- Name:
dev1-idle-stop. Create alarm. - Verify (fast test): lab साठी alarm
1out of1आणि threshold50करा. Server idle ठेवा. 5-10 minutes मध्ये alarm वाजतो आणि instance state Stopping → Stopped दिसते.
हाच alarm CLI ने (region ap-south-1). Action एक ARN आहे:
aws cloudwatch put-metric-alarm --alarm-name dev1-idle-stop \
--namespace AWS/EC2 --metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-0abc1234567890def \
--statistic Average --period 300 --threshold 5 \
--comparison-operator LessThanThreshold \
--evaluation-periods 12 --datapoints-to-alarm 12 \
--treat-missing-data ignore \
--alarm-actions arn:aws:automate:ap-south-1:ec2:stop
# other actions: arn:aws:automate:ap-south-1:ec2:terminate
# arn:aws:automate:ap-south-1:ec2:reboot
# arn:aws:automate:ap-south-1:ec2:recover
Ravindra Bagale's Tip
पहिल्यांदा console EC2 actions साठी service-linked role बनवतो. नवीन account मध्ये CLI ने action fail झाला तर एकदा console मधून EC2 action असलेला alarm बनवा.
4. Alarm stopped instance start करू शकतो का?
हे का लागतं?
Payroll server रात्री 1 ला परत चालू व्हायला हवा. लोक "Start this instance" alarm action शोधतात. तो नसतो.
हे काय आहे?
सरळ उत्तर: CloudWatch alarm चे EC2 actions फक्त stop, terminate, reboot आणि recover आहेत. Start action नाही. कारण सोपं: stopped instance metrics पाठवत नाही, त्यामुळे त्याच्या metrics वरच्या alarm ला बघायला काहीच नसतं.
| गरज | योग्य tool | EC2 कसा start होतो |
|---|---|---|
| ठरलेल्या वेळी start (रोज रात्री 1) | EventBridge Scheduler | EC2 StartInstances API थेट call करतो |
| दुसरा metric line पार केला की start (queue मोठी, main server down) | CloudWatch alarm → Lambda (थेट Lambda action, किंवा SNS मार्गे) | Lambda code start_instances call करतो |
5. Lab 2: EventBridge Scheduler ने रोज instance start करा
- Amazon EventBridge → Scheduler → Schedules → Create schedule उघडा.
- Name:
payroll-start-1am. - Schedule pattern: Recurring schedule → Cron-based. Cron:
0 1 * * ? *. - Time zone: Asia/Calcutta. का: नाहीतर UTC मध्ये चालतो, 5.5 तास फरक.
- Flexible time window: Off. Next.
- Target: All APIs → EC2 search → StartInstances.
- Input:
{"InstanceIds": ["i-0abc1234567890def"]}. Next. - Permissions: Create new role for this schedule. का: Scheduler ला ec2:StartInstances call करायची परवानगी लागते.
- Next → Create schedule.
- दुसरा schedule
payroll-stop-4am, cron0 4 * * ? *, target EC2 StopInstances. - पटकन verify: 3 minutes नंतरचा one-time schedule बनवा. त्या मिनिटाला instance state Pending → Running होते.
CLI version (role ने scheduler.amazonaws.com ला trust करायला हवं आणि ec2:StartInstances allow करायला हवं):
aws scheduler create-schedule --name payroll-start-1am \
--schedule-expression "cron(0 1 * * ? *)" \
--schedule-expression-timezone "Asia/Calcutta" \
--flexible-time-window Mode=OFF \
--target '{"Arn":"arn:aws:scheduler:::aws-sdk:ec2:startInstances",
"RoleArn":"arn:aws:iam::111122223333:role/SchedulerEc2StartStop",
"Input":"{\"InstanceIds\":[\"i-0abc1234567890def\"]}"}'
6. Lab 3: Lambda ने alarm वरून standby server start करा
गोष्ट: main web server चा health check fail होतो. तुमच्याकडे एक stopped standby server आहे. Main server चा alarm वाजला की standby start करायचा. (खऱ्या production मध्ये Auto Scaling group हे जास्त चांगलं करतो; हा lab pattern शिकवतो.)
- IAM → Roles → Create role. Trusted entity: AWS service → Lambda.
- AWSLambdaBasicExecutionRole attach करा. Name:
lambda-start-standby. Create. - Role उघडा → Add permissions → Create inline policy → JSON:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "ec2:StartInstances",
"Resource": "arn:aws:ec2:ap-south-1:111122223333:instance/i-0standby000000001"
}]
}
- Policy चं नाव
start-standby-only. फक्त एकच instance का: function दुसरं काहीही start करू शकणार नाही. - Lambda → Create function. Name
start-standby, runtime Python 3.12, existing rolelambda-start-standby. - हा code paste करा आणि Deploy करा:
import boto3, json
ec2 = boto3.client("ec2")
STANDBY = "i-0standby000000001"
def lambda_handler(event, context):
# works for a direct alarm action and for SNS
print(json.dumps(event)[:2000])
r = ec2.start_instances(InstanceIds=[STANDBY])
state = r["StartingInstances"][0]["CurrentState"]["Name"]
print("standby state:", state)
return state
- Function call करायची CloudWatch ला परवानगी द्या (CLI):
aws lambda add-permission --function-name start-standby \
--statement-id cw-alarm --action lambda:InvokeFunction \
--principal lambda.alarms.cloudwatch.amazonaws.com \
--source-arn arn:aws:cloudwatch:ap-south-1:111122223333:alarm:main-web-down
- Main server वर
main-web-downalarm: metricStatusCheckFailed, statistic Maximum, period 1 minute, threshold>= 1, 2 out of 2. - Actions मध्ये Lambda action → In alarm → function
start-standby. - दुसरा मार्ग: alarm SNS topic ला पाठवा आणि Lambda function त्या topic ला subscribe करा. एका alarm वर अनेक गोष्टी react व्हायच्या असतील तेव्हा वापरा.
- Test:
aws cloudwatch set-alarm-state --alarm-name main-web-down --state-value ALARM --state-reason test. - Verify: Lambda → Monitor → View CloudWatch logs मध्ये
standby state: pendingदिसतं, आणि standby instance Running होतो.
7. Cleanup
dev1-idle-stopआणिmain-web-downalarms delete करा.payroll-start-1am,payroll-stop-4amआणि test one-time schedule delete करा.- Lambda function,
lambda-start-standbyrole आणि scheduler role delete करा. - दोन्ही test instances stop किंवा terminate करा.
8. कोणत्या stack ला कोणता action?
| Server | योग्य action | का |
|---|---|---|
| Jenkins / build agent (Java, Go) | Stop when idle | Builds अधूनमधून; idle तासांचे पैसे |
| Python batch / ETL job | Terminate when done | Output S3 मध्ये; server टाकाऊ |
| nginx / Apache web server | Recover + Reboot | Users साठी तोच IP |
| MySQL on EC2 | Recover; never auto-terminate | Data त्यावरच |
| .NET / Node.js dev box | Scheduler stop 9 PM, start 9 AM | रात्री कोणी काम करत नाही |
9. Interview questions
प्र. CloudWatch alarm कोणते EC2 actions घेऊ शकतो?
Stop, terminate, reboot आणि recover.
प्र. Stopped EC2 instance आपोआप कसा start करायचा?
ठरलेल्या वेळी EventBridge Scheduler ने (EC2 StartInstances target), किंवा दुसऱ्या metric च्या alarm वरून StartInstances call करणाऱ्या Lambda ने.
प्र. Reboot की recover: कोणत्या check साठी कोणता?
Instance status check fail झाला तर reboot; system status check fail झाला तर recover.
घरी करून बघा
- Dev instance वर stop-when-idle alarm आणि सकाळी 9 चा Scheduler start बनवा. दुसऱ्या दिवशी सकाळी दोन्ही तपासा.
- Start action का नाही ते एका ओळीत लिहा.
थोडक्यात सांगायचं तर
- Alarm EC2 actions: stop, terminate, reboot, recover.
- Start action नाही; stopped instance metrics पाठवत नाही.
- ठरलेल्या वेळी start: EventBridge Scheduler → EC2 StartInstances.
- Event वर start: alarm → Lambda (थेट किंवा SNS मार्गे) → start_instances.
सराव Tasks
New York News Daily हा न्यूयॉर्क मधला मीडिया व्यवसाय आहे. Rachel Cohen त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे USD मध्ये मोजले जातात आणि AWS resources us-east-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 12
सोपं EBS volume चा snapshot घ्या
का: Snapshot म्हणजे एका disk चा त्या क्षणीचा backup.
काय करायचं: Volume vol-0ed12dd0530cfdeed चा snapshot "nightly nynewsdaily" description सह बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Volume detach करा
का: Disk rescue server वर हलवायला आधी detach करा.
काय करायचं: Volume vol-0ed12dd0530cfdeed detach करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं मोकळी disk जागा तपासा
का: Disk 100% भरल्यास apps व databases बंद पडतात.
काय करायचं: सगळ्या mounted disks ची मोकळी व वापरलेली जागा human-readable units मध्ये दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Disks ची list पाहा
का: EBS volume attach केल्यावर lsblk त्याचं device नाव दाखवतो.
काय करायचं: Server वरचे सगळे block devices (disks व partitions) दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Volume instance ला attach करा
का: Server ला volume दिसण्याआधी तो attach (त्याच AZ मध्ये) करावा लागतो.
काय करायचं: Volume vol-0ed12dd0530cfdeed ला instance i-00350cc21cb211a2b ला /dev/sdf device म्हणून attach करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Server पासून AMI बनवा
का: AMI म्हणजे पूर्ण server image. त्यापासून कधीही सारख्या copies launch करता येतात.
काय करायचं: Instance i-00350cc21cb211a2b पासून nynewsdaily-web-v1 नावाची AMI बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम नवा EBS volume बनवा
का: Extra data disks मुळे app data root disk पासून वेगळा राहतो.
काय करायचं: us-east-1a Availability Zone मध्ये 20 GiB gp3 volume बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम जुनी AMI delete करा
का: जुन्या AMIs व snapshots चा दर महिन्याला खर्च येतो.
काय करायचं: Image ami-01af11a110db0abcd deregister करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Disk चा UUID शोधा
का: /etc/fstab मध्ये UUID वापरावा, कारण reboot नंतर device नाव बदलू शकतं.
काय करायचं: /dev/xvdf चा UUID दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड CPU alarm बनवा
का: Alarm metric पाहतो व users ला कळण्याआधी तुम्हाला कळवतो.
काय करायचं: nynewsdaily-cpu-high alarm बनवा: AWS/EC2 CPUUtilization, 300 seconds चा Average, 1 evaluation period, GreaterThanThreshold 80, InstanceId=i-00350cc21cb211a2b साठी, arn:aws:sns:us-east-1:127812880530:nynewsdaily-alerts ला notify.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Downtime शिवाय volume मोठा करा
का: EBS volumes वापरात असताना मोठे होतात. नंतर file system पण वाढवतात.
काय करायचं: Volume vol-0ed12dd0530cfdeed 50 GiB करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Snapshot दुसऱ्या Region मध्ये copy करा
का: दुसऱ्या Region मधली copy पूर्ण Region अडचणीत आल्यास वाचवते.
काय करायचं: Snapshot snap-012ee0530beef5 us-east-1 मधून us-west-2 मध्ये copy करा (command us-west-2 मध्ये चालवा).
- 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: Stopped EC2 आपोआप start कसा करायचा. Payroll server रात्री 1 ला चालू हवा. Alarm ला start action नाही, कारण stopped server metrics पाठवत नाही. EventBridge Scheduler ठरलेल्या वेळी EC2 StartInstances API call करतो. Lambda alarm वरून call करू शकतं. Scheduler: cron 0 1 * * ? *, time zone Asia/Calcutta, target EC2 StartInstances, ec2:StartInstances असलेला role. Lambda (Python): main-web-down alarm वाजला की start_instances(InstanceIds=["i-0standby"]).](../../../aws/ravi-sirs-cards/cards/mr/rev-cw-start-stopped-ec2.webp)









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