<commit_before>---
layout: post
title: "Windows Metric Dashboards with InfluxDB and Grafana"
date: 2016-03-29 13:37:00
comments: true
description: Using InfluxDB, Telegraf and Grafana to display Windows performance counters on beautiful dashboards.
---

Understanding performance of your infrastructure is extremely important, especially when running production systems. There is nothing worse than a customer calling and saying they are experiencing slowness with one of their applications and you having no idea where to start looking.

In the [2014 State of DevOps survey](https://puppetlabs.com/sites/default/files/2014-state-of-devops-report.pdf) survey, one of the questions asked was **how is your organization notified of failure?**.

Here was the multiple choice question asked:

![how is your organization notified of failure](/images/posts/influxdb_grafana_windows/notification_of_failure.png "how is your organization notified of failure")

Through the survey, one of the top practices that correlated with performant IT teams was **Monitor system and application health**:

>Logging and monitoring systems make it easy to detect failures and
identify the events that contributed to them. Proactive monitoring of
system health based on threshold and rate-of-change warnings enables
us to preemptively detect and mitigate problems.

If you want some more information about performant DevOps teams and the methods they used to test teams, I recommend the talk [What We Learned from Three Years of Sciencing the Crap Out of DevOps](https://www.youtube.com/embed/cJVUtbSmXaM).

<iframe width="560" height="315" src="https://www.youtube.com/embed/cJVUtbSmXaM" frameborder="0" allowfullscreen></iframe>


Monitoring performance counters on Windows in any centralized manager way has always been tricky. In 2014 I wrote a PowerShell Module to send performance counters to Graphite which turned out to be pretty popular:

[Graphite-PowerShell-Functions](https://hodgkins.io/using-powershell-to-send-metrics-graphite) <a class="github-button" href="https://github.com/MattHodge/Graphite-PowerShell-Functions" data-icon="octicon-star" data-size="large" data-count-href="/MattHodge/Graphite-PowerShell-Functions/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star MattHodge/Graphite-PowerShell-Functions on GitHub">Star</a>

Thankfully, things are getting easier. Let's take a look at using [InfluxDB](https://influxdata.com/) to store our metrics, [Telegraf](https://influxdata.com/time-series-platform/telegraf/) to tramsit the metrics and [Grafana](http://grafana.org/) do display them.

By the end of the article, you should be able to make a dashboard that looks something like this:

![Full Hyper-V Dashboard](/images/posts/influxdb_grafana_windows/fulldashboard.png "Full Hyper-V Dashboard")

* TOC
{:toc}<commit_msg>Remove Github stars<commit_after>---
layout: post
title: "Windows Metric Dashboards with InfluxDB and Grafana"
date: 2016-03-29 13:37:00
comments: true
description: Using InfluxDB, Telegraf and Grafana to display Windows performance counters on beautiful dashboards.
---

Understanding performance of your infrastructure is extremely important, especially when running production systems. There is nothing worse than a customer calling and saying they are experiencing slowness with one of their applications and you having no idea where to start looking.

In the [2014 State of DevOps survey](https://puppetlabs.com/sites/default/files/2014-state-of-devops-report.pdf) survey, one of the questions asked was **how is your organization notified of failure?**.

Here was the multiple choice question asked:

![how is your organization notified of failure](/images/posts/influxdb_grafana_windows/notification_of_failure.png "how is your organization notified of failure")

Through the survey, one of the top practices that correlated with performant IT teams was **Monitor system and application health**:

>Logging and monitoring systems make it easy to detect failures and
identify the events that contributed to them. Proactive monitoring of
system health based on threshold and rate-of-change warnings enables
us to preemptively detect and mitigate problems.

If you want some more information about performant DevOps teams and the methods they used to test teams, I recommend the talk [What We Learned from Three Years of Sciencing the Crap Out of DevOps](https://www.youtube.com/embed/cJVUtbSmXaM).

<iframe width="560" height="315" src="https://www.youtube.com/embed/cJVUtbSmXaM" frameborder="0" allowfullscreen></iframe>


Monitoring performance counters on Windows in any centralized manager way has always been tricky. In 2014 I wrote a PowerShell Module to send performance counters to Graphite which turned out to be pretty popular:

[Graphite-PowerShell-Functions](https://hodgkins.io/using-powershell-to-send-metrics-graphite)  <iframe src="https://ghbtns.com/github-btn.html?user=MattHodge&repo=Graphite-PowerShell-Functions&type=star&count=true&size=large" frameborder="0" scrolling="0" width="160px" height="30px"></iframe>

Thankfully, things are getting easier. Let's take a look at using [InfluxDB](https://influxdata.com/) to store our metrics, [Telegraf](https://influxdata.com/time-series-platform/telegraf/) to tramsit the metrics and [Grafana](http://grafana.org/) do display them.

By the end of the article, you should be able to make a dashboard that looks something like this:

![Full Hyper-V Dashboard](/images/posts/influxdb_grafana_windows/fulldashboard.png "Full Hyper-V Dashboard")

* TOC
{:toc}
{'fraction_non_alphanumeric': 0.08305054474013217, 'fraction_numerical': 0.013038042507590641, 'mean_word_length': 5.511627906976744, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 13, 'https://': 14, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2278309', 'n_tokens_mistral': 1597, 'n_tokens_neox': 1492, 'n_words': 620}