curator + cron + logrotate
研究室では,Sensuでサーバ監視をしている.
そこで収集したCPU使用率などのログを,Elasticsearchに投げ,Kibanaで可視化する.
ただ,20台近くのマシンの,数種類のログが,毎秒入ってくるので,結構大変だ.
(毎日のindexは,500docsで,だいたい80MBくらい.)
2コア2GBのVMで動かしているので,CPUアラートが飛びまくる事態に.
そこで,curatorを使って,定期的に古いindexを削除するようにしてみた.
curator
curatorは,日付などでindexの管理をするツールだそう.
Python製で,簡単にインストールできる.
$ sudo apt-get install python-pip $ sudo pip install elasticsearch-curator
使い方は,参考文献に丸投げする.
ただ,バージョンアップによってオプションが変わったらしいので要注意.
cron
cronを使って,毎日curatorを実行させる.
以下の内容で/etc/cron.daily/curatorを作成する.
実行権限つけるのを忘れないように.
#!/bin/bash CURATOR=/usr/local/bin/curator LOG=/var/log/curator.log $CURATOR bloom --prefix sensu-metrics- --older-than 1 &>> $LOG $CURATOR close --prefix sensu-metrics- --older-than 2 &>> $LOG $CURATOR delete --prefix sensu-metrics- --older-than 3 &>> $LOG
cronは/usr/local/binにpathが通ってないようなので,明示的に書いてる.
bashの&>>で,標準出力もエラーもログに書き出す.
logrotate
cronで実行したcuratorのログが/var/log/curator.logに溜まっていくので,定期的に整理する.
logrotateは,定期的にログの圧縮や削除をしてくれるツール.
以下の内容で/etc/logrotate.d/curatorを作成する.
/var/log/curator.log { rotate 4 weekly compress missingok notifempty su root root }
この設定だと,週1でログを圧縮して,4世代(週間)分残すようになっている.
まとめ
cronを使って定期的にcuratorを走らせて,indexの整理をする.
更に,curatorのログもlogrotateを使って整理するようにできた.
これで,ElasticsearchのCPUアラートも鳴り止みそう…かな.