sysstatコマンド群の時間表示をUNIX時間にする

やりたいこと

sysstat に含まれるコマンド (sar, iostat, mpstat, pidstat など) の時刻表示を、HH:mm:ssのような表示ではなくUNIX時間にしたい。

理由

  • 機械的に処理しやすくしてデータの加工やプロットを自動化したい
  • pidstat で特定のプロセスの情報を取得して、他のコマンドでシステム全体の情報を取得して別々のファイルに出力したとき、時間をキーとしてマージしようと思ったら表記ゆれがあると割りと面倒

調査

sysstat v11.1.3 について少し調べてみた。

  • pidstat
    • オプション-hで出力を1行にまとめた場合、デフォルトでUNIX時間になる *1
    • オプション-hなしの場合、strftimeのフォーマットが%Xなので *2 、できない 。
  • sar
    • sar単体ではできないと思われるが、sadfと組み合わせることでできる。
    • sar -o path/to/fileでバイナリファイルに出力して、sadf -U path/to/fileUNIX時間で出力される *3
  • mpstat
    • strftimeのフォーマットが%Xなので *4 、できない。
    • ただし mpstat の機能は sar で代用できると思われる。
  • iostat
    • strftimeのフォーマットが%z%Xなので *5 、できない。
    • ただし iostat の機能は sar で代用できると思われる。
  • cifsiostat, nfsiostat-sysstat
    • 使う予定がないので詳しく見てないが、ぱっと見では iostat と同じく無理っぽい *6 *7

まとめ

pidstat はオプション-hを使うと、sar はオプション-oでバイナリを出力して sadf でオプション-Uを使うと、時間表示をUNIX時間にできる。
mpstat や iostat は今のところできないが、sar で代用すればいいと思う。