logrotateメカニズムとモニタリングとの結合テスト


目的:ログの切断時に正常にデータが取得され、データの損失や重複がないかどうかをテストします.
理論上、logrotateはmvでログの切り替えを行い、モニタリングはファイルの最近の修正時間をチェックすることでファイル内容を読み取るかどうかを判断するので、理論的にはデータを失うことはありませんが、検出する必要があります.
初期の考え方:シミュレーションログの発生、絶えず1つのファイルにデータを書いて、モニタリング側にこのファイルをモニタリングさせて、それからlogrotateメカニズムをシミュレートして、ファイルに対して切断を行って、最後にモニタリング側が取ったデータがローカルと同じであることを検査して、テストを完成します.
書き込みスクリプトは次のとおりです.
[root@redhat logtest]# cat w.sh 
#!/bin/bash
echo start >  /logtest/testlog
for j in {1..600}
do
for i in {1..1000}
do
echo $j time $i >> /logtest/testlog
done
done

切り替えのスクリプトは次のとおりです.
[root@redhat logtest]# cat c.sh 
#!/bin/bash
mv /logtest/testlog /logtest/testlog.1

ローカルのテスト結果:
[root@redhat logtest]# tail testlog.1 
110 time 148
110 time 149
110 time 150
110 time 151
110 time 152
110 time 153
110 time 154
110 time 155
110 time 156
110 time 157
[root@redhat logtest]# head testlog
110 time 158
110 time 159
110 time 160
110 time 161
110 time 162
110 time 163
110 time 164
110 time 165
110 time 166
110 time 167

ローカルでデータが失われていないことがわかり、モニタ側はローカルのtestlog*ファイルを監視します.モニタ側の問題により、ローカルのデータが取得されず、この検出スキームは終了する
その後、syslogサーバがローカルにインストールされていることを考え、ローカルの/var/log/message*は早くから監視側に監視されていたことを考え、2番目の案を考えました.
手動でログ切り替えを行い、監視側にデータの紛失または重複がないかどうかを確認します.
logrotateは多くのLinuxリリースでデフォルトでインストールされています.システムはlogrotateを定期的に実行し、一般的には毎日1回実行します.システムはこのように日単位で実行されます.crontabは毎日定期的に/etc/cronを実行します.dailyディレクトリの下のスクリプトですが、このディレクトリの下にlogrotateというファイルがあります.テストサーバのスクリプトの内容は次のとおりです.
[root@bppmis /]# cd /etc/cron.daily/
[root@bppmis cron.daily]# ls
cups  logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  rhsmd  tmpwatch
[root@bppmis cron.daily]# cat logrotate 
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
[root@bppmis cron.daily]#

logrotateがcrontabに呼び出され、毎日1回実行されているのが見えます.
テストされたログ・サーバにcrontabがインストールされていないため、受信したすべてのログは/var/log/messageに保存され、ログを手動で切断します.
/usr/sbin/logrotate  -vf  /etc/logrotate.conf >/dev/null 2>&1

最後に、ローカルファイルの内容と監視側が取った内容を比較し、データの損失と重複がないことを発見した.テストに合格した.
このテストの不足点は、皆さんのご指導をお願いします.