{"id":10912,"date":"2016-11-24T11:34:31","date_gmt":"2016-11-24T09:34:31","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=10912"},"modified":"2016-11-24T11:48:32","modified_gmt":"2016-11-24T09:48:32","slug":"monitoring-an-openstack-deployment-with-prometheus-and-grafana","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/","title":{"rendered":"Monitoring an Openstack deployment with Prometheus and Grafana"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Following <\/span><a href=\"https:\/\/blog.zhaw.ch\/icclab\/installing-monasca-a-happy-ending-after-much-sadness-and-woe\/\"><span style=\"font-weight: 400\">our previous blog post<\/span><\/a><span style=\"font-weight: 400\">, we are still looking at tools for collecting metrics from an Openstack deployment in order to understand its resource utilization. Although Monasca has a comprehensive set of metrics and alarm definitions, the complex installation process combined with a lack of documentation makes it a frustrating experience to get it up and running. Further, although it is complex, with many moving parts, it was difficult to configure it to obtain the analysis we wanted from the raw data, viz how many of our servers are overloaded over different timescales in different respects (cpu, memory, disk io, network io). For these reasons we decided to try Prometheus with Grafana which turned out to be much easier to install and configure (taking less than an hour to set up!). This blog post covers the installation process and configuration of <\/span><a href=\"https:\/\/prometheus.io\/\"><span style=\"font-weight: 400\">Prometheus<\/span><\/a><span style=\"font-weight: 400\"> and <\/span><a href=\"http:\/\/grafana.org\/\"><span style=\"font-weight: 400\">Grafana<\/span><\/a><span style=\"font-weight: 400\"> in a Docker container and how to install and configure <\/span><a href=\"https:\/\/github.com\/CanonicalLtd\/prometheus-openstack-exporter\"><span style=\"font-weight: 400\">Canonical\u2019s Prometheus Openstack exporter<\/span><\/a><span style=\"font-weight: 400\"> to collect a small set of metrics related to an Openstack deployment.<\/span><\/p>\n<p><!--more--><\/p>\n<p><i><span style=\"font-weight: 400\">Note that minor changes to this HOWTO are required to install theses services in a VM or in a host machine when using containers is not an option. As preparation, take note of your Openstack deployment&#8217;s locations for Keystone and the Docker host. Remember that all downloads should be verified by signature comparison for production use.<br \/>\n<\/span><\/i><\/p>\n<h1><strong>Installing and configuring Prometheus<\/strong><\/h1>\n<p><span style=\"font-weight: 400\">First of all pull the Ubuntu image into you docker machine. Let\u2019s call it <\/span><b><i>docker-host.<\/i><\/b><\/p>\n<p><i><span style=\"font-weight: 400\">Note that in this blog post we describe Prometheus installation process step-by-step\u00a0<\/span><\/i><i><span style=\"font-weight: 400\">&#8211;\u00a0we chose to install it from scratch to get a better understanding of the system, but using the pre-canned <a href=\"https:\/\/hub.docker.com\/r\/prom\/prometheus\/\">Docker Hub<\/a> image is also possible<\/span><\/i><i><span style=\"font-weight: 400\">. <\/span><\/i><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">docker pull ubuntu:14.04<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Then create the docker container opening the port 9090 which will be used to get\/push metrics into Prometheus.<\/span><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">docker run -it -p 9090:9090 --name prometheus ubuntu:14.04<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Inside the container <\/span><a href=\"https:\/\/prometheus.io\/download\/\"><span style=\"font-weight: 400\">download<\/span><\/a><span style=\"font-weight: 400\"> the latest version of Prometheus and uncompress it (version <\/span><span style=\"font-weight: 400\">1.3.1 is used in this HOWTO; the download size is ca. 16 MB<\/span><span style=\"font-weight: 400\">).<\/span><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">wget https:\/\/github.com\/prometheus\/prometheus\/releases\/download\/v1.3.1\/prometheus-1.3.1.linux-amd64.tar.gz<\/span>\r\n<span style=\"font-weight: 400\">tar xvf prometheus-1.3.1.linux-amd64.tar.gz<\/span>\r\n<span style=\"font-weight: 400\">cd prometheus-1.3.1.linux-amd64<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Configure <\/span><i><span style=\"font-weight: 400\">prometheus.yml<\/span><\/i><span style=\"font-weight: 400\"> adding the targets from which prometheus should scrape metrics. See the example below for the Openstack exporter (assuming it is installed in the same <\/span><b><i>docker-host<\/i><\/b><span style=\"font-weight: 400\">):<\/span><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">scrape_configs:<\/span>\r\n<span style=\"font-weight: 400\"> \u00a0- job_name: 'openstack-deployment-1'<\/span>\r\n<span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0scrape_interval: 5m<\/span>\r\n<span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0Static_configs:<\/span>\r\n<span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0- targets: ['<\/span><b><i>docker-host<\/i><\/b><span style=\"font-weight: 400\">:9183']<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Start the Prometheus service:<\/span><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">.\/prometheus -config.file=prometheus.yml<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Similarly, install and configure the <\/span><a href=\"https:\/\/github.com\/CanonicalLtd\/prometheus-openstack-exporter\"><span style=\"font-weight: 400\">Prometheus Openstack exporter<\/span><\/a> <a href=\"https:\/\/github.com\/CanonicalLtd\/prometheus-openstack-exporter\"><span style=\"font-weight: 400\">i<\/span><\/a><span style=\"font-weight: 400\">n<\/span> <span style=\"font-weight: 400\">a<\/span><span style=\"font-weight: 400\">n<\/span><span style=\"font-weight: 400\">o<\/span><span style=\"font-weight: 400\">t<\/span><span style=\"font-weight: 400\">h<\/span><span style=\"font-weight: 400\">e<\/span><span style=\"font-weight: 400\">r<\/span> <span style=\"font-weight: 400\">c<\/span><span style=\"font-weight: 400\">o<\/span><span style=\"font-weight: 400\">n<\/span><span style=\"font-weight: 400\">t<\/span><span style=\"font-weight: 400\">a<\/span><span style=\"font-weight: 400\">i<\/span><span style=\"font-weight: 400\">n<\/span><span style=\"font-weight: 400\">e<\/span><span style=\"font-weight: 400\">r. Note that this container needs to be set up manually as there are configuration files to be changed and Openstack libraries to be installed.<\/span><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">docker run -it -p 9183:9183 --name prometheus-openstack-exporter ubuntu:14.04<\/span>\r\n<span style=\"font-weight: 400\">sudo apt-get install python-neutronclient python-novaclient python-keystoneclient python-netaddr unzip wget python-pip python-dev python-yaml<\/span>\r\n<span style=\"font-weight: 400\">pip install prometheus_client<\/span>\r\n<span style=\"font-weight: 400\">wget https:\/\/github.com\/CanonicalLtd\/prometheus-openstack-exporter\/archive\/master.zip<\/span>\r\n<span style=\"font-weight: 400\">unzip master.zip<\/span>\r\n<span style=\"font-weight: 400\">cd prometheus-openstack-exporter-master\/<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Next, configure <\/span><i><span style=\"font-weight: 400\">prometheus-openstack-exporter.yaml<\/span><\/i> <span style=\"font-weight: 400\">create the <\/span><i><span style=\"font-weight: 400\">\/var\/cache\/prometheus-openstack-exporter\/ <\/span><\/i><span style=\"font-weight: 400\">directory and the novarc file containing credentials for Nova user.<\/span><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">mkdir \/var\/cache\/prometheus-openstack-exporter\/<\/span>\r\n<span style=\"font-weight: 400\">echo \u00a0export OS_USERNAME=<strong>nova-username<\/strong> \\<\/span>\r\n<span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0export OS_PASSWORD=<strong>nova-password<\/strong> \\<\/span>\r\n<span style=\"font-weight: 400\">      export OS_AUTH_URL=<\/span><strong>http:\/\/keystone-url:5000\/v2.0<\/strong><span style=\"font-weight: 400\"> \\<\/span>\r\n<span style=\"font-weight: 400\">      export OS_REGION_NAME=<strong>RegionOne<\/strong> \\<\/span>\r\n<span style=\"font-weight: 400\">      export OS_TENANT_NAME=services &gt; novarc<\/span>\r\n<span style=\"font-weight: 400\">source novarc<\/span>\r\n<span style=\"font-weight: 400\">.\/prometheus-openstack-exporter prometheus-openstack-exporter.yaml<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Then you\u2019ve got a fully functional Prometheus system with some Openstack metrics on it! Visit <\/span><strong>http:\/\/docker-host:9090<\/strong><span style=\"font-weight: 400\">\u00a0to graph and see which metrics are available.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Here is the list of the 18 metrics currently collected by <\/span><a href=\"https:\/\/github.com\/CanonicalLtd\/prometheus-openstack-exporter\"><span style=\"font-weight: 400\">Prometheus Openstack exporter<\/span><\/a><span style=\"font-weight: 400\">:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">neutron_public_ip_usage<\/span><\/td>\n<td><span style=\"font-weight: 400\">hypervisor_memory_mbs_total<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">neutron_net_size<\/span><\/td>\n<td><span style=\"font-weight: 400\">hypervisor_running_vms<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">hypervisor_memory_mbs_used<\/span><\/td>\n<td><span style=\"font-weight: 400\">hypervisor_disk_gbs_total<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">hypervisor_vcpus_total<\/span><\/td>\n<td><span style=\"font-weight: 400\">hypervisor_disk_gbs_used<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">openstack_allocation_ratio<\/span><\/td>\n<td><span style=\"font-weight: 400\">hypervisor_vcpus_used<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">nova_instances<\/span><\/td>\n<td><span style=\"font-weight: 400\">nova_resources_ram_mbs<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">nova_resources_disk_gbs<\/span><\/td>\n<td><span style=\"font-weight: 400\">swift_replication_duration_seconds<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">openstack_exporter_cache_age_seconds<\/span><\/td>\n<td><span style=\"font-weight: 400\">swift_disk_usage_bytes<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">swift_replication_stats<\/span><\/td>\n<td><span style=\"font-weight: 400\">swift_quarantined_objects<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400\">Alternatively you could use <\/span><a href=\"https:\/\/github.com\/prometheus\/node_exporter\"><span style=\"font-weight: 400\">Prometheus\u2019s Node exporter<\/span><\/a><span style=\"font-weight: 400\"> for more detailed metrics on node usage &#8211; this needs to be installed in the controller\/compute nodes and the <em>prometheus.yml<\/em> configuration file also needs to be changed. A docker container is also available at <\/span><a href=\"https:\/\/hub.docker.com\/r\/prom\/node-exporter\/\"><span style=\"font-weight: 400\">Docker Hub<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Although Prometheus provides some rudimentary graph support, combining it with a more powerful graphing solution makes it much easier to see what\u2019s going on in your system. For this reason, we set up Grafana.<\/span><\/p>\n<p><strong style=\"color: #000000;line-height: 1.625\">Installing Grafana<\/strong><\/p>\n<p><span style=\"font-weight: 400\">The latest version of Grafana (currently 4.0.0-beta2) had a lot of improvements in its user interface, it also supports now alerting and notifications for every panel available &#8211; refer to the <\/span><a href=\"http:\/\/docs.grafana.org\/guides\/whats-new-in-v4\/\"><span style=\"font-weight: 400\">documentation<\/span><\/a><span style=\"font-weight: 400\"> for more information.\u00a0<\/span><span style=\"font-weight: 400\">Its integration with Prometheus is very straightforward, as described below.<\/span><\/p>\n<p><span style=\"font-weight: 400\">First of all, pull the grafana image into your <\/span><strong>docker-host<\/strong> <span style=\"font-weight: 400\">and create the docker container opening the port 3000 used to access it.<\/span><\/p>\n<pre><code>\r\n<span style=\"font-weight: 400\">docker pull grafana\/grafana<\/span>\r\n<span style=\"font-weight: 400\">docker run -d -p 3000:3000 grafana\/grafana:4.0.0-beta2<\/span>\r\n<\/code>\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Visit <\/span><strong>http:\/\/docker-host:3000<\/strong><span style=\"font-weight: 400\"> and use the credentials <span style=\"text-decoration: underline\">admin\/admin<\/span> to log into the dashboard. In the Data Sources tab, add a new corresponding data source.<\/span><\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-10916\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png\" alt=\"selection_005\" width=\"300\" height=\"149\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-768x382.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-1024x510.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-500x249.png 500w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005.png 1471w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Create a new dashboard and add panels containing graphs using the Prometheus datasource.<\/span><\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_006.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10915 aligncenter\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_006-300x144.png\" alt=\"selection_006\" width=\"300\" height=\"144\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_006-300x144.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_006-768x369.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_006-1024x492.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_006-500x240.png 500w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_006.png 1480w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Play around with metrics available and create your own dashboard! See a simple example below.<\/span><\/p>\n<h1><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_004.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10914 aligncenter\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_004-300x150.png\" alt=\"selection_004\" width=\"300\" height=\"150\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_004-300x150.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_004-768x385.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_004-1024x513.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_004-500x250.png 500w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_004.png 1484w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h1>\n<h1><strong>Conclusion<\/strong><\/h1>\n<p><span style=\"font-weight: 400\">Although not many metrics are available yet to monitor an Openstack deployment the combination of Prometheus and Grafana is quite powerful for visualising data; also it was much easier to set up in comparison with Monasca. Further, from a cursory glance, Prometheus seems to be more flexible than Monasca and for these reasons it appears more promising. That said, we are still looking into Prometheus and how it can be used to properly understand resource consumption in an Openstack context, but that will come in another blog post!<\/span><\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/docker\/\">docker<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/grafana\/\">Grafana<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/monasca\/\">monasca<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack\/\">openstack<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/prometheus\/\">Prometheus<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>Following our previous blog post, we are still looking at tools for collecting metrics from an Openstack deployment in order to understand its resource utilization. Although Monasca has a comprehensive set of metrics and alarm definitions, the complex installation process combined with a lack of documentation makes it a frustrating experience to get it up [&hellip;]<\/p>\n","protected":false},"author":101,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1,15,21],"tags":[484,825,510,240,824],"features":[],"class_list":["post-10912","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-howtos","category-openstack-2","tag-docker","tag-grafana","tag-monasca","tag-openstack","tag-prometheus"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Monitoring an Openstack deployment with Prometheus and Grafana - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Monitoring an Openstack deployment with Prometheus and Grafana\" \/>\n<meta property=\"og:description\" content=\"Following our previous blog post, we are still looking at tools for collecting metrics from an Openstack deployment in order to understand its resource utilization. Although Monasca has a comprehensive set of metrics and alarm definitions, the complex installation process combined with a lack of documentation makes it a frustrating experience to get it up [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2016-11-24T09:34:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-11-24T09:48:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png\" \/>\n<meta name=\"author\" content=\"Bruno Grazioli\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bruno Grazioli\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/\"},\"author\":{\"name\":\"Bruno Grazioli\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba\"},\"headline\":\"Monitoring an Openstack deployment with Prometheus and Grafana\",\"datePublished\":\"2016-11-24T09:34:31+00:00\",\"dateModified\":\"2016-11-24T09:48:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/\"},\"wordCount\":832,\"commentCount\":19,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png\",\"keywords\":[\"docker\",\"Grafana\",\"monasca\",\"openstack\",\"Prometheus\"],\"articleSection\":[\"*.*\",\"HowTos\",\"OpenStack\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/\",\"name\":\"Monitoring an Openstack deployment with Prometheus and Grafana - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png\",\"datePublished\":\"2016-11-24T09:34:31+00:00\",\"dateModified\":\"2016-11-24T09:48:32+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005.png\",\"width\":1471,\"height\":732},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Monitoring an Openstack deployment with Prometheus and Grafana\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba\",\"name\":\"Bruno Grazioli\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g\",\"caption\":\"Bruno Grazioli\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/gaea\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Monitoring an Openstack deployment with Prometheus and Grafana - Service Engineering (ICCLab &amp; SPLab)","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:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/","og_locale":"en_US","og_type":"article","og_title":"Monitoring an Openstack deployment with Prometheus and Grafana","og_description":"Following our previous blog post, we are still looking at tools for collecting metrics from an Openstack deployment in order to understand its resource utilization. Although Monasca has a comprehensive set of metrics and alarm definitions, the complex installation process combined with a lack of documentation makes it a frustrating experience to get it up [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2016-11-24T09:34:31+00:00","article_modified_time":"2016-11-24T09:48:32+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png","type":"","width":"","height":""}],"author":"Bruno Grazioli","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bruno Grazioli","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/"},"author":{"name":"Bruno Grazioli","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba"},"headline":"Monitoring an Openstack deployment with Prometheus and Grafana","datePublished":"2016-11-24T09:34:31+00:00","dateModified":"2016-11-24T09:48:32+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/"},"wordCount":832,"commentCount":19,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png","keywords":["docker","Grafana","monasca","openstack","Prometheus"],"articleSection":["*.*","HowTos","OpenStack"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/","url":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/","name":"Monitoring an Openstack deployment with Prometheus and Grafana - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005-300x149.png","datePublished":"2016-11-24T09:34:31+00:00","dateModified":"2016-11-24T09:48:32+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Selection_005.png","width":1471,"height":732},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/monitoring-an-openstack-deployment-with-prometheus-and-grafana\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Monitoring an Openstack deployment with Prometheus and Grafana"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba","name":"Bruno Grazioli","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g","caption":"Bruno Grazioli"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/gaea\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/101"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=10912"}],"version-history":[{"count":8,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10912\/revisions"}],"predecessor-version":[{"id":10923,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10912\/revisions\/10923"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=10912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=10912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=10912"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=10912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}