LoginSignup
0
0

Linuxのログについて設定と管理の基本

Last updated at Posted at 2024-06-12

ログ管理ソフトウェアについて

・syslog(RHEL/CentOS 6以前)
Syslogは、UNIXやLinuxを中心としたオペレーティングシステムで使用される標準的なログ記録プロトコルおよびソフトウェアです。

・rsyslog
「syslog」の機能強化版。基本的な使用方法は「syslog」とほぼ同じですが、複数のマシンのログを1台のマシンに集約することができる。
rsyslogの設定ファイルは、「/etc/rsyslog.conf」および「/etc/rsyslog.d」配下にある、.confで終わっているファイルすべてを合わせたものになります。
rsyslogはモジュール式で構築されており、機能追加やカスタマイズが容易。

・systemdのjournal
systemdは、Linuxシステムを起動、運用するためのツールです。サービスやプロセスを管理しています。
systemdはログシステムのjournalを搭載していて、journalctlコマンドを使用してログを出力することができます。

rsyslogの主要ログディレクトリ

デフォルトでは以下のディレクトリにログが吐き出されます。

・/var/log/messages:
システム全体の一般的なログメッセージが保存されます。システムの起動や停止、サービスの開始や終了、一般的なエラーメッセージなどが含まれます。

・/var/log/cron:
Cronジョブの実行に関するログが保存されます。スケジュールされたタスクの実行結果やエラーが記録されます。

・/var/log/boot.log:
システムの起動プロセスに関するログが保存されます。起動時に発生したイベントやエラーが記録されます。

・/var/log/mail.log:
メールサーバー(例:Postfix、Sendmail)のログが保存されます。メールの送受信に関するイベントが記録されます。

rsyslogの設定について

rsyslogの設定ファイルは/etc/rsyslog.confと/etc/rsyslog.d/*になります。

ログの出力の設定は以下の様に設定します。ファシリティとプライオリティについては後述します。
[ファシリティ].[プライオリティ]  [出力先]
例としてcronのログは初期設定で以下の様に設定されています。

cron.*                                                  /var/log/cron

ファシリティ(生成元)

ファシリティはメッセージの生成元を表します。具体的にはカーネルや実行中のプロセスです。
以下のようなものがあります。

ファシリティ 説明
auth,authpriv 認証システム
cron cron関連
mail メール関連
kern カーネルによる出力
daemon 各種デーモン関連
user ユーザープロセス関連

プライオリティ(重要度)

ログの重要度を示します。プライオリティを低く設定するほど出力されるログは多くなります。noneを設定するとログが出力されなくなります。

プライオリティ 説明
emerg 緊急: システムが使用できないレベルの重大な問題
alert アラート: 即座に対処が必要な問題
crit 重大: クリティカルな状態
err エラー: エラー状態
warning 警告: 警告状態
notice 通知: 正常だが重要な状態
info 情報: 情報メッセージ
debug デバッグ: デバッグメッセージ
none ログを記録しない

出力先

ログをどこに出力するのかを設定します。
rsyslogでは、TCPもしくはUDPを用いて、ネットワーク越しにログを送信することで、1台のログサーバに集約するといったこともできます。

出力先 説明
/var/log/messages ログファイル
/dev/tty1 コンソール
@ホスト名 指定したホストにUDPで出力
@@ホスト名 指定したホストにTCPで出力
* ログイン中の全てのユーザー

非同期モードについて

mail.*                                                  -/var/log/maillog

設定ファイルの出力先の先頭に「‐」がついているものがあります。意味は「非同期モードでログを記録する」ということです。ログをファイルに書き出す前に、ある程度メモリに書き出す内容を保存してからファイルに書き出すようになります。
パフォーマンスの向上が期待できますが、システムクラッシュなどの予期せぬ事態が発生した場合には、バッファに残っていたログが失われる可能性があります。

logrotate

ログファイルのローテーションを管理するためのツールです。ログファイルのサイズが大きくなりすぎないように定期的にアーカイブし、必要に応じて圧縮・削除します。

logrotateは、定期的に実行されるように設定されています。logrotate自体はデーモン(常駐プログラム)ではなくcrondによって実行されます。デフォルトでは、毎日実行されることが多いです。設定によって「毎週や毎月にローテーションする」「ファイルサイズが指定した値を超えたらローテーションする」といったことができます。

ログローテーションの設定

以下のすべてのファイルが読み込まれます。個別の設定が優先されメイン設定ファイルはデフォルト値として利用されます。

メイン設定ファイル: /etc/logrotate.conf
個別設定ファイル: /etc/logrotate.d/ディレクトリ内に配置される各サービスごとの設定ファイル

/etc/logrotate.confの例

# ローテーションの頻度(weekly, daily, monthlyなど)
weekly

# ログファイルの保持世代数
rotate 4

# ローテーションさせたら新しく空のファイルを作成
create

# ローテーション後にログファイルを圧縮する
#compress

# ローテーションの後に日付を付ける
dateext

# 各パッケージのログローテーション設定ファイルを含める
include /etc/logrotate.d

# 特定のログファイルに対する設定
/var/log/wtmp {
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 1
}

ローテーション頻度

  • daily: ログファイルを毎日ローテーションします。
  • weekly: ログファイルを毎週ローテーションします。
  • monthly: ログファイルを毎月ローテーションします。

ログの保持世代数

* rotate <数値>: ログファイルの保持世代数を指定します。

ローテーション後のファイル名

dateext: ローテーション後のファイル名に日付を付けます。
dateformatオプションを使用すると、日付の形式をカスタマイズできます。このオプションは、dateextと組み合わせて使用されます。

その他多くの設定があります。しっかりと設定を行うことで効率よくログの管理ができます。

その他ログ管理のポイントについて

・ログの閲覧と分析
ログファイルはテキストファイルなので、cat、less、grepなどのコマンドを使用して直接閲覧・検索することができます。特に、grepコマンドを使用して特定のキーワードを含むログ行を抽出することが一般的です。

・ログのモニタリングとアラート、解析と可視化
logwatch、AWS CloudWatch Logsなどのツールを使用してリアルタイムでログをモニタリングし、異常を検知します。

・tail -f と grep を組み合わせて、リアルタイムでログを監視し、特定のエラーメッセージが出力された際に迅速に対応します。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0