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

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

ufwを再起動して,設定を適用させれば完了.

$ 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

まとめ

これだけの設定で,Ubuntuをルータ化することができた.
あとは,L3スイッチのDHCP設定で,GWとDNSを10.0.0.1に向ければOK.