Rsyslog ログ処理用のオープンソースユーティリティです。中央リポジトリ内のさまざまなタイプのシステムからのデータのロギングを許可します。 Rsyslogは、より多くの拡張機能、機能、および利点を備えたSyslogプロトコルです。
rsyslogがこれほど強力な理由は何ですか?制限された処理が適用される場合、Rsyslogは1秒あたり100万を超えるメッセージをローカルの宛先に配信できます。
このチュートリアルでは、 rsyslogをインストールして構成する方法を学習します。 Ubuntu 20.04 。
Rsyslogの機能
Rsyslogは2004年に登場し、syslogプロトコルを新しい機能で拡張します。
- RELPプロトコルのサポート
- バッファリングされた操作のサポート
- TCP / UDP接続をリッスンします(制限ポート、IPを使用)
- 多くのモジュールのロードのサポート(たとえば、RELPプロトコルをサポートするモジュール)
- 特別に構成されたルールを含むメッセージの破棄のサポート
Rsyslogでは、構成ファイルはSyslogと同じままです。つまり、syslog.confファイルをrsyslog.confに直接コピーでき、それが機能するということです。
ログとsyslogとは何ですか?
構成プロセス自体に進む前に、まずログがどのように使用されるかを見てみましょう。ログ情報は、システムで正確に何が起こっているのか、または内部で何が起こっているのかを正確に確認するのに役立ちます。
例を挙げましょう。突然PCがフリーズしたり、クラッシュしたり、システムがダウンタイムになったりした場合や、エラーメッセージが表示されたときに通常の方法では表示できないはるかに有用な情報が表示されます。
ログを適切に使用する方法を知っている場合は、システム自体に関する診断情報に多くの機能と利点を提供できます。
デフォルトでは、Linuxはsyslogデーモンを使用して、システムの実行状況に関するログを記録し、これらのログを / var / logの中央リポジトリに配置します。 それらを調べて調査できる場所です。
簡単に言うと、カーネルイベントからユーザーアクションまですべてがLinuxによってログに記録されるため、PCまたはサーバーで実行されたほとんどすべてのアクションを確認できます。
Linuxファイルシステムには、 / var / logと呼ばれるログを保存するための特別なディレクトリが1つあります。 。このディレクトリには、サービスやシステムで実行されているさまざまなアプリケーションなど、OS自体からのすべてのログが含まれています。
新しいLinuxubuntu20.04でログのディレクトリと構造がどのように見えるか見てみましょう。
さまざまな種類のログが保存されているディレクトリは次のとおりです。
/ var / log / syslog -すべての起動メッセージ、アプリケーション起動メッセージなどを保存します。実際には、すべてのグローバルシステムログを保存します。
/ var / log / cron -Cronジョブは基本的に、システムで作成された一種のスケジュールされ自動化されたタスクであり、定期的かつ繰り返し実行されます。このログディレクトリに何が保存されるかを確認できます。
/var/log/kern.log-カーネルログを保存します。ログが何であれ。イベントログ、エラー、または警告ログ。
/var/log/auth.log -認証ログ
/var/log.boot.log -システムブートログ
/var/log/mysql.d -Mysqlログ
/ var / log / httpd -Apacheログディレクトリ
/ var / log / maillog -メールサーバーログ
Ubuntu20.04でのRsyslog集中ログサーバーのセットアップ
簡単な概要、ログとは何か、Syslog、およびrsyslogの場所について説明した後、構成プロセス自体に移りましょう。
前提条件
- Ubuntu20.04を実行している2台のサーバー
- 静的IPアドレス:例192.168.0.101はRsyslogサーバーマシンで構成する必要があり、192.168.0.102はRsyslogクライアントマシンで構成する必要があります
Ubuntu20.04システムにはrsyslogがデフォルトでインストールされています 標準のシステムパッケージが付属しています。
実行されているかどうかを確認できます:
$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-22 21:16:34 UTC; 12h ago
TriggeredBy: ● syslog.socket
Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
Main PID: 566 (rsyslogd)
Tasks: 4 (limit: 2281)
Memory: 2.7M
CGroup: /system.slice/rsyslog.service
└─566 /usr/sbin/rsyslogd -n -iNONE
次のコマンドを実行して、現在インストールされているRsyslogのバージョンを確認します。
$ rsyslogd -v
出力:
rsyslogd 8.2001.0 (aka 2020.01) compiled with: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes systemd support: Yes Config file: /etc/rsyslog.conf PID file: /run/rsyslogd.pid Number of Bits in RainerScript integers: 64
インストールまたは実行されていない場合は、次のコマンドを使用してrsyslogをインストールします。
$ sudo apt-get update
$ sudo apt-get install rsyslog
次に、 rsyslog.confにアクセスします。 ファイル、コメントを外し、サーバーモードでrsyslogサービスを実行するようにいくつかの行を変更します:
$ sudo nano /etc/rsyslog.conf
udpおよびtcpポートバインディングを有効にする次の4行のコメントを解除します。
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
追加する必要がある次のステップは、新しいテンプレートを作成することです。リモートメッセージを受信するための新しいテンプレートを作成する必要があります。テンプレートは、着信syslogメッセージを保存する方法についてrsyslogサーバーに指示を与えます。
注: グローバルディレクティブの直前にテンプレートを追加します セクション:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
上記の行は、受信したログが処理され、ディレクトリ/ var /log/内に保存されることを示しています。 /etc/rsyslog.confファイルでrsyslogログの場所を定義できます。
ファイル名には%HOSTNAME%が含まれ、%PROGRAMNAME%変数は、ログメッセージを生成したクライアントマシンとクライアントプログラム名を表します。
これを保存して、rsyslogサービスを再起動してください:
$ sudo systemctl restart rsyslog
rsyslogサービスが構成済みのポートでリッスンしていることを確認します:
$ ss -tunelp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* ino:33591 sk:1 <->
udp UNCONN 0 0 [::]:514 [::]:* ino:33592 sk:4 v6only:1 <->
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* ino:33595 sk:7 <->
tcp LISTEN 0 25 [::]:514 [::]:* ino:33596 sk:9 v6only:1 <->
ufwファイアウォールサービスを利用している場合は、rsyslogファイアウォールポートルールを許可する必要があります:
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
構成を確認する 、次のコマンドを実行します:
sudo rsyslogd -N1 -f /etc/rsyslog.conf
クライアントでRsyslogを構成する
rsyslogサーバーのこの構成が完了したら、次のステップは、ログをリモートに送信するようにrsyslogクライアントマシンを構成することです。 rsyslogサーバー。
リモートサーバー上のrsyslog.confファイルを使用すると、同じようにクライアント側でお気に入りのエディターを使用してこのファイルを開き、いくつかの変更を編集します。
sudo nano /etc/rsyslog.conf
また、FQDNの保持を許可します。または、ホスト名(system1)だけでなく、完全修飾ドメイン名(system1.example.comなどのFQDN)を使用してrsyslogを送信するには、ディレクティブを使用します。
$PreserveFQDN on
最後に、構成済みのリモートrsyslogサーバーを追加します。
@192.168.0.101:514
または、UDPを介してログを送信できるようにすることもできます。 TCPの場合、1つではなく@@を使用します
*.* @@192.168.0.101:514
最後に、rsyslogサーバーがダウンした場合に備えて、次の変数を追加します。
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
次に、rsyslogサービスを再起動します。
sudo systemctl restart rsyslog
ログを確認する
クライアントマシンでの構成が完了したら、すべてが正常に行われたことを確認します。
Rsyslogサーバーに移動して、クライアントマシンからのログを確認します。
$ ls /var/log/
次のようなものが見つかります:
私の場合、obradという名前のディレクトリは、現在使用しているクライアントマシンの名前です。このディレクトリに入ると、次のように表示されます:
Rsyslogによって生成されたすべてのログファイルが表示されます。
次のコマンドを使用して、これらのログのいずれかを確認できます。たとえば、 systemd.logを調べてみましょう。 。
$ tail -f /var/log/obrad/systemd.log
そして、次のようなものが表示されます:
2021-03-25T11:31:59+00:00 obrad systemd[1206]: Started VTE child process 42166 launched by gnome-terminal-server process 3186.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Created slice dbus\x2d:1.2\x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:[email protected].
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:[email protected]: Succeeded.
ご覧のとおり、クライアントマシンでターミナルとgeditのテキスト編集を起動すると、Rsyslogが生成され、これが出力に表示されます。
結論
このチュートリアルでは、Ubuntu20.04でクライアントサーバーモデルを使用してrsyslogの基本的なパラメーターを構成する方法を学習しました。 syslog-ng、FluentD、Logstash、GreyLog2、およびLogagent、Filebeatは、Rsyslogの他の代替手段です。