ずっと前に、私が別のプラットフォームで別の会社のシステム管理者をしていたとき、ログファイルを一元化する手段がありませんでした。ほとんどの朝、仕事に着いたとき、私はコーヒーを1杯注ぎ、各サーバーに20〜30分移動し、イベントログを確認して、検出された問題に気づきました。これがログを処理する最も効率的な方法ではなかったことを保証します。しかし、それが私が持っていた唯一の選択肢でした。
ただし、LinuxはUnixベースのsyslogツールを使用してローカルログファイルを管理します。最近のほとんどのLinuxディストリビューションは、実際には rsyslogと呼ばれる新しく改良されたデーモンを使用しています。 。 rsyslog
ログをリモートサーバーに転送することができます。構成は比較的単純であり、Linux管理者がアーカイブとトラブルシューティングのためにログファイルを一元化することを可能にします。この記事では、ログファイルリポジトリとして機能するようにサーバーを構成する方法と、ログをサーバーに転送するようにLinuxサーバーを構成する方法を示します。
ログファイルは、サーバーインフラストラクチャの重要なコンポーネントです。システム管理者はログファイルを使用して多くのタスクを実行します:
- トラブルシューティング
- サービスレベルアグリーメント(SLA)監査
- ベースライン
- 予防保守
ログホストを構成する
ログファイルをホストしているサーバーをログホストと呼びます。 。このサーバーは、他のLinuxデバイスと比較していくつかの固有の構成が必要になる場合があります。ログホストサーバーの次の設定を検討してください。
/ var/log用の個別のパーティション
インストールガイドラインでは、多くの場合、管理者に/var/log
をマウントするようにアドバイスしています。 ファイルシステムのルートが存在するストレージが制御不能なログでいっぱいになるのを防ぐために、別のパーティションに配置します。サーバーが非常に多くのリモートデバイスからログファイルを受信する場合、このような方法は重要です。
構成ファイル
実際のrsyslog
構成は、/etc
の構成ファイルを介して管理されます ディレクトリ。いくつかの行を編集する必要があります。ディストリビューションによっては、設定が若干異なる場合があります。元の構成ファイルをバックアップしてから、/etc/rsyslog.conf
を開きます。 お気に入りのテキストエディタでファイルします。
まず、UDPの2行のコメントを解除します。
# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514
トランスポートプロトコルとしてTCPを使用することもできます。
# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514
これらの行は、モジュールの構成ファイルの上部にあります。 セクション。
次に、受信ログのテンプレートを構成します。テンプレートを構成しない場合、リモートサーバーからのすべてのログエントリがログホストサーバーのローカルログと混ざります。
$template DynamicFile,"/var/log/%HOSTNAME%/forwarded-logs.log"
*.* -?DynamicFile
このテンプレートは、特定のホストからのすべてのログを、そのホストにちなんで名付けられたディレクトリに配置します。たとえば、 WebServer1という名前のサーバーがある場合 、WebServer1
という名前のディレクトリ が作成され、そのサーバーのすべてのログがそのディレクトリに保存されます。テンプレートはテンプレートに設定されます 構成ファイルのセクション。特定のセクションが定義されていない場合は、ルールの前にテンプレートが定義されていることを確認してください。 。
オンラインで利用できるさまざまなテンプレートオプションがあります。
トランスポート層プロトコルのコメントを解除してテンプレートを設定したら、変更をファイルに保存します。 rsyslog
を再起動することを忘れないでください 。
# systemctl restart rsyslog
ファイアウォール
rsyslog
TCPまたはUDPのどちらを使用しているかに関係なく、ネットワーク接続にポート514を使用します。ログホストサーバーのファイアウォールでポート514を開く必要があります。 UDPを使用しているとすると、ファイアウォールの構成は次のようになります。
# firewall-cmd --add-port=514/udp --permanent
# firewall-cmd --reload
次のコマンドを使用して、構成を確認します。
# firewall-cmd --list-all
ログローテーション
logrotate
を設定すると便利な場合があります 、 同じように。 logrotate
アーカイブ、圧縮、削除、およびその他の必要なログファイル管理タスクを実装することにより、管理者が多数のログファイルを管理するのに役立ちます。このツールは、EnableSysadminの記事「LinuxでのLogrotateのセットアップ」でEdemAfenyoによって効果的にカバーされているため、ここでカバーする理由はありません。
ログホストサーバーのIPアドレスを文書化する
ifconfig
を使用します またはip addr
ログホストサーバーのIPアドレスを文書化します。このアドレスは、クライアント構成ファイルで使用します。
ボーナスノート :/etc/rsyslog.conf
などの構成ファイルでIPアドレスを使用することをお勧めします ホスト名の代わりに。そうすることで、構成が簡素化され、コンピューターの接続プロセスとシステム管理者のトラブルシューティングプロセスから名前解決が削除されます。後の複雑さを完全に排除します。
[次のこともお勧めします:Linuxでのlogrotateの設定]
ログクライアントを構成する
このセクションは、ログファイルを前に構成したログホストサーバーに転送するように基本的なLinuxサーバーを構成することから始めます。この構成はかなり短いです。元の/etc/rsyslog.conf
をバックアップすることを忘れないでください ファイル。
/etc/rsyslog.conf
を開きます お気に入りのエディターを使用した構成ファイル(私はVimが好きですが、うまくいくものは何でも構いません)。 ルールに移動します セクションを作成し、他のエントリの前に新しい行を作成します。明確にするために、施設の前にこの行を追加しています 。重大度 エントリ。そうすることで、すべての一致を宛先サーバーに転送できます。
次の情報を追加します。ここで、IPはログホストサーバーのIPアドレスです。
*.* @IP
注 :TCPを使用している場合、構文は*。*@@ IPです。
構成ファイルへの変更を保存してから、rsyslog
を再起動します サービス:
# systemctl restart rsyslog
構成をテストする
logger
コマンドは、ログファイルエントリを手動で作成するために使用されます。次のコマンドを実行して、エントリを生成します。
# logger Test
tail
を使用して、ログファイルエントリを確認します /var/log/messages
の最新のエントリを表示するコマンド ローカルサーバーにログオンします:
# tail /var/log/messages
テストメッセージが表示されます。
次に、ログホストサーバーに切り替えて、/var/log
の内容を表示します。 :
# ls /var/log
構成したリモートサーバーにちなんで名付けられたディレクトリが表示されます。 ls
の場合 そのディレクトリの内容には、サーバーから転送されたログが表示されます。 tail
を使用できます このサーバーのサブディレクトリにあるログの内容を表示するコマンド。ここでもテストメッセージが繰り返されているはずです。
残りのサーバーを構成する
この時点で、ログをログホストに転送するように残りのLinuxサーバーを構成できます。 /etc/rsyslog.conf
の新しいバージョンを配布できます rsync、SSHを使用してファイルを作成するか、Ansibleで構成を設定します。
転送固有のログ
上記の設定例では、すべてのログがログホストシステムに転送されます(したがって、*。* 構文)。個々の施設のエントリのみを転送するか、さまざまな施設のエントリをさまざまなログホストサーバーに転送するかを選択できます。
cronを送信したいとします。 hostlogserver1にログを記録します (システム管理者がエントリを確認できる場所)および FTP hostlogserver2にログを記録します (netadminsがエントリを確認できる場所)。構成は次のようになります:
cron.* @10.1.1.15
ftp.* @10.1.1.20
hostlogserver1 IPアドレスが10.1.1.15 およびhostlogserver2 IPアドレスが10.1.1.20 。
同じエントリを2つの異なるサーバーに転送することもできます:
*.* @10.1.1.15
*.* @10.1.1.20
その他のプラットフォーム
はじめに、このログファイルメカニズムは実際にはUnixシステムであり、Linux固有の機能ではないことを指摘したことを思い出してください。つまり、ログを維持する事実上すべてのUnixベースのデバイスが参加できます。
ログを転送するようにルーターを構成する
私は最近、VyOSで構成されたルーターを使用するクライアントのラボ環境で作業していました。 VyOSは、Linuxベースのルーター、VPN、ファイアウォール、およびNATディストリビューションです。上記のプロセスを使用しました(/etc/rsyslog.conf
を編集します 構成ファイル)ログを中央サーバーに転送するようにルーターを設定します。ネットワーク管理者は、rsyslog
を使用して、ルーター、VPN、およびその他のログを簡単にアーカイブできます。 。
ラボ環境で使用された別のOSはpfSenseでした。 pfSenseはFreeBSD派生オペレーティングシステムであり、rsyslog
を使用してログを中央の場所に転送することもできます 。繰り返しになりますが、今回はWebベースのGUIを介したものでしたが、これは単純な構成でした。
[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]
まとめ
rsyslog
を使用してシステム管理者が利用できるオプションを検討してください ログ転送。ネットワークチームは、すべての内部ルーターと境界ルーター、VPNアプライアンス、およびファイアウォールのログを一元化できます。システム管理者は、責任範囲または地域に基づいてログを整理できます。一元化は、セキュリティ、サービスデスク、およびサーバー管理チームに影響を与える可能性があります。 rsyslog
は基本的ですが不可欠なLinuxサービスであり、ログを一元化する機能を利用することで、ログを最大限に活用できます。