케이스와 Python으로 간단하게 지도 형태화 데이터

4695 단어 BashPython

입문


정기적으로 얻은 데이터를 도표화하는 것은 간단하고 얻은 것도 적지 않다.
다만 경험이 없는 사람에게는 문턱이 높다고 느껴져 입구를 제공해 주기를 바란다.
그 다음은python의 선교)

meminfo 도형화


예를 들어 정기적으로 얻은 /proc/meminfo 정보를 케이스와python 간단한 지도로 표화한다.
meminfo의 정보가 <日付>/<時分秒>/meminfo.log 형식으로 저장된다고 가정(예: 20160224/105312/meminfo.logmeminfo의 격식은 이렇습니다.
MemTotal:         511476 kB
MemFree:          269240 kB
Buffers:           13936 kB
Cached:            56044 kB
SwapCached:            0 kB
Active:            36944 kB
Inactive:          47324 kB
Active(anon):      14648 kB
Inactive(anon):      208 kB
Active(file):      22296 kB
Inactive(file):    47116 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:         511476 kB
LowFree:          269240 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         14304 kB
Mapped:            16548 kB
Shmem:               568 kB
Slab:               7416 kB
SReclaimable:       2600 kB
SUnreclaim:         4816 kB
KernelStack:         504 kB
PageTables:          784 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      255736 kB
Committed_AS:     195212 kB
VmallocTotal:    1548288 kB
VmallocUsed:        8428 kB
VmallocChunk:    1350896 kB
meminfo에서 Committed_AS 값을 도형화하려면
$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS
이렇게 하면 아래의 출력을 얻을 수 있다.
./20160211/190409/meminfo.log:Committed_AS:     389260 kB
./20160211/191528/meminfo.log:Committed_AS:     389300 kB
./20160211/192648/meminfo.log:Committed_AS:     394600 kB
이를 더 나아가gawk로 처리日付 数値 형식
$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS | gawk 'match($0, /\/([0-9]+)\/([0-9]+).*[0-9]+ kB/, a) {print a[1] a[2], $2}'
20160211190409 389260
20160211191528 389300
20160211192648 394600
그리고 matplot으로 그려주세요.
plot_date.py
#!/usr/bin/env python3 

import matplotlib.pyplot as plt

from datetime import datetime as dt

import sys

[date, y] = zip(*[l.split() for l in sys.stdin])
date=[dt.strptime(d, "%Y%m%d%H%M%S") for d in date]

plt.plot(date,y)

plt.show()
$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS | gawk 'match($0, /\/([0-9]+)\/([0-9]+).*[0-9]+ kB/, a) {print a[1] a[2], $2}' | python3 plot_date.py

좋은 웹페이지 즐겨찾기