{"id":23491,"date":"2017-05-03T19:08:45","date_gmt":"2017-05-03T16:08:45","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=23491"},"modified":"2021-12-17T15:53:36","modified_gmt":"2021-12-17T12:53:36","slug":"cloud-foundry-deployment-metrics-that-matter-most","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/","title":{"rendered":"Cloud Foundry Deployment Metrics That Matter Most"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#Generating_a_variety_of_metrics\" >Generating a variety of metrics<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#Virtual_machines_VMs_and_BOSH\" >Virtual machines (VMs) and BOSH<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#Cloud_Foundry_components\" >Cloud Foundry components<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#Consul\" >Consul<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#Application_metrics\" >Application metrics<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#Monitoring_third-party_services\" >Monitoring third-party services<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Generating_a_variety_of_metrics\"><\/span>Generating a variety of metrics<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Lots of metrics per se do not necessarily imply lots of value for monitoring. If you have been working with monitoring systems for quite a while, you may have noticed that the metrics you get can be roughly divided into the following three groups:<\/p>\n<ol>\n<li style=\"margin-bottom: 6px;\">Simple, clear, and easily understandable metrics (15\u201320%*).<\/li>\n<li style=\"margin-bottom: 6px;\">Metrics that are mostly useless from an operator\u2019s perspective, but may come in handy for developers during application debugging (65\u201375%*).<\/li>\n<li>Metrics that appear to be useful, but are difficult to interpret (10\u201315%*). They can be really valuable in case you are totally aware of how the system works and what exactly is being measured.<\/li>\n<\/ol>\n<p><em>Note: *The figures are based on the author\u2019s experience and represent his viewpoint.<\/em><\/p>\n<p>Being a complex system comprising several distributed components, Cloud Foundry produces a great variety of metrics. Let\u2019s take a look at those of them that are most valuable, including those that are best suited for triggering alerts.<\/p>\n<p>A Cloud Foundry deployment can emit metrics at the infrastructure, platform, and application levels.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-layers-of-monitoring-v15.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-layers-of-monitoring-v15.png\" alt=\"cloud-foundry-deployment-metrics-layers-of-monitoring-v15\" width=\"640\" class=\"aligncenter size-full wp-image-23640\" \/><\/a><small>A Cloud Foundry deployment: Layers of monitoring<\/small><\/center><\/p>\n<p>In this blog post, we will start with evaluation of metrics emitted at the infrastructure level and move up the abstraction scale to application metrics.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Virtual_machines_VMs_and_BOSH\"><\/span>Virtual machines (VMs) and BOSH<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>BOSH has a monitoring component\u2014<a href=\"https:\/\/bosh.io\/docs\/\/monitoring.html#vm\" target=\"_blank\" rel=\"noopener noreferrer\">the Health Monitor<\/a>\u2014that collects metrics from the BOSH Agents at all BOSH-deployed virtual machines.<\/p>\n<p>Note: To retrieve metrics from a BOSH Agent, one can use the following tools:<\/p>\n<ul>\n<li><a href=\"https:\/\/bosh.io\/docs\/\/hm-config.html\" target=\"_blank\" rel=\"noopener noreferrer\">Health Monitor plugins<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/cloudfoundry-attic\/bosh-hm-forwarder\" target=\"_blank\" rel=\"noopener noreferrer\">BOSH HM Forwarder<\/a><\/li>\n<li><a href=\"https:\/\/resources.docs.pivotal.io\/pdfs\/jmx-bridge-1.9.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">PCF JMX Bridge<\/a> (for PCF only)<\/li>\n<\/ul>\n<p>Below are the metrics that can be collected while running virtual machines.<\/p>\n<p><b>VM health<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metric<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.healthy<\/code><\/td>\n<td style=\"font-size: 16px;\">The simplest VM health metric. As its name suggests, the metric indicates the health of a virtual machine from the BOSH perspective (a VM is up, and all the processes on it are running). This metric is an ideal candidate for setting up alert thresholds.<\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<\/p>\n<p><b>CPU<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.cpu.user<\/code><\/td>\n<td style=\"font-size: 16px;\">The percentage of CPU utilization that occurred while executing at the user level.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.cpu.sys<\/code><\/td>\n<td style=\"font-size: 16px;\">The percentage of CPU utilization that occurred while executing at the system (kernel) level.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.cpu.wait<\/code><\/td>\n<td style=\"font-size: 16px;\">The percentage of time that a CPU(s) was idle, during which the system had to process an bulky disk I\/O request.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.load.1m<\/code><\/td>\n<td style=\"font-size: 16px;\">The load average over the last minute.<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>Note: These CPU metrics are most useful for Diego cells.<\/p>\n<p><b>Memory<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.mem.percent<\/code><\/td>\n<td style=\"font-size: 16px;\">Memory usage in %<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.swap.percent<\/code><\/td>\n<td style=\"font-size: 16px;\">Swap usage in %<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.mem.kb<\/code><\/td>\n<td style=\"font-size: 16px;\">Memory usage in KB<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.swap.kb<\/code><\/td>\n<td style=\"font-size: 16px;\">Swap usage in KB<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>Note: These memory metrics are most useful for Diego cells.<\/p>\n<p><b>Storage<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.disk.&lt;type&gt;.percent<\/code><\/td>\n<td style=\"font-size: 16px;\">The amount of the space used<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">system.disk.&lt;type&gt;.inode_percent<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of the inodes used<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>Where <type> can be:<\/p>\n<ul>\n<li>system: \/ (root partition)<\/li>\n<li>persistent: partition for \/var\/vcap\/store<\/li>\n<li>ephemeral: partition for \/var\/vcap\/data<\/li>\n<\/ul>\n<p>These metrics are most useful for databases.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-from-a-specific-virtual-machine.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-from-a-specific-virtual-machine.jpg\" alt=\"cloud-foundry-deployment-metrics-from-a-specific-virtual-machine\" width=\"640\" class=\"aligncenter size-full wp-image-23544\" \/><\/a><small>A dashboard with metrics from a specific VM (created with <a href=\"https:\/\/www.altoros.com\/blog\/introducing-heartbeat-a-full-stack-monitoring-tool-for-cloud-foundry\/\">Hearbeat<\/a>)<\/small><\/center><\/p>\n<p>As you can see, the metrics monitored by BOSH are quite basic, so it makes sense to deploy a more advanced collector of system metrics to also monitor I\/O (recommended for databases) or Network (recommended for Gorouter, HAProxy, and NGINX) metrics.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cloud_Foundry_components\"><\/span>Cloud Foundry components<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The metrics gathered from the Cloud Foundry system components are accepted by the Loggregator and transported through a chain of its units, the last being\u2014Firehose. It further streams the received metrics via nozzles to third-party systems for processing and persistence.<\/p>\n<p>Let\u2019s look at the most valuable metrics emitted by specific Cloud Foundry components.<\/p>\n<p><b>Gorouter<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">total_routes<\/code><\/td>\n<td style=\"font-size: 16px;\">The current number of the registered routes. The count on all the routers should be the same, so this metric is a good candidate for setting up alert thresholds.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">total_requests<\/code><\/td>\n<td style=\"font-size: 16px;\">The lifetime** number of the received requests.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">rejected_requests<\/code><\/td>\n<td style=\"font-size: 16px;\">The lifetime number of bad requests received by Gorouter.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">bad_gateways<\/code><\/td>\n<td style=\"font-size: 16px;\">The lifetime number of bad gateways.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6;\">latency.&lt;component&gt;<\/code><\/td>\n<td style=\"font-size: 16px;\">The time (in milliseconds) it took the Gorouter to handle requests from each component (e.g., a Cloud Controller and UAA) to its endpoints.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6;\">requests.&lt;component&gt;<\/code><\/td>\n<td style=\"font-size: 16px;\">The lifetime number of the requests received for each component (e.g., a Cloud Controller and UAA).<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">responses<\/code><\/td>\n<td style=\"font-size: 16px;\">The lifetime number of the HTTP responses.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">responses.XXX<\/code><\/td>\n<td style=\"font-size: 16px;\">The lifetime number of the HTTP response status codes of type XXX.<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>**It\u2019s recommended to convert all the lifetime metrics to rate.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-gorouter.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-gorouter.jpg\" alt=\"cloud-foundry-deployment-metrics-gorouter\" width=\"640\" class=\"aligncenter size-full wp-image-23545\" \/><\/a><small>A dashboard with metrics from Gorouter<\/small><\/center><\/p>\n<p>In addition, you can derive some useful metrics from the HttpStartStop event inside a nozzle.<\/p>\n<p>To do so, you need to use the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">Uri<\/code> field inside <a href=\"https:\/\/github.com\/cloudfoundry\/sonde-go\/blob\/1e05e0f44d5618f7a13662cf609f0f8bbbf770ea\/events\/http.pb.go#L217\" target=\"_blank\" rel=\"noopener noreferrer\">the HttpStartStop struct<\/a> to get a URI, <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">StartTimestamp<\/code> \/ <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">StopTimestamp<\/code> to get a time interval, and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">StatusCode<\/code> to distinguish the successfully completed responses from the failed ones.<\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">request<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of the successfully completed HTTP responses for a particular URL<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">error<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of the failed HTTP responses for a particular URL<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">response times<\/code><\/td>\n<td style=\"font-size: 16px;\">Response time for a particular URL<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">responses.XXX<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of the HTTP response status codes of type XXX for a particular URL<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p><b>Diego<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CrashedActualLRPs<\/code><\/td>\n<td style=\"font-size: 16px;\">The total number of <a href=\"https:\/\/docs.cloudfoundry.org\/concepts\/diego\/diego-auction.html\" target=\"_blank\" rel=\"noopener noreferrer\">the long-runn\u0456ng process<\/a> (LRP) instances that have crashed<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">LRPsMissing<\/code><\/td>\n<td style=\"font-size: 16px;\">The total number of the LRP instances that are desired, but have no record in <a href=\"https:\/\/www.google.com\/url?q=https:\/\/github.com\/cloudfoundry\/bbs&#038;sa=D&#038;ust=1493917433031000&#038;usg=AFQjCNGkPt1MWXkWJwcqli7Qo4Ht7AgHqw\" target=\"_blank\" rel=\"noopener noreferrer\">the Bulletin Board System<\/a> (BBS)<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">LRPsRunning<\/code><\/td>\n<td style=\"font-size: 16px;\">The total number of the LRP instances that are running on cells<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>The metrics below are good candidates for setting up alert thresholds.<\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">RoutesTotal<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of the routes in the route-emitter\u2019s routing table.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">ContainerCount<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of containers hosted on a cell.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">UnhealthyCell<\/code><\/td>\n<td style=\"font-size: 16px;\">Determines whether the cell has failed to pass its healthcheck against the Garden backend. \u201c0\u201d signifies healthy, and \u201c1\u201d signifies unhealthy.<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>The metrics that are useful for Capacity Planning are also worth mentioning.<\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CapacityRemainingContainers<\/code><\/td>\n<td style=\"font-size: 16px;\">The remaining number of containers this cell can host.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CapacityRemainingDisk<\/code><\/td>\n<td style=\"font-size: 16px;\">The remaining amount (in MiB) of the disk space available for this cell to allocate to containers.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CapacityRemainingMemory<\/code><\/td>\n<td style=\"font-size: 16px;\">The remaining amount (in MiB) of the memory available for this cell to allocate to containers.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CapacityTotalContainers<\/code><\/td>\n<td style=\"font-size: 16px;\">The total number of containers this cell can host. Please, note that this value is set to 250 <a href=\"https:\/\/github.com\/cloudfoundry\/garden-runc-release\/blob\/v1.4.0\/jobs\/garden\/spec#L120\" target=\"_blank\" rel=\"noopener noreferrer\">by default<\/a>). <b>To get viable data, set the relevant value for your infrastructure.<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CapacityTotalDisk<\/code><\/td>\n<td style=\"font-size: 16px;\">The total amount (in MiB) of the disk available for this cell to allocate to containers.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CapacityTotalMemory<\/code><\/td>\n<td style=\"font-size: 16px;\">The total amount in MiB of the memory available for this cell to allocate to containers.<\/td>\n<\/tr>\n<\/table>\n<p>\n<center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-diego.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-diego.jpg\" alt=\"cloud-foundry-deployment-metrics-diego\" width=\"640\" class=\"aligncenter size-full wp-image-23546\" \/><\/a><small>A dashboard with Diego metrics (capacity)<\/small><\/center><\/p>\n<p><b>Etcd<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">IsLeader<\/code><\/td>\n<td style=\"font-size: 16px;\">Determines whether the host is currently the Leader<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">Followers<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of Followers the host currently has<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>The fluctuation of these metrics can signify network, configuration, or Cloud Foundry upgrade issues.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Consul\"><\/span>Consul<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Firehose does not stream metrics from Consul, so you need a third-party agent to monitor this Cloud Foundry component.<\/p>\n<p>Among useful metrics are <em>the current leader<\/em> and <em>the number of peers<\/em>. The fluctuation of these metrics can signify network, configuration, or Cloud Foundry upgrade issues.<\/p>\n<p>Furthermore, Consul stores the results of the service health checks. You can visualize these results on a single dashboard and attach alert rules (based on the service status and the above described metrics) to it.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-a-consul-monitoring-dashboard.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-a-consul-monitoring-dashboard.jpg\" alt=\"cloud-foundry-deployment-metrics-a-consul-monitoring-dashboard\" width=\"640\" class=\"aligncenter size-full wp-image-23547\" \/><\/a><small>A Consul monitoring dashboard<\/small><\/center><\/p>\n<p><b>Cloud Controller<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">total_users<\/code><\/td>\n<td style=\"font-size: 16px;\">The total number of users ever created, including inactive users.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">http_status.XXX<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of the HTTP response status codes of type XXX. It makes sense to set up alert thresholds for 5XX status codes.<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">log_count.debug<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of log messages of different severities. Pay attention to the fatal\/error\/warn levels. A good candidate for setting up alert thresholds.<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p><b>UAA<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">user_authentication_failure_count<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of failed user authentication attempts since the last start of the UAA process<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">user_not_found_count<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of times a user was not found since the last start of the UAA process<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">user_password_changes<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of successful password changes by a user since the last start of the UAA process<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">user_password_failures<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of failed password changes by a user since the last start of the UAA process<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>These metrics are good candidates for setting up security alert thresholds.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Application_metrics\"><\/span>Application metrics<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>There are several more components inside Cloud Foundry that do not stream metrics via Firehose, but also need monitoring to assure flawless operation of your Cloud Foundry deployment (e.g., internal MySQL\/PostgreSQL, HAProxy, or NGINX).<\/p>\n<p>See the Monitoring third-party services section to get an idea of how to retrieve metrics from such components.<\/p>\n<p>The container metrics and HTTP events from applications are also streamed via Firehose and, hence, are available on Cloud Foundry out of the box.<\/p>\n<p><b>System metrics<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">CPU<\/code><\/td>\n<td style=\"font-size: 16px;\">CPU usage<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">Memory<\/code><\/td>\n<td style=\"font-size: 16px;\">Memory usage<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">Disk<\/code><\/td>\n<td style=\"font-size: 16px;\">Disk usage<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p><b>HTTP metrics<\/b><\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metric<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">responses.XXX<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of the HTTP response status codes of type XXX (it makes sense to convert them to rate)<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>In addition, you can derive some useful metrics from the HttpStartStop event inside a nozzle.<\/p>\n<p>To do so, you need to use the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">ApplicationId<\/code> field inside <a href=\"https:\/\/github.com\/cloudfoundry\/sonde-go\/blob\/1e05e0f44d5618f7a13662cf609f0f8bbbf770ea\/events\/http.pb.go#L217\" target=\"_blank\" rel=\"noopener noreferrer\">the HttpStartStop struct<\/a> to map a request to a particular application. <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">StartTimestamp<\/code> \/ <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">StopTimestamp<\/code< to get a time interval  and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">StatusCode<\/code> to distinguish good responses from the bad ones.<\/p>\n<table border=\"1\">\n<tr>\n<th style=\"font-size: 16px;\"><b>Metrics<\/b><\/th>\n<th style=\"font-size: 16px;\"><b>Description<\/b><\/th>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">request<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of good HTTP responses<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">error<\/code><\/td>\n<td style=\"font-size: 16px;\">The number of bad HTTP responses<\/td>\n<\/tr>\n<tr>\n<td style=\"font-size: 16px;\"><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">response times<\/code><\/td>\n<td style=\"font-size: 16px;\">Application response time<\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n<p>You can retrieve more technical metrics by using certain buildpack internals (e.g., JMX integration, APM agents, etc.). To get business metrics, you can define them inside the application and then send to a metrics receiving system (e.g., a statsd daemon).<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-application-visualized.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-application-visualized.jpg\" alt=\"cloud-foundry-deployment-metrics-application-visualized\" width=\"640\" class=\"aligncenter size-full wp-image-23549\" \/><\/a><small>Application metrics visualized<\/small><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Monitoring_third-party_services\"><\/span>Monitoring third-party services<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Some services (e.g., RabbitMQ or Redis) stream metrics via Firehose, so all you need to start monitoring them is deploy a Firehose nozzle. With the services that do not send metrics to Firehose, things get a bit more complicated. You need to gather metrics on your own, know where to collect them from (e.g., IP+Port) and, probably, what the credentials are. Hopefully, there are lots of metric collectors featuring a predefined integration with a great number of services. Thus, you need to install the agent on the service and create a proper auto-configuration (e.g., based on a BOSH manifest file).<\/p>\n<p>Similarly, you can monitor the Cloud Foundry components that do not stream metrics via Firehose (e.g., internal MySQL\/PostgreSQL, HAProxy, or NGINX).<\/p>\n<p>&nbsp;<\/p>\n<p>All the dashboards in the blog post were taken from <a href=\"https:\/\/www.altoros.com\/blog\/introducing-heartbeat-a-full-stack-monitoring-tool-for-cloud-foundry\/\">Heartbeat<\/a>\u2014a monitoring tool containing all the mentioned metrics and many others.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/introducing-heartbeat-a-full-stack-monitoring-tool-for-cloud-foundry\/\">Introducing Heartbeat, a Full-Stack Monitoring Tool for Cloud Foundry<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/altoros-heartbeat-adds-full-stack-monitoring-for-pivotal-cloud-foundry\/\">Altoros Heartbeat Adds Full-Stack Monitoring for Pivotal Cloud Foundry<\/a><\/li>\n<\/ul>\n<p><center><br \/>\n<!--HubSpot Call-to-Action Code --><span class=\"hs-cta-wrapper\" id=\"hs-cta-wrapper-509ef169-ae96-4c51-a475-4d4093b58d2f\"><span class=\"hs-cta-node hs-cta-509ef169-ae96-4c51-a475-4d4093b58d2f\" id=\"hs-cta-509ef169-ae96-4c51-a475-4d4093b58d2f\"><!--[if lte IE 8]>\n\n<div id=\"hs-cta-ie-element\"><\/div>\n\n<![endif]--><a href=\"https:\/\/cta-redirect.hubspot.com\/cta\/redirect\/2950617\/509ef169-ae96-4c51-a475-4d4093b58d2f\" ><img decoding=\"async\" class=\"hs-cta-img\" id=\"hs-cta-img-509ef169-ae96-4c51-a475-4d4093b58d2f\" style=\"border-width:0px;\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/2950617\/509ef169-ae96-4c51-a475-4d4093b58d2f.png\"  alt=\"Learn More about Heartbeat - Cloud Foundry Monitoring Solution\"\/><\/a><\/span><script charset=\"utf-8\" src=\"https:\/\/js.hscta.net\/cta\/current.js\"><\/script><script type=\"text\/javascript\"> hbspt.cta.load(2950617, '509ef169-ae96-4c51-a475-4d4093b58d2f', {}); <\/script><\/span><!-- end HubSpot Call-to-Action Code --><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Generating a variety of metrics<\/p>\n<p>Lots of metrics per se do not necessarily imply lots of value for monitoring. If you have been working with monitoring systems for quite a while, you may have noticed that the metrics you get can be roughly divided into the following three groups:<\/p>\n<p>Simple, clear, and [&#8230;]<\/p>\n","protected":false},"author":137,"featured_media":23639,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,865,206],"class_list":["post-23491","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-heartbeat","tag-oss-cloud-foundry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cloud Foundry Deployment Metrics That Matter Most | Altoros<\/title>\n<meta name=\"description\" content=\"What Cloud Foundry metrics should we gather from VMs, BOSH, CF components, apps and the rest of the system? Here&#039;s a deep overview across the full stack.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cloud Foundry Deployment Metrics That Matter Most | Altoros\" \/>\n<meta property=\"og:description\" content=\"Generating a variety of metrics Lots of metrics per se do not necessarily imply lots of value for monitoring. If you have been working with monitoring systems for quite a while, you may have noticed that the metrics you get can be roughly divided into the following three groups: Simple, clear, and [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-03T16:08:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-17T12:53:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Anton Soroko\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anton Soroko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/\",\"name\":\"Cloud Foundry Deployment Metrics That Matter Most | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif\",\"datePublished\":\"2017-05-03T16:08:45+00:00\",\"dateModified\":\"2021-12-17T12:53:36+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/9b61a97e5031949a1df3550040682232\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cloud Foundry Deployment Metrics That Matter Most\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/9b61a97e5031949a1df3550040682232\",\"name\":\"Anton Soroko\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/Soroko_bio-150x150.png\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/Soroko_bio-150x150.png\",\"caption\":\"Anton Soroko\"},\"description\":\"Anton Soroko is a Senior Cloud Foundry Engineer at Altoros. He has a strong background in system administration, site reliability engineering, and IT infrastructure support. Anton has an extensive experience with the monitoring systems that maintain dozens of thousands of servers and hundreds of services. In addition, Anton has a proven track record of delivering quality solutions as part of system monitoring and continuous integration tasks.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/anton-soroko\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cloud Foundry Deployment Metrics That Matter Most | Altoros","description":"What Cloud Foundry metrics should we gather from VMs, BOSH, CF components, apps and the rest of the system? Here's a deep overview across the full stack.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/","og_locale":"en_US","og_type":"article","og_title":"Cloud Foundry Deployment Metrics That Matter Most | Altoros","og_description":"Generating a variety of metrics Lots of metrics per se do not necessarily imply lots of value for monitoring. If you have been working with monitoring systems for quite a while, you may have noticed that the metrics you get can be roughly divided into the following three groups: Simple, clear, and [...]","og_url":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/","og_site_name":"Altoros","article_published_time":"2017-05-03T16:08:45+00:00","article_modified_time":"2021-12-17T12:53:36+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif","type":"image\/gif"}],"author":"Anton Soroko","twitter_misc":{"Written by":"Anton Soroko","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/","url":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/","name":"Cloud Foundry Deployment Metrics That Matter Most | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif","datePublished":"2017-05-03T16:08:45+00:00","dateModified":"2021-12-17T12:53:36+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/9b61a97e5031949a1df3550040682232"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/cloud-foundry-deployment-metrics-that-matter-most-v13.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-metrics-that-matter-most\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cloud Foundry Deployment Metrics That Matter Most"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/9b61a97e5031949a1df3550040682232","name":"Anton Soroko","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/Soroko_bio-150x150.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/Soroko_bio-150x150.png","caption":"Anton Soroko"},"description":"Anton Soroko is a Senior Cloud Foundry Engineer at Altoros. He has a strong background in system administration, site reliability engineering, and IT infrastructure support. Anton has an extensive experience with the monitoring systems that maintain dozens of thousands of servers and hundreds of services. In addition, Anton has a proven track record of delivering quality solutions as part of system monitoring and continuous integration tasks.","url":"https:\/\/www.altoros.com\/blog\/author\/anton-soroko\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/23491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/137"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=23491"}],"version-history":[{"count":63,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/23491\/revisions"}],"predecessor-version":[{"id":65754,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/23491\/revisions\/65754"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/23639"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=23491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=23491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=23491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}