Use Cases

Claude Code × AWS CloudWatch सम्पूर्ण गाइड | लॉग विश्लेषण, अलार्म सेटअप और डैशबोर्ड ऑटोमेशन

Claude Code से AWS CloudWatch को और प्रभावी बनाएं। लॉग पैटर्न विश्लेषण, स्वचालित अलार्म कॉन्फ़िगरेशन, मेट्रिक्स डैशबोर्ड और इंसिडेंट जांच के लिए व्यावहारिक कोड।

“प्रोडक्शन में एरर आ गई! लेकिन लॉग इतने ज़्यादा हैं कि समझ नहीं आ रहा कहाँ देखें।” — इंसिडेंट रिस्पॉन्स के दौरान यह एक आम घबराहट है।

CloudWatch AWS का मानक मॉनिटरिंग सेवा है, लेकिन विशाल लॉग वॉल्यूम में ज़रूरी जानकारी दब जाती है और अलार्म कॉन्फ़िगरेशन अक्सर टाल दिया जाता है। मैं काम पर ECS + Lambda सिस्टम मॉनिटर करता हूं, और Claude Code को लॉग पढ़वाकर कारण पहचानने देने से हमारा औसत इंसिडेंट रिस्पॉन्स समय 40% कम हो गया।

इस लेख में CloudWatch लॉग विश्लेषण, अलार्म डिज़ाइन और डैशबोर्ड निर्माण को Claude Code से ऑटोमेट करने के व्यावहारिक चरण बताए गए हैं।


CloudWatch के मुख्य कंपोनेंट

CloudWatch Logs      : ऐप और AWS सेवाओं के लॉग स्टोर और सर्च करें
CloudWatch Metrics   : CPU उपयोग और रिक्वेस्ट काउंट जैसे संख्यात्मक डेटा
CloudWatch Alarms    : मेट्रिक्स थ्रेशोल्ड पार होने पर SNS आदि को नोटिफाई करें
CloudWatch Dashboards: मेट्रिक्स और लॉग विज़ुअलाइज़ करने के लिए कस्टम व्यू
Log Insights         : लॉग विश्लेषण के लिए SQL-जैसा क्वेरी इंजन

चरण 1: लॉग पैटर्न विश्लेषण Claude Code को सौंपें

इंसिडेंट के दौरान पहली प्राथमिकता एरर लॉग का पैटर्न समझना है।

# पिछले एक घंटे के एरर लॉग प्राप्त करें
aws logs filter-log-events \
  --log-group-name "/ecs/myapp" \
  --start-time $(date -d "1 hour ago" +%s000) \
  --filter-pattern "ERROR" \
  --output json > error-logs.json

claude -p "
निम्नलिखित CloudWatch एरर लॉग का विश्लेषण करें और:

1. एरर को प्रकार के अनुसार वर्गीकृत करें (5xx, 4xx, DB कनेक्शन एरर, टाइमआउट आदि)
2. सबसे अधिक बार आने वाली एरर पहचानें
3. वह समय पहचानें जब एरर अचानक बढ़ीं
4. मूल कारण के बारे में परिकल्पनाएं प्रस्तुत करें
5. अगले जांच कदम सुझाएं

$(cat error-logs.json | head -500)
"

Log Insights क्वेरी स्वचालित रूप से जनरेट करें

claude -p "
निम्नलिखित उद्देश्यों के लिए CloudWatch Log Insights क्वेरी जनरेट करें:

1. पिछले एक घंटे में एंडपॉइंट के अनुसार एरर रेट (टॉप 10)
2. 500 ms से अधिक लेटेंसी वाले रिक्वेस्ट का विवरण
3. किसी विशिष्ट यूज़र के सभी ऑपरेशन लॉग (user_id: 12345)
4. डिप्लॉयमेंट के 30 मिनट के भीतर पहली बार आई एरर

लॉग फॉर्मेट: JSON (timestamp, level, message, user_id, endpoint, duration_ms, status_code)
"

जनरेट की गई Log Insights क्वेरी का उदाहरण:

-- एंडपॉइंट के अनुसार एरर रेट
fields @timestamp, endpoint, status_code
| filter status_code >= 400
| stats count() as error_count by endpoint
| sort error_count desc
| limit 10

