syslogdの限界と次世代シスログデーモン:新世代syslogデーモン徹底活用(1)(3/3 ページ)
UNIX系OSのシステムロギングをおよそ20年の長きにわたって支えてきた「syslogd」にも、限界が見えつつあります。その限界を打ち破る機能を備えた新しいシスログデーモンを紹介します。(編集部)
2つの次世代syslogデーモン
syslogdの問題点を克服したシスログデーモンは、特定機器のために用意された有償製品も含めれば数多くありますが、ここではオープンソースソフトウェアで、Linuxディストリビューションでも標準採用されている「syslog-ng」と「rsyslog」を紹介します。
次世代を意識した「syslog-ng」
syslog-ngはGPLで利用可能なオープンソースソフトウェアです。ハンガリーに拠点を構えるBalaBit IT Securityにより提供されています。「ng」はnext generationを意味し、まさに次世代を意識した、さまざまな機能を備えています。
1998年、当時未完であったDarren Reed氏の「nsyslog」を基に、キャリアクラスで使用されることを前提に開発が行われました。2006年にはIPv6対応やさらなる最適化が施されるなど、現在も積極的に開発が行われています。syslogdでは満たすことができなかった点を補いつつ、柔軟性や扱いやすさはそのままに、次のような機能を備えています。
syslog-ngの主な機能
- ファシリティ/プライオリティの組み合わせ以外に、シスログを生成したプログラム名で出力先を分けることができる
- パターンマッチングを用いて、特定の文字列をシスログに見つけた場合、指定された処理を実行することができる
- 日時やホスト名などのマクロを用いて、動的な設定を行える
- 出力される日付の書式を選択できる
- ファイルシステムへのシスログ書き込みタイミングを指定することができる
- root以外のユーザー権限でサービスを起動できる
- シスログをネットワーク経由で転送する際、UDPに加えTCPを使用することができる
- シスログの取りこぼしなど動作中の統計情報を記録することができる
シスログを識別する手段が増えたことで、swatchのようなアプリケーションを別途使用することなく、シスログの内容に基づいてメール通知やアクセスフィルタを実行するなど、syslog-ngだけで監視を自動化できます。また、日付単位でログファイルを生成する場合、syslogdではlogrotateを導入する必要がありましたが、syslog-ngでは日付マクロを用いることで可能になっています。
いままでアドインソフトに依存していたシスログを適切に管理する機能や、syslogの安全性と信頼性を向上させる機能の追加が目を引きます。大規模運用では「ファイルシステムへのシスログ書き込みタイミングを指定」できることで、ファイルシステムのI/Oを最適化できます。
信頼性を特徴とする「rsyslog」
reliable(信頼できる)シスログデーモンを目指して名付けられた「rsyslog」は、名前の由来となっている信頼性とともに、豊富な機能も特徴としています。TCPを使ったシスログの配送や、MySQLをはじめとするデータベースとの連携など、2004年の開発開始以来、syslogdに求められた機能を積極的に取り込んでいます。
Fedoraではバージョン8以降、rsyslogを標準のシスログデーモンとして採用しています。主な特徴は次のとおりです。
rsyslogの主な特徴
- TCPを使ったシスログの転送が可能
- MySQLやPostgreSQLをモジュールなどで拡張することなく、ネイティブでサポート
- libdbiを使用すれば、Firebird/Interbase/MS SQL/SQLLite/Oracleなどに対応可能
- シスログの圧縮転送が可能
- stunnelを使ったシスログのセキュアな転送が可能
- シスログのディスク書き込みで、I/Oの処理が間に合わない場合など、スプールを使用することができる。特にバックエンドにデータベースを使用している場合に有効に機能する
- syslogd.confと互換性のある設定ファイルを使用できる
- RFC3195(http://www.ietf.org/rfc/rfc3195.txt)のサポート
- 2Gbytesを超えるサイズのログファイルをサポート
- モジュール構造を採用しており、モジュールで機能を追加することができる
やはり、信頼性確保のための機能が目を引きます。RFC3195はシスログ転送方式の信頼性を高めた、新しい転送方法を定めたものです。対応する機器は多くありませんが、今後の普及が期待されています。
rsyslogはいち早くRFC3195のサポートをうたっています。syslogdでもsyslog-ngでも、データベースへのシスログの保存は、パイプ処理を使って外部プログラムを呼び出すことで実現しています。さらにrsyslogは、その仕組みの中にMySQLやPostgreSQLとの連携機能を有しているため、大規模な運用でも効率よくシスログをデータベースに保存することができます。
今回はsyslogdの問題点を解説し、その問題点を解決した新たなシスログデーモンを紹介しました。次回は「syslog-ng」のインストールと基本的な使用方法を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.