Ubuntu 16.04でのrsyslogとjournaldの関係


18

私は、Ubuntu 16.04サーバーであるバニラを実行しています。デフォルトでは、ロギングがどのように設定されているのかを頭に入れようとしています。私は両方のことを見ることができるjournaldとがrsyslogインストールされ、実行されているが、それは、ログメッセージが処理されているか私には全く明らかではありません。

ほとんどのメッセージは、両方に表示するように見える/var/log/syslogと経由してjournalctl、私はどちらかで両者の間の転送のための明示的な構成を見ることができない/etc/systemd/journald.conf(基本的にすべてのデフォルトではコメントアウトされた)、/etc/rsyslog.confまたは/etc/rsyslog.d/50-default.conf。公式のドキュメント、またはこれら2つがUbuntuでどのように設定されているかを説明するブログ投稿を探しましたが、何も見つけることができませんでした。

さらに混乱を増すためlogger -p local1.info Testに、ホストで実行しましたが、何も書き込まれていないことがわかりましたが/var/log/syslog、メッセージはの下に表示されましたjournalctl

私の質問は:

  1. journaldとrsyslogは、Ubuntu 16.04(デフォルト)でどのように連携しますか?
  2. どうやらから送信されたメッセージloggerは、syslogではなくジャーナルに表示されるのでしょうか?

更新:logger期待どおりに動作しないことが私の側の間違いであることが判明したため、メインの質問には関係ありません。

回答:


12

デフォルトでrsyslogは、「imuxsock」モジュールを使用して、モジュールは以下を提供します。

ローカルUnixソケットを介してsyslogメッセージを受け入れる機能。最も重要なことは、これがsyslog(3)呼び出しがsyslogメッセージをrsyslogd [1]に配信するメカニズムです。

rsyslog"imjournal" [2]という名前のモジュールを使用して、systemd-journalから構造化ログメッセージをインポートすることが可能です。

次のようにロードできます。

module(load="imjournal") 

に:

/etc/rsyslog.conf

一方、「systemd-journald」はすべてのデータ自体をキャプチャします。

man systemd-journald

systemd-journaldは、ロギングデータを収集して保存するシステムサービスです。さまざまなソースから受信したログ情報に基づいて、構造化されたインデックス付きジャーナルを作成および維持します。

   ·   Kernel log messages, via kmsg
   ·   Simple system log messages, via the libc syslog(3) call
   ·   Structured system log messages via the native Journal API, 
       see sd_journal_print(4)
   ·   Standard output and standard error of system services
   ·   Audit records, via the audit subsystem

を使用rsyslogdして、システムログにアクセスしている間に無効にすることができますjournalctl

$ sudo systemctl mask rsyslogd
$ sudo systemctl stop syslog.socket
$ sudo systemctl stop rsyslog.service
$ systemctl is-active rsyslog.service 
inactive
$ logger -p mail.info Helllooo
$ journalctl

たとえば、centosは「imuxsock」モジュールを使用してすべての「systemd-journald」データをキャプチャしますがrsyslog、opensuseには「syslog」がまったくありません。


メッセージがに到達しなかった理由を調べるには/var/log/syslog、次のファイルを確認する必要があります。

less /etc/rsyslog.d/50-default.conf

を探し*.info、それらが保存される場所を確認しますmessages。それはのような他のファイルかもしれません。

私にとっては、journalctlとの両方に現れsyslogます。


logger -p .info hello有効ではない。施設名を指定していません。
luv.preet

回答を更新しました
....-Ravexina

私の編集で述べたように、機能してloggerいなかったことは私のせいでした。2つの場所に表示されるログに関しては、あなたのメモimuxsockが重要なようです。rsyslogとjournaldの両方がローカルsyslogメッセージをリッスンしているため、これらのエントリが2つの別々のログに記録される理由です。
-motns

私はubuntuで上記に従っていましたが、ロガーからログを取得していません、hmm:root @ T:〜#logger -p mail.info Helllooo root @ T:〜#journalctlジャーナルファイルが見つかりませんでした。-エントリーなし-アイデアはありますか?
ハッカーロン

素晴らしい答え。rsyslogが無効になっている場合、journaldがsyslogソケットを開く方法を知っている(または、開いていない場合はsyslogメッセージを取得する)方法についてのメモはありませんか?または、journaldの手動設定が必要ですか?
マタイスクーイマン

4

Systemdは、システムの起動時にサービスを開始するために使用される初期化システムです。Journaldは、systemdによって開始されたサービスのログを作成します。journaldをsystemdと統合することにより、最も早いブートプロセスメッセージでもjournaldで利用できます。

Rsyslogは、ログ処理用に特別に作成されたデーモンであり、journaldとは関係ありません。ログをさまざまな方法で取得し、さまざまな方法で出力できます。journaldからログメッセージを取得することもデフォルトでは有効になっていません。そのためには、/ etc / rsyslog.confファイルに書き込む必要があります。

$ModLoad imjournal # im -> input module
OR
load(type="imjournal")

現在、journaldからのログも受け入れます。ただし、/ etc / rsyslog.confファイルは変更しないでください。

/etc/rsyslog.confファイルの最後に、次の行があります。

$IncludeConfig /etc/rsyslog.d/*.conf

これは、.sysが/etc/rsyslog.d/フォルダーにあるすべてのファイルをrsyslogのロード中に含める必要があることを意味します。したがって、すべてのカスタム構成はこれらのファイルに入れてください

ファイル/etc/rsyslog.d/journald.confを作成し、その中に以下のスニペットを貼り付けることをお勧めします。

以下はimjournalのrsyslog公式ページの抜粋です

module(load="imjournal" PersistStateInterval="100"
   StateFile="/path/to/file") #load imjournal module
module(load="mmjsonparse") #load mmjsonparse module for structured logs

template(name="CEETemplate" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag% @cee: %$!all-json%\n" ) #template for messages

action(type="mmjsonparse")
action(type="omfile" file="/var/log/ceelog" template="CEETemplate")

1行目-journaldからのログを受け入れるためのimjournalモジュールをロードします

2-ログの解析に使用されるmmjsonparseモジュールがロードされます

3-テンプレートで記述された形式に構造化されています

4-mmjsonparseモジュールを使用してこれらのログを解析します。

5-omfile(出力モジュールファイル-ファイルへの出力)モジュールを使用して、指定されたテンプレートで提供された構造に従って、これらのログをファイル、つまり/ var / log / ceelogに送信します。

必要に応じて構成を変更します。


説明ありがとうございます。しかし、@ Ravexinaの答えは、デフォルトで(追加の構成なしで)rsyslogとjournaldで何が起こっているかを理解するのに役立つと思います。
-motns
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.