Ubuntu20.04でRsyslogを使用して中央ログサーバーをセットアップする方法

Rsyslog ログ処理用のオープンソースユーティリティです。 中央リポジトリ内のさまざまなタイプのシステムからのデータのロギングを許可します。 Rsyslogは、より多くの拡張機能、機能、および利点を備えたSyslogプロトコルです。

rsyslogがこれほど強力な理由は何ですか? 制限された処理が適用される場合、Rsyslogは1秒あたり100万を超えるメッセージをローカルの宛先に配信できます。

このチュートリアルでは、インストールと構成の方法を学びます rsyslog の上 Ubuntu 20.04

Rsyslogの機能

Rsyslog 2004年に登場し、syslogプロトコルを新しい機能で拡張します。

  • RELPプロトコルのサポート
  • バッファリングされた操作のサポート
  • TCP / UDP接続をリッスンします(制限ポート、IPを使用)
  • 多数のモジュールのロードのサポート( example RELPプロトコルをサポートするモジュール)
  • 特別に構成されたルールを含むメッセージの破棄のサポート

Rsyslogでは、構成ファイルはSyslogと同じままです。 つまり、syslog.confファイルをrsyslog.confに直接コピーでき、それが機能するということです。

ログとsyslogとは何ですか?

構成プロセス自体に進む前に、まずログがどのように使用されるかを見てみましょう。 ログ情報は、システムで正確に何が起こっているのか、または内部で何が起こっているのかを正確に確認するのに役立ちます。

私はあなたに与えさせてください example:突然PCがフリーズしたり、クラッシュしたり、システムのダウンタイムが発生したり、エラーメッセージが表示されたときに通常の方法では表示できないはるかに有用な情報が表示されたりした場合。

ログを適切に使用する方法を知っている場合は、システム自体に関する診断情報に多くの機能と利点を提供できます。

デフォルトでは、Linuxはsyslogデーモンを使用して、システムの実行状況に関するログを記録し、これらのログを次の中央リポジトリに配置します。 / var / log それらを調べて調査できる場所です。
簡単に言うと、カーネルイベントからユーザーアクションまですべてがLinuxによってログに記録されるため、PCまたはサーバーで実行されたほとんどすべてのアクションを確認できます。

Linuxファイルシステムには、ログを保存するための特別なディレクトリが1つあります。 / var / log。 このディレクトリには、サービスやシステムで実行されているさまざまなアプリケーションなど、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アドレス: example 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(別名2020.01)でコンパイル:PLATFORM:x86_64-pc-linux-gnu PLATFORM(lsb_release -d):FEATURE_REGEXP:はいGSSAPI Kerberos 5サポート:はいFEATURE_DEBUG(デバッグビルド、低速コード):いいえ32ビットアトミック操作がサポートされています:はい64ビットアトミック操作がサポートされています:はいメモリアロケーター:システムのデフォルトRuntime Instrumentation(低速コード):いいえuuidサポート:はいsystemdサポート:はい構成ファイル:/etc/rsyslog.conf PIDファイル:/run/rsyslogd.pidビット数RainerScript整数: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の構成ファイル Rsyslogの構成ファイル

Save これと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の保持を許可します。または、rsyslogに完全修飾ドメイン名(system1などのFQDN)を使用して送信させることもできます。example.com)単にホスト名(system1)の代わりに、ディレクティブを使用します。

$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/

あなたはこのようなものを見つけるでしょう:

var / logファイルとディレクトリのリストリスト/変数/ログ

私の場合、obradという名前のディレクトリは、現在使用しているクライアントマシンの名前です。 このディレクトリに入ると、次のようなものが表示されます。

var / log / hostnameファイルのリストvar / log / hostnameを一覧表示します

Rsyslogによって生成されたすべてのログファイルが表示されます。

次のコマンドを使用して、これらのログのいずれかを確認できます。 example 検査する 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 dbusx2d:1.2x2dorg.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の他の代替手段です。