diff --git a/go/example_code/ec2/create_enable_alarms.go b/go/example_code/ec2/create_enable_alarms.go new file mode 100644 index 00000000000..7de66d9373d --- /dev/null +++ b/go/example_code/ec2/create_enable_alarms.go @@ -0,0 +1,69 @@ +package main + +import ( + "fmt" + "os" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/cloudwatch" +) + +// Usage: +// go run main.go +func main() { + // Load session from shared config. + sess := session.Must(session.NewSessionWithOptions(session.Options{ + SharedConfigState: session.SharedConfigEnable, + })) + + // Create new cloudwatch client. + svc := cloudwatch.New(sess) + + // Create a metric alarm that will reboot an instance if its CPU utilization is + // greate than 70.0%. + _, err := svc.PutMetricAlarm(&cloudwatch.PutMetricAlarmInput{ + AlarmName: &os.Args[3], + ComparisonOperator: aws.String(cloudwatch.ComparisonOperatorGreaterThanThreshold), + EvaluationPeriods: aws.Int64(1), + MetricName: aws.String("CPUUtilization"), + Namespace: aws.String("AWS/EC2"), + Period: aws.Int64(60), + Statistic: aws.String(cloudwatch.StatisticAverage), + Threshold: aws.Float64(70.0), + ActionsEnabled: aws.Bool(true), + AlarmDescription: aws.String("Alarm when server CPU exceeds 70%"), + Unit: aws.String(cloudwatch.StandardUnitSeconds), + + // This is apart of the default workflow actions. This one will reboot the instance, if the + // alarm is triggered. + AlarmActions: []*string{ + aws.String(fmt.Sprintf("arn:aws:swf:us-east-1:%s:action/actions/AWS_EC2.InstanceId.Reboot/1.0", os.Args[1])), + }, + Dimensions: []*cloudwatch.Dimension{ + &cloudwatch.Dimension{ + Name: aws.String("InstanceId"), + Value: &os.Args[2], + }, + }, + }) + + if err != nil { + fmt.Println("Error", err) + return + } + + // This will enable the alarm to our instance. + result, err := svc.EnableAlarmActions(&cloudwatch.EnableAlarmActionsInput{ + AlarmNames: []*string{ + &os.Args[3], + }, + }) + + if err != nil { + fmt.Println("Error", err) + return + } + + fmt.Println("Alarm action enabled", result) +} diff --git a/go/example_code/ec2/custom_metrics.go b/go/example_code/ec2/custom_metrics.go new file mode 100644 index 00000000000..f75421ed1a0 --- /dev/null +++ b/go/example_code/ec2/custom_metrics.go @@ -0,0 +1,46 @@ +package main + +import ( + "fmt" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/cloudwatch" +) + +// Usage: +// go run main.go +func main() { + // Load session from shared config. + sess := session.Must(session.NewSessionWithOptions(session.Options{ + SharedConfigState: session.SharedConfigEnable, + })) + + // Create new cloudwatch client. + svc := cloudwatch.New(sess) + + // This will disable the alarm. + result, err := svc.PutMetricData(&cloudwatch.PutMetricDataInput{ + MetricData: []*cloudwatch.MetricDatum{ + &cloudwatch.MetricDatum{ + MetricName: aws.String("PAGES_VISITED"), + Unit: aws.String(cloudwatch.StandardUnitNone), + Value: aws.Float64(1.0), + Dimensions: []*cloudwatch.Dimension{ + &cloudwatch.Dimension{ + Name: aws.String("UNIQUE_PAGES"), + Value: aws.String("URLS"), + }, + }, + }, + }, + Namespace: aws.String("SITE/TRAFFIC"), + }) + + if err != nil { + fmt.Println("Error", err) + return + } + + fmt.Println("Success", result) +} diff --git a/go/example_code/ec2/disable_alarm.go b/go/example_code/ec2/disable_alarm.go new file mode 100644 index 00000000000..7cfc373ed13 --- /dev/null +++ b/go/example_code/ec2/disable_alarm.go @@ -0,0 +1,35 @@ +package main + +import ( + "fmt" + "os" + + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/cloudwatch" +) + +// Usage: +// go run main.go +func main() { + // Load session from shared config. + sess := session.Must(session.NewSessionWithOptions(session.Options{ + SharedConfigState: session.SharedConfigEnable, + })) + + // Create new cloudwatch client. + svc := cloudwatch.New(sess) + + // This will disable the alarm. + result, err := svc.DisableAlarmActions(&cloudwatch.DisableAlarmActionsInput{ + AlarmNames: []*string{ + &os.Args[1], + }, + }) + + if err != nil { + fmt.Println("Error", err) + return + } + + fmt.Println("Success", result) +} diff --git a/go/example_code/ec2/listing_metrics.go b/go/example_code/ec2/listing_metrics.go new file mode 100644 index 00000000000..db574b341b2 --- /dev/null +++ b/go/example_code/ec2/listing_metrics.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/cloudwatch" +) + +// Usage: +// go run main.go +func main() { + // Load session from shared config. + sess := session.Must(session.NewSessionWithOptions(session.Options{ + SharedConfigState: session.SharedConfigEnable, + })) + + // Create new cloudwatch client. + svc := cloudwatch.New(sess) + + // This will disable the alarm. + result, err := svc.ListMetrics(&cloudwatch.ListMetricsInput{ + MetricName: aws.String("IncomingLogEvents"), + Namespace: aws.String("AWS/Logs"), + Dimensions: []*cloudwatch.DimensionFilter{ + &cloudwatch.DimensionFilter{ + Name: aws.String("LogGroupName"), + }, + }, + }) + + if err != nil { + fmt.Println("Error", err) + return + } + + fmt.Println("Metrics", result.Metrics) +}