-- 500 ms से अधिक लेटेंसी वाले रिक्वेस्ट
fields @timestamp, endpoint, duration_ms, user_id
| filter duration_ms > 500
| sort duration_ms desc
| limit 50

-- किसी विशिष्ट यूज़र के ऑपरेशन लॉग
fields @timestamp, level, message, endpoint
| filter user_id = "12345"
| sort @timestamp desc
| limit 100

चरण 2: अलार्म कॉन्फ़िगरेशन स्वचालित रूप से जनरेट करें

claude -p "
नीचे दिए सिस्टम के लिए सभी आवश्यक CloudWatch अलार्म डिज़ाइन करें।
CDK TypeScript में इम्प्लीमेंट करें।

[सिस्टम आर्किटेक्चर]
- ECS Fargate (API सर्वर, 2–10 इंस्टेंस)
- RDS PostgreSQL
- ALB (Application Load Balancer)
- Lambda (बैच प्रोसेसिंग)

[अलार्म आवश्यकताएं]
- प्रोडक्शन: 5 मिनट के भीतर ट्रिगर होने वाले अलार्म
- नोटिफिकेशन: SNS → Slack और PagerDuty
- दो-स्तरीय अलार्म (Warning / Critical)
- बिज़नेस ऑवर्स के बाहर: केवल Critical
"
// lib/monitoring-stack.ts
import * as cdk from "aws-cdk-lib";
import * as cloudwatch from "aws-cdk-lib/aws-cloudwatch";
import * as actions from "aws-cdk-lib/aws-cloudwatch-actions";
import * as sns from "aws-cdk-lib/aws-sns";

export class MonitoringStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const alertTopic = sns.Topic.fromTopicArn(
      this, "AlertTopic",
      `arn:aws:sns:${this.region}:${this.account}:prod-alerts`
    );
    const warnTopic = sns.Topic.fromTopicArn(
      this, "WarnTopic",
      `arn:aws:sns:${this.region}:${this.account}:prod-warnings`
    );

    // ALB 5xx एरर रेट अलार्म
    const alb5xxAlarm = new cloudwatch.Alarm(this, "Alb5xxAlarm", {
      alarmName: "prod-alb-5xx-critical",
      alarmDescription: "ALB 5xx एरर रेट 5% से अधिक हो गई",
      metric: new cloudwatch.Metric({
        namespace: "AWS/ApplicationELB",
        metricName: "HTTPCode_Target_5XX_Count",
        dimensionsMap: { LoadBalancer: "app/myapp/xxx" },
        statistic: "Sum",
        period: cdk.Duration.minutes(5),
      }),
      threshold: 10,
      evaluationPeriods: 2,
      comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
      treatMissingData: cloudwatch.TreatMissingData.NOT_BREACHING,
    });
    alb5xxAlarm.addAlarmAction(new actions.SnsAction(alertTopic));

    // ECS CPU उपयोग अलार्म (Warning/Critical)
    const ecsCpuWarning = new cloudwatch.Alarm(this, "EcsCpuWarning", {
      alarmName: "prod-ecs-cpu-warning",
      metric: new cloudwatch.Metric({
        namespace: "AWS/ECS",
        metricName: "CPUUtilization",
        dimensionsMap: { ClusterName: "myapp-cluster", ServiceName: "myapp-service" },
        statistic: "Average",
        period: cdk.Duration.minutes(5),
      }),
      threshold: 70,
      evaluationPeriods: 3,
    });
    ecsCpuWarning.addAlarmAction(new actions.SnsAction(warnTopic));

    const ecsCpuCritical = new cloudwatch.Alarm(this, "EcsCpuCritical", {
      alarmName: "prod-ecs-cpu-critical",
      metric: new cloudwatch.Metric({
        namespace: "AWS/ECS",
        metricName: "CPUUtilization",
        dimensionsMap: { ClusterName: "myapp-cluster", ServiceName: "myapp-service" },
        statistic: "Average",
        period: cdk.Duration.minutes(5),
      }),
      threshold: 90,
      evaluationPeriods: 2,
    });
    ecsCpuCritical.addAlarmAction(new actions.SnsAction(alertTopic));

    // RDS कनेक्शन संख्या अलार्म
    const rdsConnectionAlarm = new cloudwatch.Alarm(this, "RdsConnectionAlarm", {
      alarmName: "prod-rds-connections-critical",
      metric: new cloudwatch.Metric({
        namespace: "AWS/RDS",
        metricName: "DatabaseConnections",
        dimensionsMap: { DBInstanceIdentifier: "myapp-db" },
        statistic: "Maximum",
        period: cdk.Duration.minutes(5),
      }),
      threshold: 80,  // db.t3.micro की अधिकतम कनेक्शन का 80%
      evaluationPeriods: 2,
    });
    rdsConnectionAlarm.addAlarmAction(new actions.SnsAction(alertTopic));

    // Lambda एरर रेट अलार्म
    const lambdaErrorAlarm = new cloudwatch.Alarm(this, "LambdaErrorAlarm", {
      alarmName: "prod-lambda-errors-critical",
      metric: new cloudwatch.Metric({
        namespace: "AWS/Lambda",
        metricName: "Errors",
        dimensionsMap: { FunctionName: "myapp-batch" },
        statistic: "Sum",
        period: cdk.Duration.minutes(15),
      }),
      threshold: 5,
      evaluationPeriods: 1,
    });
    lambdaErrorAlarm.addAlarmAction(new actions.SnsAction(alertTopic));
  }
}

