Implementation of Custom Cloudwatch Metrics in Amazon Web Services

Implementation of Custom Cloudwatch Metrics in Amazon Web Services

September 9, 2022 Off By Evelyn


What are metrics? Metrics can be used to monitor resources in Amazon Web Services such as EBS volumes, EC2 instances, and RDS instances. Monitoring is sometimes required for additional parameters beyond the pre-defined metrics available in AWS. CloudWatch has been designed to allow users to define their own metrics. This feature allows you to store application and business metrics in Amazon CloudWatch. A graph plot can be generated to provide visual interpretations of the metric. You can set up custom metrics for almost all services, including Amazon EC2 instances and AWS Billing, Autoscaling. EBS volumes, Relational Database Services, and AWS Billing. CloudWatch alarms and automated actions can also be set based on these metrics. Why use Custom metrics? Amazon Web Services offers a wide variety of metrics for EBS and EC2 services. These metrics can be used to create alarms and take actions such as terminating EC2 instances or restarting them. Cloudwatch can monitor metrics provided by the hypervisor, such as disk-read, disk–write, and disk usage for EBS, CPU Utilization, and CPU credit Usage. A user might need to automate actions based on a certain parameter. This parameter could be the number of active users within a system that can be stored in an RDS instance. This value can be measured using a script. If the number of users falls below zero, an alarm should be triggered and the EC2 instance must be terminated. Use Case: A user might need to perform automated actions based upon a certain parameter. This parameter could be the number of active users within a system that can be stored in an RDS instance. This value can be measured using a script. If the number of active users falls below zero, an alarm should be triggered and the EC2 instance must be terminated. Let’s now see how to configure a custom metrics based on the above use cases. Prerequisites: Python 2.7.x boto 2.3.6. In the next steps, we will create a custom measurement to monitor active sessions for a user using an RDS instance. We will also create an alarm for this custommetric to terminate the EC2 instance once it reaches zero. Pythonfrom boto.ec2.cloudwatch import connect_to_regionimport MySQLdbimport boto.ec2.cloudwatchdb=MySQLdb. Connect(“ravit.rdshostname.ap-northeast-1.rds.amazonaws.com”,”username”,”password’,”databasename”)cursor=db.cursor()n=cursor.execute(“select * from GetActive_access_key’,aws_secret_access_access_key=your_access_key_access_key=your_access_key=your_secret_access_key=your_access_access_key’,aws_secret_access_access_key_access_access_access_access_key_access_key_access_access_key_secret_access_key_key_access_key_access_key’,aws_secret_access_key=your_secret_access_key_access_access_access_access_key_access_access_key_access_access_key_access_access_key_access_access_key_access_key_your_secret_access_access_your_secret_access_access_key_access_access_access_key_secret_access_access_access_access_key_access_key_access_key_access_access_key=your_access_key_access_access_key_access_access_access_key_access_access_key_access_access_key_access_key_access_key_access_access_access_key_access_access_access_access_key_access_key_access_key_access_key_access_secret_key_access_key_access_key_secret_access_key_access_secret_access_access_access_access_access_access_key_secret_access_access_your_secret_access_access_access_access_access_access_access_access_access_access_access_access_access_access_access_your_access_access_access_access_access_access_access_access_access_access_access_access_access_access_ap_access_access_access_access_ Pythonfrom boto.ec2.cloudwatch import connect_to_regionimport MySQLdbimport boto.ec2.cloudwatchdb=MySQLdb.connect(“ravit.rdshostname.ap-northeast-1.rds.amazonaws.com”,”username”,”password”,”databasename”)cursor=db.cursor()n=cursor.execute(“select * from GetActiveSessions”)n1=cursor.fetchone()s=str(n1)table=string.maketrans( ”, ”, )number=s.translate(table,”()<>,L”)numbers=int(number)reg=’ap-northeast-1’conn_cw=boto.ec2.cloudwatch.connect_to_region(reg,aws_access_key_id=’your_access_key’,aws_secret_access_key=’your_secret_key’)conn_cw.put_metric_data(namespace=’my_namespace’,name=’my_metric’,value=numbers,dimensions=’InstanceId’:’i-a1b2c3d4′)123456789101112131415161718192021222324252627from boto.ec2.cloudwatch import connect_to_regionimport MySQLdbimport boto.ec2.cloudwatchdb=MySQLdb.connect(“ravit.rdshostname.ap-northeast-1.rds.amazonaws.com”,”username”,”password”,”databasename”)cursor=db.cursor()n=cursor.execute(“select * from GetActiveSessions”)n1=cursor.fetchone()s=str(n1)table=string.maketrans( ”, ”, )number=s.translate(table,”()<>,L”)numbers=int(number)reg=’ap-northeast-1’conn_cw=boto.ec2.cloudwatch.connect_to_region(reg,aws_access_key_id=’your_access_key’,aws_secret_access_key=’your_secret_key’)conn_cw.put_metric_data(namespace=’my_namespace’,name=’my_