diff --git a/collect.sh b/collect.sh index 8033d80..91c15ae 100755 --- a/collect.sh +++ b/collect.sh @@ -5,8 +5,8 @@ minutes=$1 echo "" greeting="Running perfcollect for $minutes minutes" echo "$greeting" -echo "Will auto upload to iXsystem when completed." -echo "Airgapped Systems will need to exfiltrate /root/*.csv" +echo "Will auto upload to ftp.ixsystem.com when completed." +echo "Airgapped Systems will need to exfiltrate *.csv" echo "" iterations=$1 @@ -17,7 +17,9 @@ timeout "$minutes"m gstat -C -s -d -o -p -I 60s > gstat.csv & echo "Starting iostat Collection" for (( i=1; i<=$iterations; i++ )); do # Execute the command -python3 ixiostat.py + python3 zpooliostat.py + python3 iostat.py + echo "minute: $i" # Wait for 60 seconds before the next iteration sleep 60 diff --git a/iostat.py b/iostat.py new file mode 100644 index 0000000..98b596a --- /dev/null +++ b/iostat.py @@ -0,0 +1,66 @@ +import subprocess +import re +import csv +import os +import time + +# Define your shell command +command = ["iostat", "-n", "0"] + +headerRow = [ + "timestamp", + "name", + "tty_in", + "tty_out", + "cpu_user", + "cpu_user_niced", + "cpu_system", + "cpu_interrupt", + "cpu_idle", +] + +filename = "cpuStat.csv" + +# Check if the file exists +if not os.path.exists(filename): + # Create the file in write mode ('w') if it doesn't exist + with open(filename, "w", newline="") as csvfile: + csv_writer = csv.writer(csvfile) + # Write the header row (optional) + csv_writer.writerow(headerRow) + + +def runIostat(): + # Run the command and capture output + result = subprocess.run(command, capture_output=True, text=True) + + timestamp = time.time() + local_time = time.localtime(timestamp) + # Format the time components for a more readable output + timestamp = time.strftime("%Y-%m-%d %H:%M:%S", local_time) + + # Check the return code (0 for success) + if result.returncode == 0: + # Access the captured output as a string + output = result.stdout + byline = re.split("\n", output) + data = byline[2] + lineData = data.split() + + if lineData: + with open(filename, "a", newline="") as csvfile: + csv_writer = csv.writer(csvfile) + lineData.insert(0, "cpu") + lineData.insert(0, timestamp) + csv_writer.writerow(lineData) + + else: + print(f"Error running command: {result.stderr}") + + +def main(): + runIostat() + + +if __name__ == "__main__": + main() diff --git a/ixiostat.py b/zpooliostat.py similarity index 99% rename from ixiostat.py rename to zpooliostat.py index d515450..9c98cef 100644 --- a/ixiostat.py +++ b/zpooliostat.py @@ -8,7 +8,7 @@ import time command = ["zpool", "iostat", "-Tu", "-l", "-p", "-v", "-y", "1", "1"] headerRow = [ - "time", + "timestamp", "name", "capacity_alloc", "capacity_free",