चरण 3: कस्टम डैशबोर्ड स्वचालित रूप से जनरेट करें

claude -p "
निम्नलिखित जानकारी दिखाने वाला CloudWatch डैशबोर्ड CDK में जनरेट करें।

[डैशबोर्ड लेआउट]
पंक्ति 1: समग्र सिस्टम हेल्थ (ALB रिक्वेस्ट काउंट, 5xx रेट, लेटेंसी P50/P95/P99)
पंक्ति 2: ECS सेवा (CPU, मेमोरी, चल रहे टास्क की संख्या)
पंक्ति 3: RDS (कनेक्शन, लेटेंसी, CPU उपयोग)
पंक्ति 4: Lambda (इनवोकेशन, एरर, अवधि)
पंक्ति 5: बिज़नेस मेट्रिक्स (नए रजिस्ट्रेशन, पेमेंट सफलता दर) ← कस्टम मेट्रिक्स
"
// डैशबोर्ड परिभाषा (अंश)
const dashboard = new cloudwatch.Dashboard(this, "AppDashboard", {
  dashboardName: "myapp-production",
});

dashboard.addWidgets(
  new cloudwatch.Row(
    new cloudwatch.GraphWidget({
      title: "ALB रिक्वेस्ट काउंट",
      left: [new cloudwatch.Metric({
        namespace: "AWS/ApplicationELB",
        metricName: "RequestCount",
        statistic: "Sum",
        period: cdk.Duration.minutes(1),
      })],
      width: 8,
    }),
    new cloudwatch.GraphWidget({
      title: "ALB 5xx एरर रेट (%)",
      left: [new cloudwatch.MathExpression({
        expression: "5xx / (2xx + 3xx + 4xx + 5xx) * 100",
        usingMetrics: {
          "5xx": new cloudwatch.Metric({ metricName: "HTTPCode_Target_5XX_Count", namespace: "AWS/ApplicationELB", statistic: "Sum" }),
          "2xx": new cloudwatch.Metric({ metricName: "HTTPCode_Target_2XX_Count", namespace: "AWS/ApplicationELB", statistic: "Sum" }),
          "3xx": new cloudwatch.Metric({ metricName: "HTTPCode_Target_3XX_Count", namespace: "AWS/ApplicationELB", statistic: "Sum" }),
          "4xx": new cloudwatch.Metric({ metricName: "HTTPCode_Target_4XX_Count", namespace: "AWS/ApplicationELB", statistic: "Sum" }),
        },
        period: cdk.Duration.minutes(1),
      })],
      width: 8,
    }),
  )
);

चरण 4: इंसिडेंट जांच Claude Code को सौंपें

claude -p "
मैं प्रोडक्शन इंसिडेंट की जांच करना चाहता हूं। निम्नलिखित कमांड चलाएं और परिणामों का विश्लेषण करें:

