New Webinar: Modernising Without Destabilising: How Bread Financial Is Building Confidence Through Change

Learn more

New webinar with Bread Financial

Learn more
Contact us

Blogs

Python's subprocess module to extract counters from Perfmon logs

Date 29 June 2026

Author Team Capacitas

I recently found myself needing to extract data from Perfmon's blg files based on time.  Python is often my go-to language for automation, and I had heard previously about the subprocess module, but had yet to experiment with it, and thought this might be the perfect introduction to it.

Python's subprocess module is very complex and allows one, as the official documentation states (http://docs.python.org/2/library/subprocess.html), "to spawn new processes, connect to their input/output/error pipes, and obtain their return codes".  I'm using it in possibly its simplest form, to call other commands.

It is possible to use the module to call features and programs built into operating systems, and then, if required, do something with that output.  For example, you could use it to call ipconfig on Windows, to obtain IP configuration data, or use it to call 'ls' on a Unix-like OS to obtain directory listings.

For my purposes, I'm using subprocess to call the inbuilt Windows command-line application relog.

I'll now run through my script that performs this function.

Firstly, we need to import the modules required for this script:

===
import subprocess
import os
import sys

===

Now we need to obtain the name of the file we wish to work on.  This grabs the name of the file from the commandline input:

===
 blg_name = sys.argv[1]
===

Next, we set up a variable and dictionary to store the date and times:

===
 date = '19/04/2013'
times = {
'01' : ['12:30:00','12:30:15'],
'02' : ['12:36:00','12:36:30'],
'03' : ['12:43:00','12:44:00'],
'04' : ['12:52:00','12:54:00'],
'05' : ['13:03:00','13:06:00'],
'06' : ['13:16:00','13:20:45'],
'07' : ['13:32:00','14:00:15'],
'08' : ['14:50:00','15:27:00'],
'09' : ['16:09:00','16:24:15'],
'10' : ['17:30:00','18:10:45'],
'11' : ['18:54:00','19:35:00'],
'12' : ['20:21:00','21:14:00'],
}

===

A dictionary is used to store the stage of the particular section from the Perfmon log I wish to extract, and the start and end times in a list as the value for each key.  As you will soon see, the Python is really just here to control the logic which is calling relog and to piece a string together that will form the command we wish to run.

Finally, the part that does all the work:

===
 for num, time in times.iteritems():
command = 'relog ' + blg_name + ' -f csv -o ' + blg_name[:-4] + '_' + num + '.csv -b ' + date + ' ' + time[0] + ' -e ' + date + ' ' +  time[1]
subprocess.call(command.split(), shell=True)

===

This loop iterates over our 'times' dictionary, and, using some string manipulation, allows us to form the command as we need it, to then be able to pass it simply to relog using the subprocess' 'call' function.

Team Capacitas
About the author

Team Capacitas

Capacitas is a cloud and AI value partner. We translate rapid technological change into enduring commercial advantage by converting every unit of compute into enterprise value.

FinOps and AI: Building the Financial Discipline for the Next Wave of Enterprise Intelligence

AI FinOps represents an evolution rather than a replacement of traditional FinOps. It extends the model into a domain where financial, technical, and product decisions are tightly interconnected.

Read insight

Confidence Under Load: How We Verified AKS Readiness for Peak

How Capacitas verified AKS readiness for peak demand by validating workload performance, autoscaling, cluster capacity, monitoring, and incident response.

Read insight

Building Cloud Resilience: Lessons from the AWS Outage

Learning from the Latest Outage. Events like this week’s AWS disruption highlight one clear truth: resilience must be designed, not assumed.

Read insight

Bringing Order to Chaos: A Practical Guide to Chaos Testing in the Cloud

In today’s cloud-native environments, resilience is not optional—it’s critical. Chaos testing has emerged as a key practice for validating system behaviour under failure conditions.

Read insight