Logrotate は 2 時間ごとに Catalina.out ログローテーションを実装します

Logrotate は 2 時間ごとに Catalina.out ログローテーションを実装します

1. Logrotateツールの紹介

Logrotate はログファイル管理ツールです。Linux にデフォルトで付属しているログカットツールです。古いファイルのローテーション、圧縮、削除、新しいログ ファイルの作成に使用されます。ログ ファイルの管理を容易にするために、ログ ファイルをサイズ、日数などに応じてダンプすることができます。これは通常、cron スケジュール タスクを通じて実行され、ログの切り取りを時間別、日別などに分割できます。

2. Logrotateの動作メカニズム

システムは logrotate を定期的に(通常は 1 日に 1 回)実行します。これがシステムが日常的に実装される方法です。 crontab は /etc/cron.daily ディレクトリ内のスクリプトを毎日定期的に実行しますが、このディレクトリには logrotate というファイルがあります。

[root@test01 ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

終了値=$?

[ $EXITVALUE != 0 ]の場合

  /usr/bin/logger -t logrotate "ALERT は [$EXITVALUE] で異常終了しました"
フィ
終了 0

実際に実行すると、Logrotateは設定ファイル/etc/logrotate.confを呼び出します。

3. Logrotateの構成

/usr/sbin/logrotate #プログラムの場所;

/etc/cron.daily/logrotate #デフォルトでは、Cron は 1 日に 1 回 logrotate を実行します。

/etc/logrotate.conf #グローバル設定ファイル;

/etc/logrotate.d/ # グローバル設定を上書きするには、独自の設定ファイル保存ディレクトリを使用します。

注意: logrotate.d はディレクトリです。このディレクトリ内のすべてのファイルは、実行時に自動的に /etc/logrotate.conf に読み込まれます。また、/etc/logrotate.d/ 内のファイルに詳細が設定されていない場合は、/etc/logrotate.conf ファイルの設定がデフォルト値として使用されます。

4. Logrotateコマンドの形式

logrotate [オプション...] <設定ファイル>
-d、--debug: デバッグ モード、構成ファイルのエラーをテストします。
-f, --force : ダンプ ファイルを強制します。
-m, --mail=command: ログを圧縮した後、指定されたメールボックスに送信します。
-s, --state=statefile : 指定された状態ファイルを使用します。
-v, --verbose : ダンププロセスを表示します。

たとえば、logrotate がログ ファイルのローテーションを実行するのを待たずに、ログ ファイルのローテーションを強制的に実行したいとします。

[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat #テスト用に使用します。注: CentOS7 コマンドは /usr/sbin/ にあります。

5. 共通設定パラメータの説明

Logrotate機能の実装で最も重要なことは、その構成パラメータです。

よく使用される構成パラメータは次のとおりです。

圧縮する

ローテーション後の古いログを参照する圧縮を有効にします。ここでは、デフォルトで gzip 圧縮が使用されます。

毎日

毎日のローテーション

日付テキスト

現在の日付を命名形式として使用する

日付形式 .%s

dateext とともに使用され、次の行にすぐに表示され、ファイルが切り取られた後のファイル名を定義します。dateext とともに使用する必要があります。%Y %m %d %s の 4 つのパラメータのみをサポートします。

空の場合

ログファイルが空であってもローテーションする

郵便

ローテーションしたファイルを指定された電子メールアドレスに送信する

コピー切り捨て

まだ開いているログ ファイルに使用されます。現在のログをバックアップして切り捨てます。この方法は、最初にコピーしてからクリアする方法です。コピーとクリアの間には時間差があり、一部のログ データが失われる可能性があります。

毎月

月に1回ローテーション

圧縮しない

logrotate.conf で圧縮が有効になっている場合、圧縮を無効にするパラメータは次のとおりです。

メールなし

いかなるアドレスにもメールを送信しないでください

空でない

ログが空の場合は回転しません(つまり、空のログはカットされません)。

olddir + ディレクトリ

ローテーションされたログ ファイルは指定されたディレクトリに配置され、現在のログ ファイルと同じファイル システムに存在する必要があります。

+ 回回転

前回のデータをローテーションで保持する最大回数。この回数を超えるデータは削除されるか、メールで送信されます。0 に設定すると、データは保存されません。

サイズ サイズ

ログが指定されたサイズに達すると、回転が始まります

毎週

現在の曜日が前回のローテーションの曜日よりも小さい場合、または 1 週間以上経過している場合は、ローテーションが行われます。ローテーションは通常、各週の最初の日に実行されます。logrotate が毎日実行されていない場合は、最初の機会にローテーションが行われます。

年間

現在の年が前回のローテーション年と異なる場合、ログはローテーションされます。

ミシンゴク

ログが失われた場合、エラーは報告されず、次のログがスクロールされます。

6. Logrotateをインストールして設定する

#yum インストール

[root@test01 ~]# yum -y logrotateをインストール

#マシンにはすでにTomcatがインストールされています。Tomcatログをカットするための構成ファイルを設定します。

[root@test01 ~]# vim /etc/logrotate.d/tomcat

注: logrotate の設定ファイルは /etc/logrotate.conf であり、通常は変更する必要はありません。

ログ ファイルのローテーション設定は、/etc/logrotate.d/ ディレクトリに配置されている個別の構成ファイルにあります。

[root@test01 ~]# mkdir -p /var/log/tomcat/oldlog

[root@test01 ~]# cat /etc/logrotate.d/tomcat

/usr/local/tomcat8/logs/catalina.out { # 切り取るログのパス。複数ある場合はスペースで区切ってください notifempty # ログが空の場合はローテーションされません (つまり、空のログは切り取られません)

  rotate 5000 #ローテーション中に最大 5000 回まで以前のデータを保持します missingok #ログが失われた場合、エラーを報告せずに次のログのローリングを続行します compressed #圧縮を有効にします。これは、ローテーション後の古いログを参照します。ここでのデフォルトの圧縮は gzip です dateext #現在の日付を命名形式として使用します dateformat .%Y%m%d-%H dot #dateext と一緒に使用します。次の行にすぐに表示され、ファイルが切り取られた後のファイル名を定義します。dateext と一緒に使用する必要があります。%Y %m %d %s のみをサポートします

  olddir /var/log/tomcat/oldlog #ローテーション後のログファイルは指定されたディレクトリに配置されます}

注: この設定では、どのくらいの頻度でカットするかは設定していませんが、1 日に 1 回カットされます。これは、/etc/logrotate.d/tomcat ファイルが設定されていない場合、デフォルトでは /etc/cron.daily/logrotate ファイルが毎日実行され、このファイルが 1 日に 1 回カットされるためです。

#強制的にカットを実行し、/var/log/tomcat/oldlogにログがあるかどうかを確認します

[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat

設定ファイル /etc/logrotate.d/tomcat を読み取り中

olddir は /var/log/tomcat/oldlog になりました

状態ファイル用のハッシュ テーブルを割り当てています。サイズは 15360 B です。

1 ログの処理

ローテーションパターン: コマンドラインから強制された /usr/local/tomcat8/logs/catalina.out (5000 ローテーション)

olddir は /var/log/tomcat/oldlog です。空のログファイルはローテーションされず、古いログは削除されます。

ログ /usr/local/tomcat8/logs/catalina.out を考慮する

 ログを回転させる必要がある

ローテーションログ /usr/local/tomcat8/logs/catalina.out、log->rotateCount は 5000 です

'.%Y%m%d-%H点' -> '.%Y%m%d-%H点' に変換されました

日付拡張子サフィックス '.20181226-15'

グロブパターン '.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]ドット'

古いローテーションログを見つける glob が失敗しました

fscreate コンテキストが unconfined_u:object_r:usr_t:s0 に設定されました

/usr/local/tomcat8/logs/catalina.out の名前を /var/log/tomcat/oldlog/catalina.out.20181226-15:00 に変更し、ログを /bin/gzip で圧縮します。

デフォルトの作成コンテキストを unconfined_u:object_r:usr_t:s0 に設定する

デフォルトの作成コンテキストを設定する

# カット結果を見る

# 以前に切り取ったファイルを削除します。再度切り取ると、ファイルは catalina.out.20181226-15.gz ファイルと同じになるため、切り取りは成功しません。

[root@test01 ~]# rm -rf /var/log/tomcat/oldlog/catalina.out.20181226-15点.gz 
[root@test01 ~]# ls /var/log/tomcat/oldlog/
[root@test01 ~]#

# 1 分ごとに切り取るスケジュールされたタスクを設定します (注: 前に定義した空のログ ファイルは切り取られないため、ログにはコンテンツが含まれている必要があります)

[root@test01 ~]# crontab –e
*/1 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >>/var/log/tomcat/oldlog/cutting.log

# 2時間ごとにカット

[root@test02 ~]# crontab -l
0 */2 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /root/chenjiaxin/cutting.log

#タイムドカットの結果を見る

もちろん、1分に1回カットするという上記の設定は、実験によりできるだけ早く効果を確認できるようにするためです。実際には、会社のニーズに応じて丸太を切る頻度を設定する必要があります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linuxはlogrotateを使用してログファイルを切り取る
  • Tomcat ログローテーション (logrotate) の詳細な紹介
  • Linux での logrotate ログポーリング操作の概要

<<:  mysql 解凍パッケージの基本インストールチュートリアル

>>:  Alibaba Cloud で MySQL リモート接続を構成するための詳細な手順

推薦する

CentOS 7.6 Telnetサービス構築プロセス(Opensshアップグレードバトル第一弾のバックアップトランスポートライン構築)

不明な点があるときはいつでも、Blog Park にアクセスして、いつでも答えやインスピレーションを...

MySQLの自己接続と結合の詳細な理解

1. MySQL 自己接続MySQL では、情報を照会するときに自分自身に接続 (自己接続) する必...

HTML テーブルタグと関連する改行の問題の詳細な分析

テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...

MySQL 8.0.23のルートパスワードをリセットするための最適なソリューション

この方法は2021年2月7日に編集されました。私が使用しているバージョンは8.0.23です。事件の原...

React で Antd の Form コンポーネントを使用してフォーム機能を実装する方法

1. 構造部品1. フォームには、入力コントロール、標準フォーム フィールド、ラベル、ドロップダウン...

React-Native スクリーンショットコンポーネント react-native-view-shot の紹介と使い方のまとめ

目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...

Linux がますます人気になっている 10 の理由

Linux はますます多くのユーザーに愛されてきました。なぜ Linux はこれほど急速に発展し、い...

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

js はマウスインとマウスアウトによるカード切り替えコンテンツを実装します

この記事では、マウスでカード内外のコンテンツを切り替えるためのjsの具体的なコードを紹介します。具体...

MySQLでSQLクエリ文がどのように実行されるかを分析する

目次1. MySQL論理アーキテクチャの概要2. コネクタクエリキャッシュ4. パーサー5. オプテ...

DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...

既存のDockerコンテナの内容を変更する方法

1. Docker psはコンテナをリストします 2. Docker cpはコンテナにファイルをコピ...

HTMLの基礎を徹底解説(第1部)

1. WEBを理解するWeb ページは主にテキスト、画像、ハイパーリンクなどの要素で構成されていま...

MySQLにおける遅いSQLの最適化の方向性について詳しく話しましょう

目次序文SQL文の最適化遅いクエリSQLを記録する設定を変更する方法スロークエリログを表示するSQL...

HTML テーブルタグチュートリアル (3): 幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...