1. aws logs filter-log-events --log-group-name '/ecs/myapp' \
   --start-time \$(date -d '2 hours ago' +%s000) \
   --filter-pattern 'ERROR' --limit 100

2. aws cloudwatch get-metric-statistics \
   --namespace AWS/ApplicationELB \
   --metric-name HTTPCode_Target_5XX_Count \
   --start-time \$(date -d '2 hours ago' -u +%Y-%m-%dT%H:%M:%SZ) \
   --end-time \$(date -u +%Y-%m-%dT%H:%M:%SZ) \
   --period 300 --statistics Sum

परिणामों के आधार पर सारांश दें:
- इंसिडेंट शुरू होने का समय
- प्रभावित यूज़र की अनुमानित संख्या
- मूल कारण की टॉप 3 परिकल्पनाएं
- तत्काल रिस्पॉन्स एक्शन
"

चरण 5: कस्टम मेट्रिक्स स्वचालित रूप से डिज़ाइन करें

claude -p "
निम्नलिखित ई-कॉमर्स बिज़नेस KPI को CloudWatch कस्टम मेट्रिक्स के रूप में
Node.js (AWS SDK v3) में मापने का कोड जनरेट करें।

मापने वाले मेट्रिक्स:
- सफल और असफल पेमेंट की संख्या (हर मिनट)
- कार्ट परित्याग दर (हर 5 मिनट)
- नए मेंबर रजिस्ट्रेशन (हर घंटे)

नेमस्पेस: MyApp/Business
प्रत्येक मेट्रिक पर एनवायरनमेंट टैग लगाएं (Production/Staging)
"
// src/monitoring/business-metrics.ts
import { CloudWatchClient, PutMetricDataCommand } from "@aws-sdk/client-cloudwatch";

const cw = new CloudWatchClient({ region: process.env.AWS_REGION });
const NAMESPACE = "MyApp/Business";
const ENV = process.env.NODE_ENV ?? "development";

export async function recordPaymentSuccess() {
  await cw.send(new PutMetricDataCommand({
    Namespace: NAMESPACE,
    MetricData: [{
      MetricName: "PaymentSuccess",
      Value: 1,
      Unit: "Count",
      Dimensions: [{ Name: "Environment", Value: ENV }],
    }],
  }));
}

export async function recordPaymentFailure(reason: string) {
  await cw.send(new PutMetricDataCommand({
    Namespace: NAMESPACE,
    MetricData: [{
      MetricName: "PaymentFailure",
      Value: 1,
      Unit: "Count",
      Dimensions: [
        { Name: "Environment", Value: ENV },
        { Name: "Reason", Value: reason },
      ],
    }],
  }));
}

4 आम गलतियां जिनसे बचें

1. evaluationPeriods बहुत कम होना

// ❌ क्षणिक स्पाइक पर भी अलार्म ट्रिगर होता है
evaluationPeriods: 1,
threshold: 10,

// ✅ लगातार 3 पीरियड के बाद ही अलार्म (गलत अलार्म कम होते हैं)
evaluationPeriods: 3,
threshold: 10,
datapointsToAlarm: 2,  // 3 में से 2 पीरियड में थ्रेशोल्ड पार होने पर अलार्म

2. Log Insights की लागत नज़रअंदाज़ करना

Log Insights स्कैन किए गए डेटा के अनुसार चार्ज करता है। समय सीमा बिना क्वेरी चलाने से अप्रत्याशित बिल आ सकता है। हमेशा --start-time और --end-time निर्दिष्ट करें।

3. हाई-रेज़ोल्यूशन कस्टम मेट्रिक्स महंगे होते हैं

स्टैंडर्ड मेट्रिक्स (60 सेकंड) मुफ़्त हैं, लेकिन हाई-रेज़ोल्यूशन मेट्रिक्स (1 सेकंड) लगभग 10 गुना महंगे होते हैं। बिज़नेस मेट्रिक्स के लिए 1 मिनट का एग्रीगेशन आमतौर पर पर्याप्त होता है।

4. Lambda के लॉग रिटेंशन पीरियड सेट न करना

डिफ़ॉल्ट “कभी एक्सपायर न हो” होता है, जिससे स्टोरेज लागत बढ़ती रहती है। लॉग ग्रुप पर हमेशा रिटेंशन पीरियड सेट करें।

