Skip to content

kenjitagawa/Windows-Monitoring-Dahsboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Windows Monitoring Stack (Prometheus + Grafana + Alertmanager)

A production-inspired Windows monitoring stack built using Prometheus, Grafana, Alertmanager, Docker, and windows_exporter.

This project demonstrates how to build a reusable observability system for Windows environments, designed to scale from local development to homelab and Kubernetes deployments.

Goals

  • Monitor Windows systems using open-source tooling
  • Build reusable, version-controlled dashboards
  • Implement dynamic service discovery
  • Implement alerting and routing
  • Simulate real-world DevOps monitoring practices

Features

  • Prometheus scraping Windows hosts via windows_exporter
  • File-based service discovery (file_sd_configs)
  • Alerting with Prometheus rule files
  • Alert routing via Alertmanager
  • Pre-provisioned Grafana dashboards (JSON)
  • Fully containerized with Docker Compose
  • Config-driven (no manual UI setup required)
  • Designed for future Kubernetes migration

Stack

  • Prometheus
  • Grafana
  • Alertmanager
  • windows_exporter
  • Docker Compose

Getting started

1. Install windows_exporter on a Windows machine

Ensure the exporter is running and accessible:

http://<host>:9182/metrics

2. Configure targets

Edit:

prometheus/targets/windows.json

Example:

[
  {
    "targets": ["10.0.100.110:9182"],
    "labels": {
      "env": "homelab"
    }
  }
]

3. Start the monitoring stack

docker compose up -d

4. Access services

Service URL
Prometheus http://localhost:9090
Grafana http://localhost:3000
Alertmanager http://localhost:9093

Grafana credentials:

User Password
admin admin

5. Next steps

  • Build custom dashboards
  • Add alerts
  • Add multiple Windows hosts
  • Export/import dashboards for homelab use

Secrets

This project uses inline values for local testing only.

Do not commit real credentials. In production, use Docker secrets or a secret manager and the smtp_auth_password_file configuration.

Alerting Overview

TODO
Loading

Prometheus Alerts

Alerts are defined using rule files:

prometheus/rules/

These are loaded via:

rule_files:
  - "/etc/prometheus/rules/*.yaml"

Example alert:

groups:
  - name: test
    rules:
      - alert: AlwaysFiring
        expr: vector(1)
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "Test alert"

Alertmanager Routing

Prometheus sends alerts to Alertmanager:

alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - "alertmanager-wm:9093"

Alertmanager is responsible for:

  • Grouping alerts
  • Deduplicating alerts
  • Routing alerts (email, Slack, etc.)

Verifying Alert Flow

Prometheus

http://localhost:9090/alerts

Alertmanager

http://localhost:9093

Alertmanager status in Prometheus

Status → Alertmanagers

Dashboard Overview

The default dashboard provides:

  • Exporter health (UP/DOWN)
  • CPU usage
  • Memory usage
  • System uptime
  • Process count
  • Network throughput
  • Disk I/O
  • Disk usage per volume

Project Structure

.
├── docker-compose.yaml
├── prometheus/
│   ├── prometheus.yaml
│   └── targets/
│       └── windows.json
└── grafana/
    ├── dashboards/
    │   └── windows-overview.json
    └── provisioning/
        ├── datasources/
        │   └── prometheus.yaml
        └── dashboards/
            └── dashboards.yaml

Resources:

Configuration Files Overview

Prometheus

Grafana

windows_exporter

About

Homelab Grafana Dashboard and monitoring of Windows systems

Resources

Stars

Watchers

Forks

Contributors