OSWatcherでは、既存で用意されているOS稼働情報とは別に、自分で取得対象を追加することができ、このときのログは既存の出力ファイル同様にログメンテナンスの対象となります。
ここでは、OCI Compute Instanceにデフォルトで入っているOSWatcher環境(RPMでインストールされた環境)に、このカスタムデータコレクションを利用してdstatをOSWatcherに追加することを実施してみます。
この方法の出所としては、OS Watcher User's Guide (ドキュメントID 1531223.1)のAdding Custom Data Collectionsの内容となります。
手順
1.追加するカスタムスクリプトの置き場を把握
vmstat,mpstatなど、既存の実行スクリプトが配置されている場所を探します。
OCI computeの場合は/usr/libexec/oswatcher
でした。
自分は、以下のような感じで探しました。
1-1.ps -ef|grep osw
でOSWatcherの常時実行スクリプトが/usr/sbin/OSWatcher
であるとわかる
→
1-2.view /usr/sbin/OSWatcher
でスクリプトの中身を見て、てきとうにVMSTATなどの文字列で検索して、それらしい実行箇所を探り当てる
→
1-3.これだ!なんと/usr/libexec/oswatcher/vmsub
はハードコードされていました。
・・・
/usr/libexec/oswatcher/vmsub $OSWBB_ARCHIVE_DEST/oswvmstat/${hostn}_vmstat_$hour "$VMSTAT" $oswgCompliance &
・・・
2./usr/libexec/oswatcher
にextras.txt
とcall_dstat.sh
を配置
extras.txt
extras.txt
は追加するカスタムスクリプトの設定ファイルで、名前は固定です。
中身は以下のように指定します。カスタムスクリプトは10個まで指定できるようです。
call_dstat.sh dstat oswdstat
call_dstat.shは追加するカスタムスクリプトの名前です。名前は任意です。
dstatは追加するカスタムスクリプトの種類(出力されるログファイルのファイル名に影響します。例tjkpostgres13_dstat_21.05.29.1700.dat
)
oswdstatはログの出力先のディレクトリ
call_dstat.sh
dstat実行用のカスタムスクリプト、call_dstat.sh
はこんな感じです。
#!/bin/sh
echo "zzz ***"`date '+%a %b %e %T %Z %Y'` >> $1
dstat -tclmndr 1 0 >> $1
dstat -tclmndr 1 0
のところを他コマンドに書き換えれば応用ができます。注意点は、定期的に出力が続くコマンドではなく、一回で実行が完了する形式のコマンドを指定することとなります。そうしないと、OSWatcherのインターバル毎に実行コマンドが重複していきます。
3.OSWatcherを再起動
#service oswatcher restart
ログの出力のされ方はこのような形になります。
[root@tjkpostgres13 oswdstat]# pwd
/var/oled/oswatcher/archive/oswdstat
[root@tjkpostgres13 oswdstat]# ls
tjkpostgres13_dstat_21.05.29.1700.dat.gz tjkpostgres13_dstat_21.05.29.1800.dat