new logs.LogGroup(this, "AppLogGroup", {
  logGroupName: "/ecs/myapp",
  retention: logs.RetentionDays.ONE_MONTH,  // 30 दिन बाद स्वचालित हटाना
});

सारांश

टास्कClaude Code का योगदान
लॉग विश्लेषणएरर लॉग पढ़कर मूल कारण परिकल्पनाएं और समाधान कदम सुझाता है
Log Insights क्वेरीविश्लेषण लक्ष्य की व्याख्या से क्वेरी जनरेट करता है
अलार्म कॉन्फ़िगरेशनसिस्टम विवरण से CDK कोड बल्क में जनरेट करता है
डैशबोर्डप्रदर्शित करने की इच्छित जानकारी से विजेट परिभाषाएं जनरेट करता है
इंसिडेंट जांचAWS CLI कमांड चलाकर परिणामों का विश्लेषण करता है

“मॉनिटरिंग बाद में सेट करेंगे” — और फिर इंसिडेंट आता है और कोई विज़िबिलिटी नहीं होती। Claude Code के साथ 30 मिनट में प्रोडक्शन-ग्रेड अलार्म और डैशबोर्ड तैयार हो जाते हैं।

संबंधित लेख

संदर्भ

#claude-code #aws #cloudwatch #monitoring #observability #devops

अपने Claude Code वर्कफ़्लो को अगले स्तर पर ले जाएँ

Claude Code में तुरंत कॉपी-पेस्ट करने योग्य 50 आज़माए हुए प्रॉम्प्ट टेम्पलेट।

मुफ़्त

मुफ़्त PDF: 5 मिनट में Claude Code चीटशीट

बस अपना ईमेल दर्ज करें और हम तुरंत A4 एक-पृष्ठ चीटशीट PDF भेज देंगे।

हम आपकी व्यक्तिगत जानकारी की सुरक्षा करते हैं और स्पैम नहीं भेजते।

Masa

लेखक के बारे में

Masa

Claude Code का गहराई से उपयोग करने वाले इंजीनियर। claudecode-lab.com चलाते हैं, जो 10 भाषाओं में 2,000 से अधिक पेजों वाला टेक मीडिया है।

संबंधित लेख

Claude Code × Amazon Bedrock संपूर्ण गाइड | AWS पर Claude को प्रोडक्शन में चलाएं
Use Cases

Claude Code × Amazon Bedrock संपूर्ण गाइड | AWS पर Claude को प्रोडक्शन में चलाएं

Claude Code के साथ Amazon Bedrock उपयोग करने की संपूर्ण गाइड। IAM प्रमाणीकरण, स्ट्रीमिंग, Lambda इंटीग्रेशन, RAG कार्यान्वयन से लेकर लागत अनुकूलन तक — Masa के वास्तविक प्रोडक्शन अनुभव पर आधारित।

Claude Code × AWS CodePipeline/CodeBuild पूर्ण गाइड | CI/CD पाइपलाइन स्वचालित रूप से बनाएं
Use Cases

Claude Code × AWS CodePipeline/CodeBuild पूर्ण गाइड | CI/CD पाइपलाइन स्वचालित रूप से बनाएं

Claude Code का उपयोग करके AWS CodePipeline और CodeBuild के साथ CI/CD स्वचालित रूप से बनाएं। पाइपलाइन डिज़ाइन, buildspec.yml जेनरेशन, टेस्ट ऑटोमेशन और CDK इन्फ्रास्ट्रक्चर के व्यावहारिक कोड उदाहरण।

Claude Code × AWS ECS/Fargate संपूर्ण गाइड | कंटेनर डिप्लॉयमेंट को स्वचालित करें
Use Cases

Claude Code × AWS ECS/Fargate संपूर्ण गाइड | कंटेनर डिप्लॉयमेंट को स्वचालित करें

Claude Code से AWS ECS/Fargate डिप्लॉयमेंट को स्वचालित करें। टास्क डेफिनिशन, सर्विस कॉन्फिगरेशन, Blue/Green डिप्लॉयमेंट और CDK इन्फ्रास्ट्रक्चर तक — Masa के वास्तविक अनुभव पर आधारित।