vmstatに日時を付ける

とあるサーバにメモリを追加したので、しばらく様子見ということで
vmstatやらTOPやらを定期的に流しています。

vmstat 1 とかすれば1秒おきに出力してくれるわけですが

でも、

# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 3  4  12756   9248  65848 14686496    0    0   277    56   92    41 26  4 65  5
 3  1  12756   8928  65848 14686224    0    0 13380    28 3652  6798 37  3 29 31
 2  4  12756  14608  65860 14680228    0    0  8268   168 2921  8906 37  5 28 31

てな感じで「いつのvmstatよ?」になったりします・・・

apacheのログの様に日時がつけれないかなぁ、、と
google[vmstat 時刻]
したところ、同じ悩みを抱えている方がやはりおられまして
さくっとperlスクリプト作っちゃってる(w

早速使わせていただきました。
/usr/local/bin/puttime.pl
においてパーミッションを換えておけばどこでも使えるでしょう。

コードは日付も出るように変えさせていただいて・・

#!/usr/bin/perl
use strict;
use warnings;
use IO::Handle;
STDOUT->autoflush;
while (defined(my $line = <>)) {
  my ($s, $m, $h,$dd ,$mm ,$yy ,$ww) = localtime();
  printf STDOUT '%04d/%02d/%02d %02d:%02d:%02d %s', $yy+1900, $mm, $dd, $h, $m, $s, $line;
}

(20160530: use IO::Handle; STDOUT->autoflush; printf STDOUT 〜を追加しました)

実行実行〜

# vmstat 1 | puttime.pl
2008/02/26 11:48:06 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
2008/02/26 11:48:06  r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
2008/02/26 11:48:06  1  0  12756  20752  52264 15056768    0    0   283    56   93    45 26  4 65  6
2008/02/26 11:48:07  4  0  12756  20240  52264 15056768    0    0    16   288 1257 26644 38 10 51  1
2008/02/26 11:48:08  1  1  12756  12432  52272 15064512    0    0  7736    24 1843 19877 31  4 45 20
2008/02/26 11:48:09  2  3  12756   8568  52276 15068316    0    0  8496    24 2862 17824 48  8 18 26
2008/02/26 11:48:10  2  2  12756  10816  52284 15065792    0    0 21972   148 3947 15308 19  5 47 29


ぁあ、素敵すぎる!
ありがとうございます!