अनेक EC2 Instances साठी CloudWatch Dashboard कसा बनवायचा
आता तुमच्याकडे metrics (Amazon CloudWatch सोप्या भाषेत), health alarms (EC2 आणि EBS Health Check Alarms) आणि logs (अनेक EC2 Instances चे Logs CloudWatch Logs मध्ये) आहेत. Dashboard हे सगळं एका screen वर आणतो, म्हणजे कोणालाही पाच seconds मध्ये पूर्ण app ची तब्येत दिसते.
या chapter मध्ये तुम्ही काय शिकाल
- Dashboard आणि widget म्हणजे काय
- Line, number, gauge, alarm status, text आणि logs widgets
- अनेक instances चा CPU एका graph वर, आणि metric math
- तोच dashboard CLI ने (JSON)
- Dashboard safely share करणं, आणि खर्च
1. गोष्ट: sale च्या रात्रीची war room
Sale च्या रात्री team एका room मध्ये मोठ्या TV समोर बसते. Manager दर काही minutes नी विचारतो: "सगळं ठीक आहे ना?" कोणालाच 10 console pages उघडायचे नसतात. TV वर एक dashboard: सगळ्या web servers चा CPU, मिनिटाला requests, 5xx errors, alarm lights आणि latest error logs. एका नजरेत उत्तर.
2. Dashboards आणि widgets
हे का लागतं?
वेगवेगळ्या ठिकाणचे graphs compare करायला वेळ लागतो. CPU उडी मारतो तेव्हा request count आणि error logs लगेच शेजारी हवेत.
हे काय आहे?
Dashboard म्हणजे तुम्ही design केलेलं page. Widget म्हणजे त्यावरचा एक box.
| Widget | काय दाखवतो | कशासाठी |
|---|---|---|
| Line | वेळेनुसार values | 3 servers चा CPU |
| Stacked area | एकत्र होणारे भाग | प्रत्येक target च्या requests |
| Number | शेवटची एक value | Healthy hosts = 3 |
| Gauge | Range मध्ये value | Disk used 0-100% |
| Alarm status | निवडलेल्या alarms चे हिरवे/लाल दिवे | सगळे health alarms |
| Logs table | Logs Insights query चा result | Latest 5xx lines |
| Text | Markdown notes आणि links | "कोणाला call करायचा", runbook link |
3. Lab: console मध्ये app dashboard बनवा
तुम्हाला 2-3 running instances (tag Role=web), मागच्या chapters मधले alarms आणि /app/nginx/access log group लागेल. कमी गोष्टी असतील तर जमतील तेवढेच widgets बनवा.
Part A: dashboard बनवा
- CloudWatch → Dashboards → Create dashboard उघडा.
- Name:
shop-prod. स्पष्ट नाव का: लोक ते घाईत उघडतात; नावावरून app आणि environment कळायला हवं. - Create dashboard करा. "Add widget" window उघडते.
Part B: सगळ्या web servers चा CPU एका graph वर
- Line → Metrics → Next.
- EC2 → Per-Instance Metrics. Search box मध्ये
CPUUtilizationtype करा. - प्रत्येक web instance चा CPUUtilization tick करा. प्रत्येक एक रंगीत line बनते.
- Graphed metrics उघडा. Statistic Average, detailed monitoring असेल तर Period 1 minute, नाहीतर 5 minutes.
- प्रत्येक Label ID वरून
web1,web2,web3करा. का: रात्री 2 ला IDs चा कोणालाच अर्थ लागत नाही. - Options tab:
80वरalarm lineनावाचं horizontal annotation जोडा. का: alarm पासून किती जवळ आहात ते दिसतं. - Create widget. Title
Web CPU %द्या (title वर click करून edit).
अनेक servers साठी जलद: प्रत्येक tick करण्याऐवजी Source tab मध्ये search expression वापरा. नवीन Auto Scaling servers आपोआप दिसतात:
SEARCH('{AWS/EC2,InstanceId} MetricName="CPUUtilization"', 'Average', 300)
Part C: number, metric math आणि memory
- + Add widget → Number → Metrics. ALB metric RequestCount (ApplicationELB → Per AppELB Metrics), statistic Sum, 1 minute. Title
Requests / min. - HTTPCode_Target_5XX_Count (m1, Sum) आणि RequestCount (m2, Sum) सह line widget. Add math → Start with empty expression:
100*m1/m2, label5xx %. m1 आणि m2 untick. का: "12 errors" ला फारसा अर्थ नाही; "0.4% requests fail" स्पष्ट आहे. - CWAgent → InstanceId → mem_used_percent (web1) वर Gauge, range 0-100. Title
web1 memory %.
Part D: alarms आणि logs एकाच screen वर
- + Add widget → Alarm status.
web1-cpu-high,web1-system-recover,web1-instance-reboot,web1-disk-queuetick करा. Create. - + Add widget → Logs table. Log group
/app/nginx/access. Query:
fields @timestamp, @logStream, @message
| filter @message like / 50[0-9] /
| sort @timestamp desc
| limit 20
- Create widget. Title
Latest 5xx lines. - + Add widget → Text:
**On call:** Ops team · Runbook: तुमच्या wiki ची link. का: लाल दिसणाऱ्याला पुढे काय करायचं ते कळतं. - सगळ्यात महत्त्वाचे (alarm status, 5xx %) वर येतील असे widgets drag करा. Save करा. Save का: page सोडलं तर unsaved बदल जातात.
- वर उजवीकडे: time range 3h, refresh 1 minute, आणि TV साठी Auto refresh चालू.
- Verify: web1 वर
stress-ng --cpu 0 --timeout 300sचालवा; त्याची line वर जाते, बाकी सपाट राहतात.
4. हाच dashboard CLI ने
हे का लागतं?
Click करून बनवलेला dashboard एकाच account मध्ये असतो. JSON म्हणून तो Git मध्ये ठेवता येतो, review करता येतो आणि नवीन account किंवा region मध्ये काही seconds मध्ये परत बनवता येतो.
कसं करायचं (step by step)
- तुमचा dashboard → Actions → View/edit source मध्ये त्याचा JSON दिसतो. छोटा version
dash.jsonम्हणून save करा:
{
"widgets": [
{ "type": "metric", "x": 0, "y": 0, "width": 12, "height": 6,
"properties": { "title": "Web CPU %", "region": "ap-south-1", "view": "timeSeries",
"stat": "Average", "period": 300,
"metrics": [
["AWS/EC2", "CPUUtilization", "InstanceId", "i-0aaa1111111111111", {"label": "web1"}],
["...", "i-0bbb2222222222222", {"label": "web2"}]
],
"annotations": { "horizontal": [ { "value": 80, "label": "alarm line" } ] } } },
{ "type": "log", "x": 12, "y": 0, "width": 12, "height": 6,
"properties": { "title": "Latest 5xx lines", "region": "ap-south-1", "view": "table",
"query": "SOURCE '/app/nginx/access' | fields @timestamp, @logStream, @message | filter @message like / 50[0-9] / | sort @timestamp desc | limit 20" } },
{ "type": "text", "x": 0, "y": 6, "width": 24, "height": 2,
"properties": { "markdown": "**On call:** Ops team" } }
]
}
- Create किंवा update करा:
aws cloudwatch put-dashboard --dashboard-name shop-prod-cli --dashboard-body file://dash.json
# expected: {"DashboardValidationMessages": []}
aws cloudwatch list-dashboards --query 'DashboardEntries[].DashboardName'
# expected: ["shop-prod", "shop-prod-cli"]
Metrics array मधलं "..." म्हणजे "वरच्या line सारखंच", म्हणजे फक्त बदलणारं (instance ID) लिहायचं.
5. Dashboard share करणं
हे का लागतं?
Manager किंवा client ला dashboard बघायचा आहे, पण त्यांना AWS console access देऊ नये. फक्त graphs बघायला console access म्हणजे खूप जास्त power.
हे काय आहे?
| पद्धत | कोण उघडू शकतं | कधी वापरायचं |
|---|---|---|
| तुमच्या account मधले IAM users/roles | CloudWatch read permission असलेले लोक | तुमची स्वतःची team |
| ठराविक email addresses सोबत share | फक्त ते लोक, password set केल्यावर | Managers, clients |
| Public share | Link असलेलं कोणीही | फक्त non-sensitive data, उदा. status TV |
| Cross-account observability | Central monitoring account | एका company ची अनेक AWS accounts |
कसं करायचं (step by step)
- Dashboard उघडा → Actions → Share dashboard.
- Share your dashboard and require a username and password निवडा. Email addresses टाका.
- Prepare for sharing करा आणि confirm करा. AWS मागे role आणि Amazon Cognito user pool बनवतं.
- Verify: प्रत्येकाला link सह email येतो आणि ते password set करतात; त्यांना dashboard read-only दिसतो, console menu शिवाय.
- Sharing बंद करायला: Actions → Share dashboard → Stop sharing.
Ravindra Bagale's Tip
Shared dashboard मध्ये logs widgets पण दिसतात. Team बाहेर share करायच्या dashboard वर customer emails, phone numbers किंवा tokens असलेल्या log lines ठेवू नका.
खर्च: free tier मध्ये महिन्याला 3 dashboards, प्रत्येकी 50 metrics पर्यंत. त्यानंतर प्रत्येक dashboard चं महिन्याला billing (लिहिताना साधारण USD 3; CloudWatch pricing page बघा). Logs widgets मध्ये प्रत्येक query scan करते त्या data चं पण billing.
6. Stack नुसार dashboard कल्पना
| Stack | वर ठेवायचे widgets |
|---|---|
| nginx / Apache + ALB | RequestCount, 5xx %, TargetResponseTime p90, HealthyHostCount |
| Java Spring / .NET | CPU, प्रत्येक instance चा mem_used_percent, GC किंवा error log query |
| Node.js (PM2) / Python / Go | प्रत्येक instance चा CPU, 5xx log query, response time |
| MySQL / RDS | CPUUtilization, DatabaseConnections, FreeStorageSpace, ReadLatency |
| PHP / WordPress | CPU, php-fpm error log table, disk used gauge |
7. Cleanup
- Share केला असेल तर sharing बंद करा.
- CloudWatch → Dashboards →
shop-prodआणिshop-prod-clitick → Delete. - CLI:
aws cloudwatch delete-dashboards --dashboard-names shop-prod shop-prod-cli. - मागच्या labs चे alarms, log groups आणि instances गरज नसेल तर delete करा.
8. Interview questions
प्र. प्रत्येक वेळी edit न करता सगळ्या Auto Scaling instances चा CPU एका graph वर कसा दाखवायचा?
AWS/EC2 CPUUtilization वर SEARCH expression (किंवा AutoScalingGroupName dimension) वापरा, म्हणजे नवीन instances आपोआप दिसतात.
प्र. AWS login नसलेल्या व्यक्तीला dashboard कसा share करायचा?
Specific email addresses सोबत share (Cognito द्वारे username आणि password) किंवा non-sensitive data असेल तर public.
प्र. Dashboards JSON म्हणून का ठेवायचे?
Git मध्ये ठेवायला, बदल review करायला आणि कोणत्याही account किंवा region मध्ये put-dashboard ने परत बनवायला.
घरी करून बघा
- किमान 5 widgets सह shop-prod बनवा: सगळ्या servers चा CPU, requests, 5xx %, alarm status आणि latest 5xx log lines.
- View/edit source ने export करा, delete करा, आणि put-dashboard ने परत बनवा.
थोडक्यात सांगायचं तर
- Dashboard म्हणजे widgets ची एक screen: metrics, alarms, logs आणि notes.
- अनेक instances एका line graph वर; Auto Scaling साठी SEARCH.
- Metric math raw counts ना 5xx % सारख्या स्पष्ट numbers मध्ये बदलतो.
- JSON Git मध्ये ठेवा; put-dashboard ने बनवा.
- Managers आणि clients साठी email ने share; public फक्त non-sensitive data साठी.
सराव Tasks
Aurangabad Pharma हा छत्रपती संभाजीनगर मधला औषधनिर्मिती व्यवसाय आहे. Dr. Farhan Shaikh त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 10
सोपं 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-01a40525502111a2b instance reboot करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Instance stop करा
का: Stop केलेल्या instance चा compute खर्च येत नाही, फक्त disks चा.
काय करायचं: i-01a40525502111a2b instance stop करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं /16 मध्ये किती addresses?
का: VPC size ठरवायला ही संख्या लागते.
काय करायचं: Aurangabad Pharma चा VPC 10.138.0.0/16. एकूण किती IP addresses?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं SSH चा port
का: Security group rules ला योग्य port हवा.
काय करायचं: SSH साठी security group ने कोणता TCP port उघडावा?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Custom metric publish करा
का: Custom metrics ने business numbers वर graph व alarm करता येतो.
काय करायचं: Namespace AurangabadPharma/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-01a40525502111a2b चे status checks दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Target health तपासा
का: Targets unhealthy असल्यास site 502/503 errors दाखवते.
काय करायचं: arn:aws:elasticloadbalancing:ap-south-1:112055250461:targetgroup/abadpharma-tg/6d0ecf831eec9f09 मधल्या targets चं health दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड File पासून dashboard बनवा
का: Dashboard JSON file Git मध्ये ठेवून कधीही पुन्हा बनवता येतो.
काय करायचं: dashboard.json पासून abadpharma-ops dashboard बनवा/update करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड CPU alarm बनवा
का: Alarm metric पाहतो व users ला कळण्याआधी तुम्हाला कळवतो.
काय करायचं: abadpharma-cpu-high alarm बनवा: AWS/EC2 CPUUtilization, 300 seconds चा Average, 1 evaluation period, GreaterThanThreshold 80, InstanceId=i-01a40525502111a2b साठी, arn:aws:sns:ap-south-1:112055250461:abadpharma-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 उघडतो.











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