月次アーカイブ: 8月 2012

fluentとgrowthforecastが流行っていると聞いて試してみました。アクセスログの統計はawstatsなどを使っている方も多いと思いますが、ツールの提供する範囲でしか表やグラフを生成してくれません。しかし、自分が計測したい項目がそこになかった場合は、グラフを作るしかありません。これまでは敷居の高かったグラフ作成を、これら組み合わせで簡単に作ってしまいましょう。RRDtoolなど既存のツールを使って数字をグラフにするよりは、恐らくものすごく簡単だと思います。

fluentって?

メッセージングのコレクションサービス。フレームワークとして抽象化されており、各種プラグインを利用することで、様々なメッセージングを集約、伝搬することが出来る。
また転送時のデータ構造には MessagePack を採用しており、かなりの転送能力を誇る。

from はてな

growthforecastって?

kazeburoさんが作成されたツールで、様々な値をAPI経由でグラフ化することができる。

動作イメージとしては以下の概念図のようになります。
fluent+growthforecast example
今回は例題として、ApacheのアクセスログをfluentがJSON形式に変換し、そのログファイルをgrowthforecastがグラフ化するところまでやってみたいと思います。

あらかじめ手元の作業環境にApacheをインストールするか、他所のサーバからアクセスログ(combined形式)を任意のディレクトリにコピーしておいてください。

…続きを読む

今回は、こちらの作業の続きです。fluentでログが採れたところからの作業となります。いよいよグラフ化するところに入ります。RRDtoolはCentOSのパッケージからインストールするとうまく動かないとのことなので、GrowthForecastのみPerlを最新化しつつRRDtoolも独自にインストールします。

■ 何はなくとも下準備

GrowthForecastを動かすために、以下のパッケージをyumの標準リポジトリからインストールします。
[cc lang='bash' ]
[admin@mega21 log]$ sudo yum install glib2-devel gettext libxml2-devel pango-devel cairo-devel
[admin@mega21 log]$ cd
[/cc]

…続きを読む

wordpressをActive/Standbyで冗長化したはよいが、実は運用で悩んでいる。単に文字列だけのエントリを投稿するだけであれば、サーバの肩寄せなどせず、単にDBへポンポン放り込んでくれるからである。一方で、以下のような場合は肩寄せ運用をしなくてはならない。

    • 画像つきエントリの投稿
    • プラグインやテーマの追加、削除、アップデート
    • テーマの編集

これらの作業はすべて、Apacheがファイルシステムに書き込みを加えるという共通項がある。対策としては、

    • 書き込みを加える対象以外のApacheを止めて、台数分作業を繰り返す
    • wp-adminなどの特定ディレクトリだけ片寄せする
    • POSTだけ片寄せして、裏でrsyncやlsyncdを使って同期する

くらいであろうか。2~3台程度のサーバであれば、手オペが少々面倒くさいだけで済むが、片寄せを自動化するとなると、WordPressのURLの構造をきちんと理解しないといけないし、もしURL構造の仕様変更があったらそれに追随しなければならない。さりとて、DocumentRootをNASやiSCSIなどで共有したら、単一障害点になってしまう。。。

さらにもう1点、一番重要なのは、エントリの書き手に余計な負担を与えてしまうこと。「画像つきエントリ投稿したけりゃバックエンドのApacheを片方止めてくださーい」なんて、言えないですよねー。なので、ブログの冗長化は自己満足ならいいけど、仕事でやるんだったらここまで考えたほうがいいです。大手のブログの中の人はどうしているのだろう。。。

CentOS はRHELのクローンOSなので、Fedoraと違いパッケージは多少古くても安定したものを採用しています。このため、Rubyの最新版で開発しようとしてもソースからインストール・・・というのも、1台だけならまだしも多数インストールするとなると面倒くさい話です。そこで、最新版のRubyをrpmパッケージ化してしまおうというお話です。

CentOS 6.3にruby 1.9.3-p194 をインストールしようとした際、当初は checkinstall でのパッケージ化を試みましたが、docしかインストールされないパッケージが出来上がったりするなどして大ハマり。みんな「出来たー」「できたー」って言ってるけどそんなにハマらないものなのだろうか?と途方に暮れつつググったところ、 checkinstall ではなく rpmbuild で rpm を作成されていた方がいらっしゃいました

基本的には↑のサイトに書いてある通りの手順でできました。SPECファイルは lnxchk/ruby-1.9.3-rpm  を利用しましたが、マイナーバージョンだけ書き換えるだけでビルドが通ります。(※ 2012/08/06 現在) SPECファイルを取得するのに、gitをインストールしておくと何かと捗ります。

■ 必要なもの

OS: CentOS 6.3 (私はx86_64でビルドしました)
パッケージ: "Development Tools" を yum groupinstall でインストール
zlib-devel
openssl-devel
readline-devel
ncurses-devel
gdbm-devel
db4-devel
libffi-devel
tk-devel
libyaml-devel (※ EPELリポジトリからインストール)

以上、自分のやってみたメモでした。