URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

3PARのIOPSを取得するスクリプト

 ちょっと急ぎで監視をしなければならなくなったので、ちょっと乱暴な感じで時間をかけずに作ってみました。
 そもそも「HPE 3PAR StoreServストレージ」がないと意味ないし、しっかりと運用をしているならこんな方法はあまりしていない気がする。

 全てのVV(仮想ボリューム)のIOPSの合計値を出力する。
 やっていることはSSHで3PARの管理CLIへ接続し、"statvv"コマンドで出力したパフォーマンス情報から必要な値を抜き出しているだけです。
 スクリプトの結果としてはTotal/Read/Writeの3つのIOPSをカンマ区切りで出力しているけど、実際にはこれをさらに分解してZabbixで監視しています。
 あと、動作環境はとりあえずCentOS 7.2 + Pythonです。事前に3PARにはパスワードなしでSSHログインできるようにしておく(3PAR側に"setsshkey"コマンドで公開鍵を入れておく)。

#!/usr/bin/python import sys import string from datetime import datetime statcmd = '/usr/bin/ssh admin@3par_mgt statvv -rw -d 60 -iter 1' iops = [] def main(): global iops results = dict() at_total = False for line in exec_cmd(statcmd): split = string.split(line) if(at_total & len(split) > 0): results[split[1]] = split[2] if(len(split) == 1): at_total = True iops.append(results) print 'total,read,write' for result in iops: print result['t'] + ',' + result['r'] + ',' + result['w'] def exec_cmd(cmd): from subprocess import Popen, PIPE p = Popen(cmd.split(' '), stdout=PIPE, stderr=PIPE) out, err = p.communicate() return [ s for s in out.split('\n') if s ] if __name__ == '__main__': main()

 時間ができたらもっとスマートか監視の仕組みを考えます。