たとえば、私はApache Webサーバーログ以外のオペレーティングシステムでは、どのような(プロフェッショナル)ログにも公開されていません。したがって、一般的なログインは基本の一部を理解していますが、かなり新しいトピックです。現在では、このトピックを完全に理解するための投資がかなりかなり見えますが、最も抽象的な概念よりも多くを知る価値があるかすらまだわかりません。
このような状況にある人にロギングについて学ぶために、どのリソース(チュートリアル、マニュアルページ、書籍)をお勧めしますか?
一般的なLinuxユーザーは、毎日/毎月どのログを読むべきですか?人が読みやすいように書かれているという仮定は正しいですか?それとも、通常は他のツールで評価して使用しますか?
一般 *nix ユーザーとソフトウェア開発者は、これらのログについて何を知る必要がありますか?
イベント負荷の高いプロのWebサーバーを管理したくない場合は、ログの回転について何を知る必要がありますか?
答え1
[この記事は、システムシステムにJournaldが広く採用される数年前に書かれており、これについては説明しません。現在(2018年末)両方後述のJournaldおよび(r)syslogは、Debianなどのディストリビューションで使用されます。他のディストリビューションでは、rsyslogを使用するためにrsyslogをインストールする必要があるかもしれませんが、ジャーナルドとの統合は非常に簡単です。 ]
Ubuntuのロギングについては具体的に議論しません。これは通常、Linux用に標準化されているためです。 (そして私が言う内容のほとんどまたはすべては通常*nixのすべてのバージョンに適用されますが、私の言葉をそのまま受け入れないでください。)。また、この質問に答える以外に、「ログを読む方法」についてはあまり話しません。
人が読みやすいように書かれているという仮定は正しいですか?それとも、通常は他のツールで評価して使用しますか?
アプリケーションによって異なりますが、通常、少なくともシステムログ(以下を参照)にあるものは、人間が読むことができるはずです。 「私にとって意味」は別の質問です。ハハ。ただし、特定の目的のために標準ツール(grep、awkなど)を使用してより簡単に解析できる方法で構造化されています。
とにかく、まず独自にロギングをするアプリケーションとシステムロガーを使うアプリケーションには違いがある。 Apacheは基本的に前者を実行しますが、後者に対して設定することもできます(ほとんどの人が望ましくないと思います)。独自のロギングを実行するアプリケーションは、ファイル内の任意の場所を使用して何らかの方法でログインできるため、これについて特に言及することはありません。システムロガーはしばしばロガーと呼ばれますsyslog
。
システムログ
「Syslog」は実際に標準これは次のように達成されます。悪魔一般的にシステムログ(dはデーモンを意味します!)現在、Linux(Ubuntuを含む)で使用されている主なsyslogデーモンはrsyslogd
多くのタスクを実行できるRsyslogdですが、ほとんどのディストリビューションでデフォルトで構成されており、コンテンツを/var/log
。/usr/share/doc/rsyslog-doc-[version]
もう1つですが、/usr/share/doc/rsyslog-[version]
これはソースパッケージからの通知です(たとえば、NEWS
およびChangeLog
)。存在する場合はHTMLですが、Stack Exchangeはローカルファイルリンクの挿入を許可しません。
file://usr/share/doc/rsyslog-doc/index.html
したがって、コピー貼り付けを試すことができます。存在しない場合は、インストールされていない別のパッケージの一部である可能性があります。パッケージングシステムに問い合わせます(例apt-cache search rsyslog | grep doc
:)。
設定は/etc/rsyslog.conf
マニュアルページを持っているので、man rsyslog.conf
マニュアルページは良い参照を提供しますが、紹介として理解するのは簡単ではないかもしれません。幸いなことに、ストックrsyslog.confの基本原則は、多くの紹介とチュートリアルを持つ既存のsyslog.confと同じです。 これたとえば、ローカルrsyslog.confを見たときにここで取得したいものは次のとおりです。施設そして優先順位(「優先順位」とも呼ばれるログレベル)これは上記のsyslog標準の一部であるためです。 rsyslogは実際には標準を実装するカーネルを介してコンテンツをインポートするので、標準は重要です。
$
rsyslog.confのディレクティブに関しては、これらのディレクティブはrsyslogにのみ適用され、オプションのドキュメントパッケージをインストールした場合はそのディレクティブを見つけることができますrsyslog_conf_global.html
。
楽しい時間を過ごしてください...アプリケーションがシステムロガーをどのように使用しているのか疑問に思っている場合は、およびをman logger
ご覧くださいman 3 syslog
。
ログの回転
ログを回転させる標準的な方法は、logrotate
(そして1つもあります)というman logrotate
ツールを使用することです。 logrotateを使用する標準的な方法は次のとおりです。クローンデーモン、これを行う必要はありませんが(たとえば、毎日デスクトップを終了する傾向がある場合は、起動時に一度だけ実行することをお勧めします)システムログが起動する前しかし、明らかにファイルシステムがマウントされた後(rw)です。
logrotateの良い紹介があります。ここ。気づくlogrotateはsyslogだけのためではありません、任意のファイルに使用できます。デフォルトの構成ファイル/etc/logrotate.conf
はありますが、構成に「include」ディレクティブがあるため、通常、ほとんどのコンテンツは/etc/logrotate.d
ディレクトリ内の個々のファイルに入ります(ここで、dはデーモンではなくディレクトリを表し、logrotateはデーモンではありません)。
logrotate を使用する際に考慮すべき重要な点は、ログファイルが「回転」したときにアプリケーションがどのように反応するかです。つまり、動く- アプリケーションの実行中。 WRT(r)syslogd、これこのログへの書き込み停止(これを行うにはセキュリティ上の理由があると思います。)この問題を処理する一般的な方法は、syslogに再起動してすべてのファイルを再度開くように指示することです。これが、postrotate
logrotate conf ファイルに SIGHUP を syslog デーモンに送信する指示が表示される理由です。