タグ別アーカイブ: mongoDB

log4php – LoggerAppenderMongoDB

最近、サーバ台数10台を越えるくらいの案件をメインでやっているのですが、

サーバ台数が増えると考えなくてはいけないことの一つがログの管理。

何か調べるために10台からのサーバを見て回るなんてもってのほかです。

 

アプリケーションのログはlog4phpでファイルに書き出していたのですが、

log4phpにLoggerAppenderMongoDBなるものがあることに気がつきました。

mongoDBってNoSQLの一種だよなー」程度にしか知らなかったので、

試しに検証してみたメモです。

 

まずは、mongoDBのインストールから。

インストール方法は公式サイトで調べました。

OSは、AWSのLinux AMIで検証しています。

公式サイトには、「Red Hat,Cent OS,fedoraでのインストール」としてまとめられていたので、

Red Hat系なら全て同じ方法で大丈夫だと思います。

まずは、yumでインストールできるように公式リポジトリの設定ファイルを設置します。

# vi /etc/yum.repos.d/10gen.repo

以下のように記載します。

[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1

そして、インストール

 # yum install mongo-10gen mongo-10gen-server

インストール完了!

 

次は、PHPからmongoDBへアクセスするための設定です。

PECLは入っている前提です。

mongoDBモジュールのインストール。

# pecl install mongo

mongoDBモジュールを読みませるようにします。

# vi /etc/php.d/mongo.ini

以下のように記載します。php.iniに直で書いてもOKです。

extension=mongo.so

以上で、環境面の準備はOKです。

 

最後に、log4phpの設定です。

以下のようなlog4phpの設定ファイルを作って、log4phpに食わせます。

<configuration xmlns="http://logging.apache.org/log4php/">
    <appender name="default" class="LoggerAppenderMongoDB">
        <param name="host" value="mongodb://ホスト名またはIPアドレス" />
    </appender>
    <root>
        <appender_ref ref="default" />
    </root>
</configuration>

以上で終了です。

 

mongoDBは、スキーマレスなデータベースなので、データベースの作成やテーブルの作成は必要ありません。

勝手に作って、勝手に保存してくれます。

今回は、検証用なので最低限の設定しかしていませんが、

実際に使う場合には、mongoDBへの接続IDやパスワードの設定をした方が良いでしょう。

 

mongoDBにちゃんと格納されているかは、

コマンドラインから確認しても良いですが、

phpMoAdminなるものを発見したので、使って見ました。

インストール方法は、Myの方と同じでダウンロードして公開ディレクトリ上で展開するだけだったと思います。

Myの方のような高機能さは無かったですが、

まずmongoDBのクエリの書き方がわからないので、GUIがあるだけでも良いかなと思いました。

クエリの書き方はマニュアル(日本語がありました)を見たところ難しくはなさそうだったので、

おいおい覚えたいと思います。

 

ApacheやNginxのアクセスログ等をリアルタイム収集するのに、

最近注目されているFluentdなんかもmongoDBに標準対応しているので、

組み合わせれば全部のログをmongoDBで一括管理できるんじゃね?って思ったりしています。

mongoDBはパフォーマンスも高そうなので期待しています。

Fluntedも近いうちに検証するので、その時にまた書きたいと思います。