Austin Thorne
← All projects
05 / Monitoring & telemetry

Infrastructure Observability.

Monitoring for Frostmourne, my local AI infrastructure platform, using Telegraf, InfluxDB, and Grafana.

TelegrafInfluxDBGrafanaGPU telemetry

Overview

Frostmourne is my local AI infrastructure platform, built on Ubuntu Server with Docker, GPU-pinned Ollama instances, and dedicated workloads for AI assistance and coding.

The monitoring pipeline uses Telegraf to collect hardware and operating-system metrics, InfluxDB to store that time-series data, and Grafana to query and present it through dashboards.

This makes it possible to compare Frostmourne at idle with concurrent AI workloads across CPU utilization and package temperature; GPU utilization, temperature, and power draw; RAM utilization and temperature; Ethernet PHY temperature; system temperature; and NVMe temperature.

Explore the Frostmourne infrastructure project →

Dashboard

These recorded Grafana screenshots show Frostmourne first at idle, then under concurrent AI workloads. They are point-in-time captures rather than live telemetry or a controlled benchmark. Ambient air temperature was approximately 18–19 °C, providing environmental context for the component readings.

Idle state

Grafana dashboard showing both GPUs at 0% utilization. RTX 5090 is 34 degrees Celsius at 19.3 watts; RTX 4090 is 23 degrees Celsius at 26.8 watts. CPU utilization is 3% and CPU package temperature is 29.6 degrees Celsius.
At idle, both GPUs reported 0% utilization and the CPU reported 3%. This is a separate capture, not an established before-and-after sequence.

Concurrent coding and troubleshooting

Devstral handled a coding task on the RTX 4090 while Gemma processed a troubleshooting request on the RTX 5090.

Grafana dashboard showing RTX 5090 at 76% utilization, 42 degrees Celsius, and 332.7 watts; RTX 4090 at 96%, 53 degrees Celsius, and 363.9 watts; CPU at 51.9% utilization and 42.6 degrees Celsius. Other system sensor panels are also visible.
During the concurrent tasks, the RTX 5090 reported 76% utilization, the RTX 4090 reported 96%, and CPU utilization was 51.9%.
Highlights of Frostmourne at idle and under load
ComponentIdleConcurrent tasks
Utilization
RTX 50900%76%
RTX 40900%96%
CPU3%51.9%
Temperature
RTX 509034 °C42 °C
RTX 409023 °C53 °C
CPU package29.6 °C42.6 °C
Ambient air (approx.)18–19 °C18–19 °C
GPU power draw
RTX 509019.3 W332.7 W
RTX 409026.8 W363.9 W

GPU and CPU readings rose during the concurrent tasks. These point-in-time captures show what the dashboard makes visible; they do not establish throughput or sustained thermal behavior.

Current state

Monitoring stack

Telegraf, InfluxDB, and Grafana are part of the existing infrastructure, with GPU telemetry and dashboards.

Public demonstration

Two recorded Grafana views show concurrent coding and troubleshooting workloads alongside an idle state. The portfolio serves local image files without connecting visitors to Grafana.

Architecture

OBSERVABILITY / LOGICAL DATA FLOW
  1. Frostmourne — infrastructure and GPU telemetry
  2. Telegraf — metric collection
  3. InfluxDB — time-series storage
  4. Grafana — queries and dashboards
Logical responsibilities of the supplied monitoring stack. Exact collectors, transport, and deployment boundaries remain to be documented.

Engineering decisions

The demonstration uses recorded screenshots so readers can inspect actual monitoring output without access to the private dashboard.

  • Metric selection: The captures include GPU utilization, temperature, and power draw, alongside CPU, RAM, and system sensor readings.
  • Collection and retention: Document actual sampling intervals and retention settings before describing their tradeoffs.
  • Visitor experience: Show both captures with workload context and a text table of GPU readings.
  • Refresh behavior: These images are static and make no polling requests to the monitoring stack.

Public access design

The page displays recorded images, not an interactive connection to Grafana. No Grafana or InfluxDB endpoint, credential, or live query is included in this demonstration.

  • The supplied captures show hardware labels and monitoring readings; they contain no visible credentials or private network addresses.
  • The images are served as static website assets. Visitors cannot query the underlying data source through them.
  • Private monitoring and administrative access remain separate from this page.
  • Any future live embed requires a separate review of public data scope and access controls.

Validation & troubleshooting

The captures show reported GPU activity during owner-confirmed concurrent tasks and during an idle state. They demonstrate the dashboard output, rather than a measured benchmark or verification of every metric source.

Validation plan
  • Trace a known GPU workload from the source metric to the displayed series.
  • Check GPU identity, timestamps, units, and missing-data behavior.
  • Verify what a signed-out visitor can query and view.
  • Measure dashboard query load at the selected refresh interval.
  • Check narrow-screen rendering and the unavailable-dashboard experience.

Build history

Selected milestones in the monitoring project.

  1. PROJECT MILESTONE

    Telemetry foundation

    Integrated Telegraf, InfluxDB, and Grafana into the infrastructure.

    Established the monitoring stack for collecting and viewing telemetry.

  2. PROJECT MILESTONE

    GPU dashboards

    Added GPU telemetry and dashboards for Frostmourne.

    Made GPU behavior visible alongside the inference workloads.

  3. LOCAL PORTFOLIO WORK

    A dedicated observability case study

    Separated the monitoring project into its own page and added recorded workload and idle-state captures.

    Demonstrates GPU monitoring with real workload context while keeping live monitoring access private.