学習記録#34 250716

685ページから

701ページまで

rsyslogの続き

書式は
ファシリティ . プライオリティ 出力先

ファシリティ:
ログメッセージ生成元のプログラムは、メッセージにファシリティとプライオリティをタグ付けして出力する。
ファシリティはメッセージの生成元を表す
これは、具体的にはカーネルや実行中のプロセス
*を使うとすべてのファシリティを選択できる

例えば、authって書くと認証システム、cronって書くとクーロン、mailって書くとメールによる出力みたいな感じ

プライオリティ:
メッセージの重要度を表す。priority
低くすればするほど、ログとして出力される情報量も多くなる
*を使うとすべてのプライオリティを選択できる

例えば、emergって書くと緊急事態(エマージェンシー)を示す、みたいな感じ
noneは例外で、指定したファシリティのログを除外する役割になる

出力先は:
メッセージの出力先
ログファイル、ユーザーの端末、他のホストなどを選択できる
この出力先の部分をアクションフィールドという
/var/log/[ファイル名]
とかで指定する

指定したファシリティが出力するメッセージのうち、指定のプライオリティ以上のものが、出力先に出力される。
そのため、低レベルを指定するほど出力しないといけないログの種類も増えるので、出力されるログの量も多くなる

rsyslogの設定を変更すると、ログサーバーとして他のrsyslogからのメッセージをネットワーク経由で受け取れるようになる。
複数サーバーのログを1箇所に集めると、1つのホストにログインするだけで複数サーバーのログを確認できて便利

サーバーとして使う側の設定と、サーバーにログを送る側の設定がそれぞれ必要

loggerコマンドを使ってログメッセージを生成することも可能
logger (-p ファシリティ . プライオリティ) (-t タグ) メッセージ

systemd-catコマンド:
systemdを採用したシステムでは、このコマンドでコマンドの実行結果をジャーナルに書き込むことができる

ログファイルを継続して監視するには、-fオプション付きでtailコマンドにログが追加されるのを逐次監視することができる

特定のメッセージだけを見たい時は、grepコマンドを使って絞り込むと良い

ログファイルはそのまま放置するとどんどんログが溜まって膨大になる
ログファイルのローテーション機能を使うと、古くなったログを切り分けて、ログファイルの肥大化を防ぐ

ローテーション機能を使うと、例えば/var/log/messagesファイルがmessages.1にリネームされ、新たに/var/log/messagesが作成される。次のローテーションでは、/var/log/messagesが/var/log/messages.2にリネームして、、といった感じ
ローテーションでリネームされていったファイル数が規定されたファイル数を超えると、一番古いファイルから削除される

ローテーション機能は、logroutateユーティリティが提供している
logroutateユーティリティは、cronで定期的に実行される
設定は/etc/logroutate.confで行う

電子メールを取り扱うソフトには、MTAやMDA、MUAがある
MTA:Message Transfer Agent
MDA:Mail Delivery Agent
MUA:Mail User Agent

メール作成→送信完了までの一般的な流れ
- MUA(メールクライアントソフト)で作成されたメールは、送信用MTA①へ送られる
- MTA①は、メールアドレスから転送先メールサーバーを調べて、メールをMTA②に配送する
- MTA②がメールを受け取ると、ローカル配送プログラムであるMDAがメールの宛先となっているユーザーのメールボックスにメールを格納する
- 受取側は、POPサーバーやIMAPサーバーを経由して、自分のメールボックスからメールを取り出す

メールの配送に使われるMTAは、SMTPプロトコルでメッセージをやりとりするため、SMTPサーバーとも呼ばれる

システムによってどのMTAプログラムがインストールされているかは異なる
25番ポートを調べると、どれが稼働してるか見れる
$ netstat -atnp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 172.17.0.2:54530 91.189.91.104:80 TIME_WAIT -
僕の環境(Dockerコンテナ)はメールのあれこれとか特に設定してないので当然何も動いてなかった

返信待ちのメールはメールキューに蓄えられている
送信先メールサーバーが停止していて送信できなかったりすると、メールは一旦メールキューに保存される。
復旧すると、メールキューにあったメールが送信されて、送信されたものはメールキューから取り除かれる

mailqコマンドでメールキューの中身を確認できる