明けましておめでとうございます。プログラマの田中でございます。今年の目標、決められましたでしょうか?ちゃんと設定しておかないと、日々アレやコレやと過ごしていくうちに「今年1年何も出来なかった...」のいやーな振り返りが待っています。「社内プロジェクトを2つ立ち上げる!」「京都の八つ橋を食い尽くす!」等。何でも良いので、目標を設定しておくだけで、活力のある1年を過ごせると思います。1年間でざっくり目標掲げてしまっても同じ悲劇を生みますので、1つのプロジェクトと考えマイルストーンなり設定すると面白くなるのでは。今年はそのような作戦で、目標達成に挑みたいと思います。題目についてそんなわけで、2015年一発目です。題しまして、「ログを扱うソフトウェア達」になります。何か題名だけはカッコ良い感じになりました。ログファイル単体でも、必要な情報を引っ張ってくる事は可能なのですが、見るログの種類って1つだけじゃないですよね。複数サーバからログを収集する必要がある場合、1台1台見ていくわけにもいかないですよね。いったものを解消するために、ログを一括管理するためのソフトウェアが世の中には存在致します。昔から存在するsyslogというログメッセージのやりとりを行う、プロトコルが存在します。今回は、このsyslogを利用した内容で行わせていただきます。syslogを触ってみようまず、syslogメッセージを受信するために、syslogdプロセスが立ち上がっている必要があります。UNIX系OSであれば、だいたいインストールされておりデーモンが起動しているかと思います。/usr/sbin/syslogdこのsyslogdが、規定のプロトコルで送られてきたデータを、規定のログファイルへ書き込む役割を果たしてくれます。今回は手軽に、コマンドたたいてsyslogdへ要求を投げてみましょう。HelloWorldこれだけで、syslogdを経由しログが所定箇所に書き込まれた事になります。HelloWorld)それでは、書き込まれた内容を確認してみましょう。Macの場合、Console.appを利用すると、GUIでログが閲覧可能なので見やすいかと思います。/var/log/system.log)検索で「HelloWorld」と入力すると、下記のような出力が見つかると思います。HelloWorldloggerコマンドで送った要求が、正常に処理されている事が確認出来ました。メッセージを適当に変更して、loggerを再度実行すれば反映されている事が確認出来ると思います。syslogで書き込まれたログさて、書き込まれたログを見てみると普段使っているツール類やシステムのログも表示されている事が確認出来ます。syslogdというソフトウェアを介する事で、様々なソフトウェアやサービスからのログを集約する事が可能になっています。Queryをまとめたり。今まであちこち見ていた、フォーマットも異なったログがまとまる事が可能になりました。(ただまとめただけでは見にくいだけですが、話の都合上割愛...)上記内容により、ログをソフトウェア介して利用する事でのメリットになります。つきましてKPIやマスタメンテといったログを扱うツールを作成する際に、ログが全てJSONやYAMLといったフォーマットで統一されていたら作成しやすいものです。ネットワーク経由での書き込み先程の内容では、ローカル内で完結した内容なりました。この仕組みですが、ネットワーク越しでも利用可能になります。複数台のサーバの情報を一つのサーバにまとめるにもってこいですね。ログを送る方法ですが514ポートに対して、「UDP」で送信するのみになります。UDPで送信するという点です。高速にログをポイポイ投げれますが、当然UDPなので取りこぼしも発生します。障害発生時に、該当のログが残ってないとなると大問題ですね。用途に応じて使い分ける事になりますが、rsyslogを利用する選択肢もあります。TCPと選択可能になります。TCPで行う場合、信頼性は増しますが、当然UDPより遅くなります。用途に応じて選択していただくのが良いかと思います。最後に今回、syslogを利用した紹介となりました。logstash等、ログを扱うソフトウェアは色々存在しています。今後も、少しづつ紹介していけたらと思います。次回は、実装に関する内容を行いたいと思います。それでは、素敵なログライフを。