Skip to content
Kirill Yakovenko edited this page Apr 14, 2017 · 1 revision

We use Сloudwatch for gathering all metrics in AWS. It's the official way at AWS platform and below you can find all important metrics of Omaha-Server which we recommend to track:

1. RDS.(CloudWatch -> Metrics -> RDS -> Per-Database Metrics)

Metric Description Units Critical Limit
CPUUtilization The percentage of CPU utilization. Percents 90%
DatabaseConnections The number of database connections in use. Count Depends on instance type (please, see below)
FreeableMemory The amount of available random access memory. Bytes 90 percent of maximum. More information in Specifications for DB Instance Classes
FreeStorageSpace The amount of available storage space. Bytes 70-90 percents of maximum.

If you reached a critical limit you should upgrade your current instances' class to higher one.

Max amount of connections to database for different RDS types:

t2.micro 66
t2.small 150
m3.medium 296
t2.medium 312
m3.large 609
t2.large 648
m4.large 648
m3.xlarge 1237
r3.large 1258
m4.xlarge 1320
m2.xlarge 1412
m3.2xlarge 2492
r3.xlarge 2540

2. ElastiCache (CloudWatch -> Metrics -> ElastiCache > Cache Node Metrics)

The most important metrics which we recommend to use:

Metric Description Units Critical Limit
CPUUtilization The percentage of CPU utilization. Percents 90%
FreeableMemory The amount of free memory available on the host. Bytes 80 percent of maximum. ElastiCache Instance Classes

3. Elastic Beanstalk. How to track Elastic Beanstalk metrics:

  • Go to the Elastic Beanstalk service
  • Choose an application
  • Open the Monitoring tab
  • Click on the Edit button, if you need additional metrics

The most important metrics:

Resource Metric Description Units
AWSEBAutoScalingGroup CPUUtilization The percentage of allocated EC2 compute units that are currently in use on the instance. Percent
AWSEBAutoScalingGroup NetworkIn The number of bytes received on all network interfaces Bytes
AWSEBAutoScalingGroup NetworkOut The number of bytes sent out on all network interfaces Bytes
AWSEBAutoScalingGroup DiskReadBytes Bytes read from all instance store volumes available to the instance Bytes
AWSEBAutoScalingGroup DiskWriteBytes Bytes written to all instance store volumes available to the instance. Bytes
AWSEBLoadBalancer Latency The time elapsed, after the request leaves the load balancer until the headers of the response are received. Seconds
AWSEBLoadBalancer HealthyHostCount The number of targets that are considered healthy. Hosts
AWSEBLoadBalancer RequestCount The number of requests received by the load balancer. Requests

3.1 Elastic Beanstalk allows you to configure autoscaling which based on metrics. Follow the next steps:

  1. Choose an Elastic Beanstalk application
  2. Click on the Configuration tab
  3. Go to the scaling section(Click on the gear button)
  4. Configure a scaling trigger.

4. Inspecting celery queues.

Finding the number of tasks in a queue:
$ redis-cli -h HOST -p PORT -n DATABASE_NUMBER llen QUEUE_NAME

The default queue is named celery. To get all available queues, invoke:
$ redis-cli -h HOST -p PORT -n DATABASE_NUMBER keys \*

Note! The commands should be executed from an EC2 instance which has access to your Redis node.