12FF5B8

hico_horiuchiの技術系な覚え書き.

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アラートも鳴り止みそう…かな.