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アラートも鳴り止みそう…かな.
Ubuntuをufw + dnsmasqでルータ化
研究室で,大学NW(グローバル)と研究室内NW(ローカル)を繋ぐルータを運用している.
本日,そのルータのファイルシステムが逝ったので,再インストールした.
せっかくなので,ブログにも構築手順を書いてみる.
環境
ルータ機は,2NICのマシン(i3, 8G, SSD64G)にUbuntu Server 14.04を入れたもの.
インストール時にOpenSSHは入れたけど,それ以外は,何もしていない.
NW構成は以下の通りで,もちろんIPはダミー.
GW(ルータ)のNICは,p1p1を大学側,p3p1を研究室側をしている.
GWの下にL3スイッチがあり,そこから実験用のマシンに繋っている.
university network │ gw [192.168.0.1] ───┬──┴────────── 192.168.0.0/24 │ p1p1 [192.168.0.241] ┌─┴─┐ │ gw │ └─┬─┘ │ p3p1 [10.0.0.1] ┌─┴─┐ │ sw │ └─┬─┘ ───┴──┬────────── 10.0.0.0/24 │ laboratory network
ufwの設定
今回は,iptablesのラッパであるufwを使ってNATを行う.
- /etc/network/interfaces
auto p1p1 iface p1p1 inet static address 192.168.0.241 netmask 255.255.255.0 gateway 192.168.0.1 auto p3p1 iface p3p1 inet static address 10.0.0.1 netmask 255.255.255.0
- /etc/default/ufw
#DEFAULT_FORWARD_POLICY="DROP" DEFAULT_FORWARD_POLICY="ACCEPT"
- /etc/ufw/sysctl.conf: 8行目をコメントイン
net/ipv4/ip_forward=1
- /etc/ufw/before.rules: ファイルの先頭に追記
# NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Forward traffic from p3p1 through p1p1. -A POSTROUTING -s 10.0.0.0/24 -o p1p1 -j MASQUERADE # Don't delete the 'COMMIT' line or these rules won't be processed COMMIT
$ sudo ufw disable && sudo ufw enable $ sudo ufw default allow
dnsmasqの設定
研究室内NWから名前解決ができるように,ルータにキャッシュDNSも用意する.
今回は,軽量で設定が簡単なdnsmasqを使う.
$ sudo apt-get install dnsmasq
- /etc/dnsmasq.conf
interface=p3p1 no-dhcp-interface=p1p1 no-dhcp-interface=p3p1 cache-size=500
OS起動時にdnsmasqも起動するようにしておく.
$ sudo service dnsmasq restart $ sudo update-rc.d dnsmasq defaults