CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-pulumi--aws

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

cloudwatch.mddocs/core/

Amazon CloudWatch

Amazon CloudWatch provides monitoring and observability for AWS resources and applications through metrics, logs, and alarms.

Package

import * as aws from "@pulumi/aws";
import * as cloudwatch from "@pulumi/aws/cloudwatch";

Key Resources

Metric Alarm

CloudWatch alarm for monitoring metrics.

const alarm = new aws.cloudwatch.MetricAlarm("high-cpu", {
    name: "high-cpu-alarm",
    comparisonOperator: "GreaterThanThreshold",
    evaluationPeriods: 2,
    metricName: "CPUUtilization",
    namespace: "AWS/EC2",
    period: 300,
    statistic: "Average",
    threshold: 80,
    alarmDescription: "Triggers when CPU exceeds 80%",
    dimensions: {
        InstanceId: instance.id,
    },
    alarmActions: [snsTopic.arn],
});

Log Group

CloudWatch log group for storing logs.

const logGroup = new aws.cloudwatch.LogGroup("app-logs", {
    name: "/aws/lambda/my-function",
    retentionInDays: 30,
    tags: {
        Application: "my-app",
    },
});

Log Stream

CloudWatch log stream within a log group.

const logStream = new aws.cloudwatch.LogStream("app-stream", {
    name: "instance-logs",
    logGroupName: logGroup.name,
});

Dashboard

CloudWatch dashboard for visualizing metrics.

const dashboard = new aws.cloudwatch.Dashboard("app-dashboard", {
    dashboardName: "my-app-dashboard",
    dashboardBody: JSON.stringify({
        widgets: [{
            type: "metric",
            properties: {
                metrics: [
                    ["AWS/EC2", "CPUUtilization", { stat: "Average" }],
                ],
                period: 300,
                stat: "Average",
                region: "us-west-2",
                title: "EC2 CPU Utilization",
            },
        }],
    }),
});

Common Patterns

Composite Alarm

const compositeAlarm = new aws.cloudwatch.CompositeAlarm("composite", {
    alarmName: "composite-alarm",
    alarmRule: `ALARM(${alarm1.arn}) AND ALARM(${alarm2.arn})`,
    alarmDescription: "Composite alarm for multiple conditions",
    alarmActions: [snsTopic.arn],
});

Custom Metrics

const metricAlarm = new aws.cloudwatch.MetricAlarm("custom-metric", {
    name: "custom-metric-alarm",
    comparisonOperator: "GreaterThanThreshold",
    evaluationPeriods: 1,
    metricName: "CustomMetric",
    namespace: "MyApp/Custom",
    period: 60,
    statistic: "Sum",
    threshold: 100,
    dimensions: {
        Environment: "production",
    },
});

Log Metric Filter

const metricFilter = new aws.cloudwatch.LogMetricFilter("error-filter", {
    name: "error-count",
    logGroupName: logGroup.name,
    pattern: "[timestamp, request_id, event_type = ERROR*, ...]",
    metricTransformation: {
        name: "ErrorCount",
        namespace: "MyApp/Logs",
        value: "1",
    },
});

Key Properties

Metric Alarm Properties

  • name - Alarm name
  • comparisonOperator - Comparison operator
  • evaluationPeriods - Number of periods to evaluate
  • metricName - Metric name
  • namespace - Metric namespace
  • period - Period in seconds
  • statistic - Statistic type (Average, Sum, etc.)
  • threshold - Alarm threshold
  • dimensions - Metric dimensions

Log Group Properties

  • name - Log group name
  • retentionInDays - Log retention period
  • kmsKeyId - KMS key for encryption

Output Properties

  • id - Resource identifier
  • arn - Resource ARN
  • name - Resource name

Use Cases

  • Resource Monitoring: Track EC2, RDS, Lambda metrics
  • Application Logs: Centralized log storage
  • Alerting: Automated notifications for threshold breaches
  • Dashboards: Visual monitoring of system health
  • Anomaly Detection: Identify unusual patterns

Related Services

  • SNS - Alarm notifications
  • Lambda - Log processing
  • EC2 - Instance monitoring

Install with Tessl CLI

npx tessl i tessl/npm-pulumi--aws@7.16.0

docs

index.md

quickstart.md

README.md

tile.json