インタビュー:syslog-ng 2.0の開発者Balázs Scheidler氏に聞く

現行のUnixにおける標準的なシステムイベントのログ記録アプリケーションはsyslogdであるが、その代替ソフトの1つにsyslog-ngというシステムログ記録ツールが存在する。このツールは、TCPネットワークプロトコルを介したリモートサーバへの高信頼性ログ記録、多様なプラットフォームおよびアーキテクチャのサポート、高レベルなメッセージフィルタリング機能をその特長としており、実際いくつかのLinuxディストリビューションでは標準でsyslog-ngを同梱するようになっている。今回は、同ツールの開発者であるBalázs Scheidler氏にインタビューを申し込み、先月リリースされたバージョン2.0に関する質問などを試みた。

NewsForge:このプロジェクトを開始した切っ掛けは何だったのでしょうか?

Balázs Scheidler:すべての始まりは1998年のことで、当時ハンガリーの大手通信企業が地元のLinuxメーリングリスト上でnsyslogをLinuxに移植するための人材を募集していました。このnsyslogというのはDarren Reed氏によって開発されたものですが、当時は未完成の段階であり、バグも多く、使用可能な環境もBSDだけという状況だったのです。私は大学在学中にISP関連の仕事をしていた関係上syslogdも使用していましたが、作成されるファイルの数が多すぎたり、重要な情報の検索や移動が簡単に行えないなど、様々な不満を抱えていました。そうした経験もあったため、syslog系のより優れたアプリケーションの開発は、私に最適の仕事だと思った訳です。

NF:syslog-ngという名称は、何に由来しているのでしょうか?

BS:syslog-ng 1.0は本質的にnsyslogをベースに構築したものですが、nsyslog自身は有効なライセンスを有していませんでした。私としてはGPLでのリリースを考えており、Darrenからもその許可が得られたのですが、その際にアプリケーション名を変更することという条件が付けられていた訳です。

NF:ユーザはどのようなサポートを得られるのでしょうか?

BS:そうした目的でのコミュニティFAQおよびメーリングリストが運営されています。コンパイルや設定に関する不明点があれば、メーリングリストに質問することで適切な回答が得られるでしょう。より迅速なサポートが必要だという場合は、私の会社であるBalaBit IT Securityから正式なサポートが提供されています。

NF:ドキュメント類は用意されているのですか?

BS:内容的にはリファレンスマニュアルが一番新しいものですが、機会があれば書き直す必要があると思っています。インターネットを探せば、ハウツー関係をまとめたサイトを見つけることができるでしょう。

NF:syslog-ngは、どのようなユーザ層が使っているのでしょうか?

BS:ある程度高度なログ記録機能を必要としている人たちですね。単独のワークステーション上で使っている人もいますし、千台単位のデバイスに関するログ記録をsyslog-ngを使って中枢管理している企業もいくつか知っています。Fortune 500企業からサポート依頼を受けたことも何件かあります。

NF:バージョン2.0の新機能についてお聞かせください。

BS:バージョン1.6段階でも大きなトラブルは発生していませんでしたが、マイナーな不具合はいくつか残っていました。バージョン2.0は将来的な開発ベースとして使えるようゼロから作り直したものですが、その際に若干の改善も施してあります。例えば、データ構造を最適化したことでCPU使用率が大幅に削減できました。大規模なログセンタから寄せられたフィードバックによると、同じ負荷をかけても今回のバージョンではCPU使用率が半分で済んでいるそうです。

個々のログメッセージにタイムゾーン情報が付けられている場合もありますが、syslog-ngを使えば、異なるタイムゾーン間の変換を施すことも可能です。

ログファイルの読み取りおよび転送にも対応しています。この機能は、何か特定のファイルにログを記録するアプリケーションがある場合に、そのファイルをsyslog-ngに読み込んでからリモートのログセンタに転送するといった用途に使用できます。

バージョン2.0はIPv6ネットワークプロトコルをサポートしているので、マルチキャストIPアドレスでメッセージの送受信をすることも可能です。

ドメインネームサーバ(DNS)を使うことなく、ログにホスト名を含めることも可能です。DNSを使うと高トラフィック環境下での処理速度が著しく制限される傾向にあり、またネットワーク接続を確立しておく必要もあります。今回のsyslog-ngでは、/etc/hostsと同様の専用ファイルを作成しておくことで、使用頻度の高いIPアドレスのホスト名解決を独自に処理できるようにしてあります。この機能を用いることにより、ログの可読性が大幅に改善されるはずです。

syslog-ng 2.0はアクティブフロー制御を用いてメッセージの喪失を防止しています。これは、syslog-ngからのメッセージ出力を受信する側の記録速度が低い場合、自動的にsyslog-ngがメッセージ入力の読み込み間隔を若干広げることで対処するという機構です。受信側に処理しきれないほど多量のメッセージが殺到すると、オーバーフローしたメッセージが喪失される結果になりますが、この機構を用いることでそうした事態を防止できるはずです。

NF:syslog-ngが使用できるのはLinuxだけなのでしょうか? それとも他のプラットフォームもサポートしているのでしょうか?

BS:Unix系プラットフォームであればコンパイル可能です。動作確認が取れているのは、BSD、Solaris、HP-UX、AIXですが、おそらくその他のプラットフォームでも使えるものがあると思います。メジャーなLinuxディストリビューションの多くは、syslog-ngパッケージを同梱しています。具体的には……、Debian、SUSE、Gentooなどですね。たしかGentooではデフォルトでインストールされるはずで、syslogdと完全に置き換えられたのだと思いますが。

NF:現在、何か他のプロジェクトにも参加されておられるのでしょうか?

BS:私にとってのsyslog-ngは、趣味の活動の1つでしかありません。だからこそ、バージョン2.0の完成まで5年近くもかかった訳です。メインで参加しているのは、Zorpというアプリケーションレベルのプロキシファイアウォールで、これは私の会社で開発中のプロジェクトです。つい最近までは、Secure Shell(SSH)プロトコルの監査とプロキシを透過的に実行するアプライアンスに携わっていました。

開発中は多くのバグその他の障害に遭遇したので、結果的に、glibやtproxyカーネルモジュール用など、様々なパッチを作成することになりました。

NF:これらのプロジェクトは、オープンソース扱いなのでしょうか?

BS:いいえ、これらは商用製品ですが、ZorpファイアウォールについてはGPLバージョンも存在します。

NF:syslog-ngでの将来的な実装を検討している機能などはありますか?

BS:IETFで開発中のsyslogプロトコルをサポートすることを計画しています。

可能であるならディスクベースのバッファ機能を実装して、ネットワーク接続が切断された場合にsyslog-ngのログを一時的に何かのファイルに記録させておき、ネットワーク接続の再確立後にこのファイルからメッセージを転送し直すようにしたいですね。

その他にも、TLSを用いたセキュアなメッセージ転送機能や、プロトコルレベルのアプリケーションレイヤ応答機能を実装できたらいいと思っています。

NewsForge.com 原文