サーバーのリソース状態を記録しておくための方法。
shファイルを作成
仕様:60秒ごとにログを取得。結果を日時とともにファイル(/tmp/vmstat.log)に書き込む。
/tmp/resource_log.sh
#!/bin/bash
exec /usr/bin/vmstat 60 | awk '{print strftime("%y/%m/%d %H:%M:%S"), $0} {fflush() }' >> /tmp/vmstat.log
shファイルは/tmpディレクトリに置いてありますが、どこでもよいです。
サービスファイル作成
実行用のサービスファイルを作ります。(/etc/systemd/system/配下)
ExecStartのところで、先ほど作ったshファイルを指定します。
/etc/systemd/system/resource_log.service
[Unit]
Description=VMSTAT as a Service
[Service]
Restart=on-failure
RestartSec=10
ExecStart=/tmp/rec_resource.sh
[Install]
WantedBy=basic.target
起動
以下のコマンドを実行。(systemctlに変更を通知 → 実行)
$ sudo systemctl daemon-reload
$ sudo systemctl start resource_log.service
確認
$ cat /tmp/vmstat.log
18/09/19 16:35:22 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
18/09/19 16:35:22 r b swpd free buff cache si so bi bo in cs us sy id wa st
......
こんな感じで記録されていればOK。