In the previous blog , I have explained on how to create Windows EC2 Instance using AWS console.

In this guide , We will see how to setup a monitoring for windows servers using WMI exporter and Prometheus and also setup a monitoring using Grafana

If you havn’t Implemented Prometheus & Grafana , Check the below article.

How to install and configure Prometheus

Setup Grafana & Prometheus Monitoring

What is WMI Exporter?

WMI expoter is a exporter used for windows servers to collects metrics such as CPU usage , memory and Disk usage.

It is a open source which can be installed on the windows servers using .msi installer.

Installing WMI Exporter

The latest version of WMI exporter’s installation package can downloed from the below link.

https://github.com/prometheus-community/windows_exporter/releases
WMI Exporter

Download the package depending on the CPU architecture.

I will be downloading the .msi file.

Once the package is downloaded ,

WMI Exporter

If you are prompted by the firewall , Accept it to make sure the wmi exporter runs properly.

WMI Exporter

Go to Downloads and click Run

WMI Exporter

The MSI installer doesn’t show any response , But it will run as Windows service on the server.

To verify whether the exporter is running fine , In the search box , Type services and Click Services

WMI Exporter
WMI Exporter

You will be taken to the following Services page , Where we can find all the windows services.

WMI Exporter

The old name of the service was called as WMI exporter , From the latest release , We can see a service running in the name windows_exporter

WMI Exporter

By default , wmi exporter runs on the port 9182.

To verify that , Open the command prompt and run,

netstat -a -b
WMI Exporter

We have confirmed that the wmi exporter is running and on the port 9182.

The exporter will start exposing metrics on http://localhost:9182/metrics

WMI Exporter

Now we have system metrics collected by the exporter.Lets send these metrics to the Prometheus and setup a monitoring using Grafana.

Integrating Prometheus with WMI exporter

As we already know that the Prometheus scrapes targets for the metrics.

To configure this , Login to prometheus server and Open the configuration file.

vi /etc/prometheus/prometheus.yml

The prometheus configuration should look something like as shown below.

WMI Exporter

We are going to add a job for the wmi exporter under the scrape_configs as shown below.

- job_name: 'wmiexporter' 
  scrape_interval: 30s 
  static_configs: 
     targets: ['WindowsIP:9182']

Once added , Save and close the file.

We need to restart the prometheus service.

systemctl restart prometheus

And we can check the status of the prometheus,

systemctl status prometheus

Now the WMI exporter server is added under prometheus targets. The proemtheus should be able to scrape the metrics collected by WMI exporter.

To verify that , Login to Prometheus Web UI,

http://IPaddress:9090

We should see the following page.

WMI Exporter

Under Status , Click Targets

WMI exporter is UP and able to scrape the metrics.

WMI Exporter

By this time , We have WMI exporter running fine and the Prometheus service is able to scrape the metrics from the wmi exporter.

Now Its time to setup alerting for the windows server using Grafana with the help of prometheus as the data source.

Integrating Prometheus with Grafana

I assume that you have grafana server UP and running , If not , Check this article to setup grafana.

Once the Grafana setup is implemented , Login to Grafana Web interface,

http://publicipaddress:3000

To check the wmi exporters metrics which is already stored in the prometheus server , We need to integrate prometheus with grafana.

To integrate , Hover to Settings icon and choose Datasources

Under Configuration , You can add the datasources here.

Prometheus

Grafana can query data from these datasource to plot the graphs.

For this tutorial , We are going to use Prometheus as the datasource.

Click Add Data source and then choose Prometheus

Prometheus

Here we will asked to provide few information such as Prometheus URL.

Provide a name for the datasource , and then provide the ip address and the port in which Prometheus is Running.

In our case , It is

http://privateipaddress:9090
Prometheus

Grafana should be able to access port 9090 and it should be whitelisted in the Firewall.

Now click Save and Test , It should response as Data source is working

We have now integrated both the services.

Now Its time to setup alerting mechanism

Setup Alerting in Grafana

For the Grafana to alert to a specific channel or medium, We need to add / configure the same.

Choose Alerting and then click Notification channels

Prometheus

Click Add channel , From the lists of available notification channels , Choose the one where you will be active.

Provide a name for the Notification Channel and then choose Type.

Prometheus

Once done , Click Save.

Now We have datasource and the alerting mechanism.

Lets go ahead and setup dashboard and configure the alerting for the same.

Setting Up Grafana Dashboards

We can setup dashboard by ourselves from the scratch or we can import the existing dashboard from Grafana.

To setup a dashboard for the WMI Exporter metrics.

In the left side , Hover to + icon and choose Import

Prometheus

It will ask us the id of the dashboard. The id to import the WMI exporter graph is 2129.

Provide the id and then click Load

Give a name for the dashboard and then choose the data source as Prometheus.

and then click Import.

It will collect all the metrics from the Prometheus data source and plot the graph as per the metrics such as CPU usage , Disk usage , Memory usage etc.

Using the dashboard we have created , We can check the resources used by the servers.

WMI Exporter
WMI Exporter
WMI Exporter

To setup alerting for each of the above metrics ,

Click on CPU load and choose Edit , Select the alert icon

Provide a name for the Alert rule , and mention how often the evaluation should happen for the condition we set.

The condition for the rule is , if the threshold is above certain percentage / value during the evaluation period we will be alerted.

WMI Exporter

For notification , Click + icon and choose the notification channel we have created and add a description for the alerts messages.

Follow the same procedure for the Disk usage and the Memory usage.

By doing so , We can actively monitor the performance and the resources utilised by the services running in the servers.So that we can take the necessary actions prior to services or servers going unreachable.

Conclusion

We have successfully implemented a complete monitoring and alerting mechanism for the windows servers using Prometheus , WMI exporter and Grafana.

Hope you find it helpful.Please do check out my other articles.