Modern applications are distributed in nature, and are often following a service-oriented or microservices architecture. Components of this system will generate data in the form of metrics, logs, and more, but all of these data sources are distributed throughout your environment. With any system, to support operations, you have to have insight into the current state of the infrastructure and applications. You need a way to collect these data points and analyze them to help operate daily, and improve your operations over time. Your network will generate data, like flow logs. The servers will be generating data, such as how much CPU is currently being used, and your database layer will generate data, such as number of simultaneous connections. How can you collect this data in one centralized location, so you can actively monitor and operate your system? With Amazon CloudWatch, you can monitor your cloud infrastructure intelligently. CloudWatch will collect data from your cloud-based infrastructure in one centralized location. With this data, you can create statistics, which drive operational procedures using features such as CloudWatch Alarms, which we will talk about in a bit. Let's consider this situation. You get reports from your user base that they're noticing a latency in your services. Since you now have been made aware of an issue, you can start looking at your system to figure out what the cause of the issue is. Upon investigation, you realize that the CPU load is around 95 percent across all of your server instances. On-premises, to fix this, you would page an admin, who then launches another server to help bring the load down across the servers. The problem with this approach, manually responding to a problem, is that your users experience interruption before you can mitigate the disruption to your services. Wouldn't it be nice if we could instead anticipate and mitigate the disruption well before any of our customers are impacted? With Amazon CloudWatch, you can configure metrics and alarms to do just that. CloudWatch collects data points over time and provides you with statistics about your infrastructure. So, you can then create alarms and trigger automated events based on those statistics. Consider our previous example, instead of waiting until hearing about latency from users, instead, you can create an alarm that says, if a group of EC2 instances has CPU over 60 percent for more than 5 minutes, trigger an auto scaling policy, automatically launch a new server into the pool, and alert an admin. The visibility into the CPU across EC2 instances, is what allows you to anticipate that your users will soon be experiencing latency if you don't act. CloudWatch alarms can be configured for more than just CPU utilization. You can choose from hundreds of different metrics, or create your own custom metrics for alarms that matter to you. In addition to alarms, CloudWatch also allows you to visualize the statistics about your environment through dashboards. You can use out-of-the-box dashboards to view built-in or custom metrics, and you can build your own custom dashboards or partner with a wide range of consultants through the Amazon Partner Network. When building custom metrics, consider the data being generated in your log files. Systems generate different types of log files that have a wealth of information about system performance and error rates. CloudWatch Logs is a place where you can send your log files for viewing in the console, and to stream to other services, like Lambda or Amazon Elasticsearch for analytics. CloudWatch is integrated with over 70 AWS services. You can use CloudWatch to set alarms, visualize logs and metrics side-by-side, take automated actions, troubleshoot operational issues, and discover insights to optimize your applications. Getting started with CloudWatch is easy and there's no up-front commitment or minimum fee. For more information, visit aws.amazon.com/cloudwatch.