LPIC-1の勉強方法をYouTubeで公開中!
こんにちは、Webエンジニアで業務でLinuxを触っているYUUKIです。
最近Linuxのログ管理について学ぶ機会があったので、理解の整理の為にも記事にまとめてみました。
syslog,rsyslog,syslog-ngの違い
syslogとは
ログメッセージを送受信する規格のこと
- 1980年代に誕生
- クライアント・サーバ型
- Syslogプロトコルをベースに使う
- 他のプログラムからのメッセージを受信したり、出力元や優先度に従って分類してsyslogで定義した出力先に送信できる
- ネットワーク越しに他の機器(ルータやスイッチなどのネットワーク機器、外部のサーバ)からのログメッセージを受信することもできる
- ただし古く、問題点がある
- ネットワーク経由でのメッセージの送受信にUDPを使用。サーバにログメッセージが届いてることが保証できない
- 暗号化機能を持ってない。全てのログメッセージが平文で送受信される→ログが覗かれる可能性あり
- 設定ファイル
- /etc/syslog.conf
syslog-ngとは
次世代のsyslog
- 1998年に誕生
- Syslogプロトコルをベースに使う
- 設定ファイル
- /etc/syslog-ng.conf
- syslog.confとは互換性がない(書式が違う)
rsyslogとは
次世代のsyslog
- 2004から開発が始まった
- Syslogプロトコルをベースに使う
- 設定ファイル
- /etc/rsyslog.conf
- syslog.confと後方互換性がある
- TCPで送受信される→安全
CentOS7でよくある構成
systemd-journaldとrsyslogを組み合わせてログを管理する
- systemd-journaldがログを収集し、rsyslogがログの出力先を決める
- ほとんどの主要なディストリビューションではこの構成
- CentOS6では、rsyslogのみでログを管理していた
systemd-journaldとは
- systemdを採用したシステムで使われる、システムログの収集デーモン
- 設定ファイルによって、ログの格納場所を以下どちらかに振り分け可能
- 不揮発性ストレージ /var/log/journal ディレクトリ配下
- システム再起動しても消えない
- 揮発性ストレージ /run/log/journal ディレクトリ配下
- システム再起動したら消える
- 不揮発性ストレージ /var/log/journal ディレクトリ配下
- 設定ファイルの場所
- /etc/systemd/journald.conf
- デフォルトでは、揮発性ストレージに格納する
- Storageというパラメータを、以下に設定すると、不揮発性ストレージに格納される
- Storage=persistent
- デフォルトは、Storage=auto になってる
- Storageというパラメータを、以下に設定すると、不揮発性ストレージに格納される
rsyslogで使う重要なコマンド
journalctl
systemd-journaldでログをみるときに使うコマンド
- ログの実態はバイナリファイルであり、ファイルを直接参照しても見れない→人が読めないログデータが出力される。
- 例: cat /var/log/journal/3ASDFADSFDSAFADSFS/ystem.journal
- バイナリデータが出力される
- オプション
- -f(–follow)
- リアルタイムでログ出力
- -r(–reverse)
- 最新のログから出力
- -s(–since) -u(–until)
- 日付指定 いつから(-s)いつまで(-u)
- -k(–dmesg)
- カーネルのログを出力
- -n(–lines)
- 出力行数を指定 -nのデフォルトは10行
- -p(–priority)
- 出力ログの重要度を指定
- -f(–follow)
logger
- 文字列をsystemd-journalのログ・ファイルに埋め込む
- 例: logger “test”
- testが/var/log/messagesに埋め込まれる
systemd-cat
- コマンドの実行結果をsystemd-journalのログ・ファイルに埋め込む
- 例: systemd-cat date
- 日付が/var/log/messagesに埋め込まれる