munin 2.0 インストールしてみた
環境はVirtualBoxで稼動してる CentOS5.8 i386。
とあえずローカルホストでMunin::MasterとMunin::Nodeが稼動するまでのログ。
参考にさせていただいたエントリなど。
- 【試してみた】Munin 2.0-betaを入れてリソースを監視してみた
- Munin 2.0(stable)登場☆新機能はとってもうれしいなって(第1回)
- munin-2.0-rc1を試してみた(Debian GNU/Linux)
- CgiHow2 - Munin - Trac
perl moduleはCpanで入れるのもありだと思うけどrpmで
wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm wget http://rpms.famillecollet.com/el5.i386/remi-release-5-8.el5.remi.noarch.rpm rpm -ivh epel-release-5-4.noarch.rpm remi-release-5-8.el5.remi.noarch.rpm yum install perl-Module-Build perl-HTML-Template perl-Log-Log4perl perl-Net-SSLeay perl-Net-SNMP perl-Net-Server yum install fcgi fcgi-devel fcgi-perl yum install perl-IO-Socket-INET6 perl-File-Copy-Recursive yum install httpd mod_fcgid
muninアカウント追加
groupadd -r munin useradd -r -g munin -d /opt/munin -s /sbin/nologin -c "Munin user" munin
インストール
wget http://downloads.sourceforge.net/project/munin/stable/2.0.0/munin-2.0.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmunin%2Ffiles%2Fstable%2F2.0.0%2F&ts=1339839300&use_mirror=jaist -O munin-2.0.0.tar.gz tar xfz munin-2.0.0.tar.gz cd munin-2.0.0 make make install
cronファイルコピー
cp -pi build/resources/linux-cron.d_munin /etc/cron.d/munin
pluginファイルのシンボリックリンク(何もないとrootあてにメールが届くので適当にお好みで)
cd /etc/opt/munin/plugins ln -s /opt/munin/lib/plugins/cpu cpu ln -s /opt/munin/lib/plugins/df df
munin-node起動
/opt/munin/sbin/munin-node &
apache設定
sed -i 's/^ScriptAlias/\#ScriptAlias/g' /etc/httpd/conf/httpd.conf vi /etc/httpd/conf.d/munin.conf # Munin2 Alias /munin2/ /opt/munin/www/docs/AllowOverride All Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ScriptAlias /cgi-bin/ /opt/munin/www/cgi/ AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all SetHandler fcgid-script
パーミッション関連
chgrp -R apache /opt/munin/log/munin chmod 775 /opt/munin/log/munin mkdir -p /var/opt/munin/cgi-tmp/munin-cgi-graph/ chown munin:apache -R /var/opt/munin/cgi-tmp/ chmod 775 /var/opt/munin/cgi-tmp/ chmod 775 /var/opt/munin/cgi-tmp/munin-cgi-graph/
apache起動
service httpd start
バージョン1.4.7のmunin-nodeが稼動してるホストを試しにmunin.confに追加してみたら普通に値は取れた。
動的にグラフ作成されるタイミングでマシンに負荷が結構かかるんだなという感想だったけど、
mod_fcgiに変えてみたらかなり改善されたように感じた。mod_fcgi必須なのかな。
munin-nodeだけインストールする場合はこんな感じで
make make install-common-prime install-node-prime install-plugins-prime
rpmでインストールされてるmunin-nodeが稼動してるマシンでバージョン2.0のmunin-node入れると同じperl
モジュールが存在してしまうので古いバージョンのmunin-nodeが起動しなくなる。
切り替えたい場合はモジュールを退避すればいいんだけどどうなんだろ。。。
mv -i /usr/local/share/perl5/Munin ~/.
spec書けってことですかね。
suse Linux用のspecはあるのにRHEL用はないという。。。
追記
fcgiの設定も様子をみながら調整したほうがよさそうですね。
IPCConnectTimeout 20 MaxProcessCount 8 DefaultMaxClassProcessCount 2 TerminationScore 10 SpawnScore 80 IdleTimeout 300
ほぼダウンタイムなしでinnodb plugin でのテーブル圧縮
innodb_file_formatを下記のように変更
SET GLOBAL innodb_file_format=Barracuda; SET GLOBAL innodb_file_format_max=Barracuda;
既存のテーブルとほぼ同じ構成の新しいテーブルを作成(ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4を追加しただけ)
CREATE TABLE `new_recipe_log` ( `type` varchar(200) NOT NULL, `user_id` int(10) unsigned NOT NULL, `date` datetime NOT NULL, `recipe` mediumtext ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4 PARTITION BY RANGE (TO_DAYS(date)) (PARTITION p20120530 VALUES LESS THAN (735018) ENGINE = InnoDB, PARTITION p20120531 VALUES LESS THAN (735019) ENGINE = InnoDB, PARTITION p20120601 VALUES LESS THAN (735020) ENGINE = InnoDB, PARTITION p20120602 VALUES LESS THAN (735021) ENGINE = InnoDB, PARTITION p20120603 VALUES LESS THAN (735022) ENGINE = InnoDB, PARTITION p_max VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
徐々にINSERT INTO SELECT
INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-05-29 00:00:00' AND '2012-05-29 23:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-05-30 00:00:00' AND '2012-05-30 23:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-05-31 00:00:00' AND '2012-05-31 23:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-06-01 00:00:00' AND '2012-06-01 23:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-06-02 00:00:00' AND '2012-06-02 11:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-06-02 12:00:00' AND '2012-06-02 17:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-06-02 18:00:00' AND '2012-06-02 21:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-06-02 22:00:00' AND '2012-06-02 22:59:59'; INSERT INTO new_recipe_log SELECT * FROM recipe_log WHERE date BETWEEN '2012-06-02 23:00:00' AND '2012-06-02 23:59:59';
適当なタイミングでRENAME TABLE(数秒かかる時もある)
RENAME TABLE recipe_log TO old_recipe_log, new_recipe_log TO recipe_log;
動作確認したらDROP TABLE
DROP TABLE old_recipe_log;
データが大きいとかなり時間かかります。
InnoDB を ARCHIVE ENIGINEに変えてみた
ALTER TABLEでパーティショニング
alter table foobar_log PARTITION BY RANGE (TO_DAYS(ins_date)) ( PARTITION p20120501 VALUES LESS THAN (734989), PARTITION p20120502 VALUES LESS THAN (734990), PARTITION p20120503 VALUES LESS THAN (734991), PARTITION p20120504 VALUES LESS THAN (734992), PARTITION p20120505 VALUES LESS THAN (734993), PARTITION p_max VALUES LESS THAN MAXVALUE );
InnoDBからARCHIVE ENGINEに
alter table foobar_log ENGINE=ARCHIVE; ERROR 1069 (42000): Too many keys specified; max 1 keys allowed
ARCHIVE ENGINEは1 KEYのみサポートなので怒られた
show index from foobar_log; alter table foobar_log drop index hoge_level; alter table foobar_log drop index bar_age;
ARCHIVE ENGINEに変更
alter table foobar_log ENGINE=ARCHIVE; Query OK, 20093910 rows affected (13 min 29.84 sec) Records: 20093910 Duplicates: 0 Warnings: 0
圧縮前に約7.8Gだったものが圧縮後には約632Mほどに。
他のテーブルもいくつかやってみたところ200%超の圧縮率になるものもあった。
適当なログ用のテーブルをやってみたけどログデータの保管に向いてるとは本当みたいです。
DELETEできないのはパーティショニングでカバーできそう。
UPDATE/REPLACEはないし。
InnoDB Pluginによる圧縮もやってみたけど圧縮率という意味ではARCHIVEのほうが良いです。
InnoDBの特性をそのままに圧縮もしたいというならPluginによる圧縮のほうが良いと思いました。
わかってた事だけど要は使い道次第ってことですね。
ウェブオペレーション ―サイト運用管理の実践テクニック (Theory in practice) 買ってみた
![ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)](https://images-fe.ssl-images-amazon.com/images/I/51-ThZ6FRfL._SL160_.jpg)
ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)
- 作者: John Allspaw,Jesse Robbins,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/05/14
- メディア: 大型本
- 購入: 10人 クリック: 923回
- この商品を含むブログ (50件) を見る
まだ読み途中。