Python/Python for Linux

[ Python ] 리눅스 iostat 결과값 DataFrame만들고, csv 저장

Pydole 2023. 5. 24. 15:40

 

 

 

iostat : CPU통계와 디바이스와 IO통계를 출력해주는 유틸

 

  tps  장치에서 초당 입출력 작업 수
  kB_read/s  장치에서 초당 읽은(Read) 데이터 블록 (초당)
  kB_wrtn/s  장치에서 초당 쓴(Write) 데이터 블록 (초당)
  kB-read  장치에서 초당 읽은(Read) 데이터 블록
  kB-wrtn  장치에서 초당 쓴(Write) 데이터 블록

 

[ 옵션 ]

    -m  MB단위로 표현

 


 

iostats명령어의 결과를 DataFrame으로 만들고, csv 파일로 export

 

import subprocess
from datetime import datetime
import time

def iostat_data():
    ps = subprocess.Popen(('iostat', '-m'), stdout=subprocess.PIPE)
    output = subprocess.check_output(('grep', 'nvme0n1'), stdin=ps.stdout)
    output = output.split()
    output = [ str(datetime.today())[:19] ] + [ x.decode()  for x in output ][1:]

    return output


data = []

for i in range(100):
    data.append(iostat_data())
    time.sleep(2)


import pandas as pd

df = pd.DataFrame(data, columns = ['timestamp','tps','kB_read/s','kB_wrtn/s','kB_read','kB_wrtn'])
print(df)
df.to_csv('output.csv')

 

iostat dataframe