web-dev-qa-db-ja.com

Centos 7でロギングが機能しない

短い話-どういうわけか私はCentos 7サーバーでrsyslogdサービスを台無しにした。/var/log/messagesに表示されるのは次のとおりです。

12月14日22:13:27 {myhostname} rsyslogd:[Origin software = "rsyslogd" swVersion = "7.4.7" x-pid = "1286" x-info = "http://www.rsyslog.com"]終了信号15で。

12月14日22:13:27 {myhostname} rsyslogd:[Origin software = "rsyslogd" swVersion = "7.4.7" x-pid = "1477" x-info = "http://www.rsyslog.com"]開始

他のログ(secure、cronなど)も空です。サービスとサーバーを再起動しても解決しませんでした。ロガーで送信されたメッセージは、/ var/log/messagesファイルに保存されません。 rsyslogdサービスが実行されています。設定ファイルは正しいようです。すべてのイベントをjournalctlログで確認できます。私はすでに私の問題に似たいくつかの投稿を検索しましたが、どれも解決策がありませんでした。

最速の解決策はサーバーを再インストールすることかもしれませんが、この問題の原因と将来発生した場合の解決方法を知りたいと思います。サーバーはシンプルなLEMPスタックを実行しており、システムの最後の大きな変更はホスト名の変更でした。

3
joshas

これは永続的なものではなく、解決策でした:

rm -f /var/lib/rsyslog/imjournal.state

サービスrsyslogの再起動

ソース: https://bugzilla.redhat.com/show_bug.cgi?id=1088021

3
joshas

これは私の解決策でした-それほど素敵ではありませんでした

rm -rf /var/log/journal/*
reboot

約6か月のアップタイム後の再起動だけだったので、なぜすべてが始まったのかはまだわかりません。

1
user376232

debug rsyslog を試して、誤動作の原因となっている問題を見つけることができます。

実行中のインスタンスからデバッグ情報を取得する

実行中のインスタンスからデバッグ情報を取得することは可能ですが、これにはいくつかの設定が必要です。インスタンスはバックグラウンドで実行されると想定しているため、stdoutへのデバッグ出力は望ましくありません。そのため、すべてのデバッグ情報をログファイルに記録する必要があります。

この設定を作成するには、ランタイム中にアクセスできるファイルをRSYSLOG_DEBUGLOG環境変数にポイントする必要があります(ローカルファイルシステムのファイルを強くお勧めします!)RSYSLOG_DEBUGを少なくともDebugOnDeman NoStdOutに設定し、これらの環境変数がrsyslogdをインタラクティブに実行しない場合の正しい(distro-specifc)起動スクリプト

これらの設定により、SIGUSR1に反応する機能が有効になります。信号は受信時にデバッグステータスを切り替えます。したがって、1つ送信すると、デバッグログがオンになり、もう一度送信すると、デバッグログがオフになります。 3回目は再びオンになります...など。

一般的なシステムでは、次のようにrsyslogdにシグナルを送ることができます。

kill -USR1 `cat /var/run/rsyslogd.pid`

重要:「cat」コマンドの周りにはbackticksがあります。通常の見積もりを使用すると機能しません。デバッグログには、デバッグログがオンまたはオフになっているかどうかが表示されます。他にステータスを示すものはありません。

ステップバイステップのハウツー: オンデマンドデバッグの使用方法

1
Diamond

私のrsyslogd.serviceが表示を開始しません

Failed to start System Logging Service.
Unit rsyslog.service entered failed state.
rsyslog.service failed.
rsyslog.service holdoff time over, scheduling restart.
start request repeated too quickly for rsyslog.service
Failed to start System Logging Service.
Unit rsyslog.service entered failed state.
rsyslog.service failed.

サービスが実行されていないことを確認するためにサービスを強制終了しました

killall rsyslogd

その後、pidファイルを削除しました

rm /var/run/syslogd.pid

そして再びサービスを開始しました

systemctl start rsyslog.service

今のステータスは大丈夫です

# systemctl status rsyslog.service
● rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-02-06 11:32:33 CET; 2s ago

/ var/log/* logファイルが再び増加しています。

1
andrej

私の状況では、rsyslogとsyslog-ngの両方がインストールされていて、システムのロギングを制御するために競合していたためです。 syslog-ngのアンインストール(yum remove syslog-ng)と再起動により問題が修正されました。

0
James