sysstatコマンド群の時間表示をUNIX時間にする
やりたいこと
sysstat に含まれるコマンド (sar, iostat, mpstat, pidstat など) の時刻表示を、HH:mm:ss
のような表示ではなくUNIX時間にしたい。
理由
- 機械的に処理しやすくしてデータの加工やプロットを自動化したい
- pidstat で特定のプロセスの情報を取得して、他のコマンドでシステム全体の情報を取得して別々のファイルに出力したとき、時間をキーとしてマージしようと思ったら表記ゆれがあると割りと面倒
調査
sysstat v11.1.3 について少し調べてみた。
- pidstat
- sar
- mpstat
strftime
のフォーマットが%X
なので *4 、できない。- ただし mpstat の機能は sar で代用できると思われる。
- iostat
strftime
のフォーマットが%z
か%X
なので *5 、できない。- ただし iostat の機能は sar で代用できると思われる。
- cifsiostat, nfsiostat-sysstat
まとめ
pidstat はオプション-h
を使うと、sar はオプション-o
でバイナリを出力して sadf でオプション-U
を使うと、時間表示をUNIX時間にできる。
mpstat や iostat は今のところできないが、sar で代用すればいいと思う。
*1:https://github.com/sysstat/sysstat/blob/658d3687289abbf8b96c54f993e0d62967a32498/pidstat.c#L1329
*2:https://github.com/sysstat/sysstat/blob/658d3687289abbf8b96c54f993e0d62967a32498/pidstat.c#L2281-L2285
*3:詳しいところまでは追っていないが、たぶんこの辺り: https://github.com/sysstat/sysstat/blob/658d3687289abbf8b96c54f993e0d62967a32498/sadf.c#L249
*4:https://github.com/sysstat/sysstat/blob/658d3687289abbf8b96c54f993e0d62967a32498/mpstat.c#L616-L620
*5:https://github.com/sysstat/sysstat/blob/658d3687289abbf8b96c54f993e0d62967a32498/iostat.c#L1057-L1063
*6:https://github.com/sysstat/sysstat/blob/658d3687289abbf8b96c54f993e0d62967a32498/cifsiostat.c#L460-L466
*7:https://github.com/sysstat/sysstat/blob/658d3687289abbf8b96c54f993e0d62967a32498/nfsiostat-sysstat.c#L526-L532