python3 psutilでシステムリソースを測る

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

機会学習用のデータがほしかったので、サーバーのCPU使用率などをpythonで取得してみた。

[amazonjs asin=”4873116554″ locale=”JP” title=”Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理”]

 

前提

pyenvをインストール。

CentOS7 pyenvをホームディレクトリにインストール

その後、python3.5.1をインストールして、pyvenvで環境構築。

[shell] pyenv install 3.5.1
pyenv local 3.5.1
pyenv global 3.5.1
pyvenv ~/.serverspec
source ~/.serverspec/bin/activate
[/shell]

 

psutilをインストール

[shell] pip install –upgrade pip
pip install ipython psutil
[/shell]

psutilを使ってみる。

ipythonを起動して、psutilを使ってみる。

[shell] ipython
[/shell]

psutilで取得できるデータの一覧。

[shell title=”ipython”] In [1]: import psutil

In [2]: psutil.
psutil.AF_LINK psutil.IOPRIO_CLASS_RT psutil.STATUS_ZOMBIE psutil.net_if_stats
psutil.AccessDenied psutil.NIC_DUPLEX_FULL psutil.TimeoutExpired psutil.net_io_counters
psutil.CONN_CLOSE psutil.NIC_DUPLEX_HALF psutil.ZombieProcess psutil.os
psutil.CONN_CLOSE_WAIT psutil.NIC_DUPLEX_UNKNOWN psutil.boot_time psutil.pid_exists
psutil.CONN_CLOSING psutil.NoSuchProcess psutil.callable psutil.pids
psutil.CONN_ESTABLISHED psutil.PROCFS_PATH psutil.collections psutil.process_iter
psutil.CONN_FIN_WAIT1 psutil.Popen psutil.cpu_count psutil.pwd
psutil.CONN_FIN_WAIT2 psutil.Process psutil.cpu_percent psutil.signal
psutil.CONN_LAST_ACK psutil.STATUS_DEAD psutil.cpu_times psutil.subprocess
psutil.CONN_LISTEN psutil.STATUS_DISK_SLEEP psutil.cpu_times_percent psutil.swap_memory
psutil.CONN_NONE psutil.STATUS_IDLE psutil.disk_io_counters psutil.sys
psutil.CONN_SYN_RECV psutil.STATUS_LOCKED psutil.disk_partitions psutil.test
psutil.CONN_SYN_SENT psutil.STATUS_RUNNING psutil.disk_usage psutil.time
psutil.CONN_TIME_WAIT psutil.STATUS_SLEEPING psutil.errno psutil.traceback
psutil.Error psutil.STATUS_STOPPED psutil.functools psutil.users
psutil.IOPRIO_CLASS_BE psutil.STATUS_TRACING_STOP psutil.long psutil.version_info
psutil.IOPRIO_CLASS_IDLE psutil.STATUS_WAITING psutil.net_connections psutil.virtual_memory
psutil.IOPRIO_CLASS_NONE psutil.STATUS_WAKING psutil.net_if_addrs psutil.wait_procs
[/shell]

CPU使用率をみてみる。

[shell] In [2]: psutil.cpu_percent()
Out[3]: 4.6
[/shell]

メモリ使用率をみてみる。

[shell] In [2]: mem = psutil.virtual_memory()

In [3]: mem.
mem.active mem.buffers mem.count mem.inactive mem.percent mem.used
mem.available mem.cached mem.free mem.index mem.total

In [3]: mem.used
Out[3]: 3430801408
[/shell]

サーバーへのアクセス状況をみてみる。

[shell] In [10]: net = psutil.net_connections()

In [11]: net
Out[11]:
[sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘0.0.0.0′, 30033), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘0.0.0.0′, 10011), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘2408:210:8864:2800:219:99ff:fe8b:3812′, 123), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘0.0.0.0′, 9987), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘192.168.0.31′, 123), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘0.0.0.0′, 22), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘192.168.0.31’, 22), raddr=(‘192.168.0.1′, 62906), status=’ESTABLISHED’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘::’, 80), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘0.0.0.0′, 123), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘::ffff:192.168.0.31’, 80), raddr=(‘::ffff:192.168.0.1′, 64518), status=’ESTABLISHED’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘::’, 8009), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘::’, 22), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘192.168.0.31’, 22), raddr=(‘192.168.0.1′, 64524), status=’ESTABLISHED’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘127.0.0.1′, 123), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘127.0.0.1′, 3310), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘0.0.0.0′, 21), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘::1′, 123), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘::ffff:127.0.0.1′, 8005), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘::’, 123), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘::ffff:192.168.0.31’, 80), raddr=(‘::ffff:66.249.75.231′, 49748), status=’ESTABLISHED’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘192.168.0.31’, 40368), raddr=(‘194.97.114.3′, 2010), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘::’, 8080), raddr=(), status=’LISTEN’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘192.168.0.31’, 34789), raddr=(‘59.106.194.79′, 443), status=’TIME_WAIT’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=(‘fe80::219:99ff:fe8b:3812′, 123), raddr=(), status=’NONE’, pid=None),
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘0.0.0.0′, 3306), raddr=(), status=’LISTEN’, pid=None)]

In [12]: type(net)
Out[12]: list

In [13]: net[0] Out[13]: sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=(‘0.0.0.0′, 30033), raddr=(), status=’LISTEN’, pid=None)
[/shell]

配列で返してくれるあたりが親切。

Related posts

コメントを残す