読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】rsyslog.conf の「*.*;auth,authpriv.none」が読めない。ファシリティ・プライオリティ・アクション、転送と logger【LPICレベル1】

25レスカテゴリ:Linux
1: 名無しさん

/etc/rsyslog.conf にこんな行があった
*.*;auth,authpriv.none -/var/log/syslog
呪文にしか見えん

2: 名無しさん

前提のおさらい。rsyslogd は裏で動き続けるサービス(デーモン)で、systemd のシステムでは rsyslog.service として systemctl で起動・停止・状態の確認をする

3: 名無しさん

>>1
1行は「セレクタ」と「アクション」の2つ。セレクタは ファシリティ.プライオリティ で、どこから来たどの重さのメッセージか。アクションはそれをどうするか(ふつうはファイルに書く)

4: 名無しさん

>>3
ファシリティって?

5: 名無しさん

>>4
メッセージを出したのが何の仲間か
auth・authpriv(認証)、cron、daemon、kern(カーネル)、lpr(印刷)、mail、syslog、user(一般のプログラム)、local0〜local7(自由に使える)など

6: 名無しさん

>>3
プライオリティは?

7: 名無しさん

>>6
重さで、軽いほうから
debug < info < notice < warning < err < crit < alert < emerg
mail.err と書くと、mail の err 以上(err・crit・alert・emerg)が全部入る。指定したもの「以上」になるのがポイント

8: 名無しさん

>>7
番号もあって、emerg が0、debug が7。メッセージの中では ファシリティ×8+プライオリティ の値で送られる。user が1、notice が5 なら

9: 名無しさん

>>1
で、最初の行は?

10: 名無しさん

>>9
*.* は全部のファシリティの全部のプライオリティ。; で次のセレクタを足して、auth,authpriv.none で auth と authpriv だけ「何も入れない」
つまり「認証以外の全部を /var/log/syslog へ」。認証は Debian の既定の設定で別の行 auth,authpriv.* /var/log/auth.log に書かれてた

11: 名無しさん

>>10
ファイル名の前の - は?

12: 名無しさん

>>11
書くたびにディスクへの同期をしない印(rsyslog.conf の man)。今の rsyslog は既定で同期しないから、昔の書き方の名残

13: 名無しさん

>>7
err だけ、とか、err 以外、とかはできる?

14: 名無しさん

>>13
rsyslog の拡張で、= を付けると そのプライオリティだけ、! を付けると除く
mail.=info は info だけ、mail.!err は err 以上を除く(info など err より軽いものだけ)

15: 名無しさん

>>10
Debian の既定の設定の最後に *.emerg :omusrmsg:* もあった

16: 名無しさん

>>15
emerg は、ログインしてる全員の端末に表示する。:omusrmsg:root なら root にだけ

17: 名無しさん

ログを別のサーバーに集めたい

18: 名無しさん

>>17
送る側はアクションにホストを書く。@ は UDP、@@ は TCP。ポートの既定は514
*.* @@192.0.2.10
受ける側は rsyslog.conf でコメントになってる imudp か imtcp を有効にする
module(load="imtcp")
input(type="imtcp" port="514")

19: 名無しさん

>>18
UDP は届かなくても分からんから、なくなったら困るなら TCP(もっと確実なのは RELP)

20: 名無しさん

>>2
自分のスクリプトからログを出すには?

21: 名無しさん

>>20
logger。logger -p local0.err -t backup "disk full" で、ファシリティ local0、プライオリティ err、タグ backup
-s で標準エラーにも出す。試したマシンは /dev/log がなくて、socket /dev/log: No such file or directory になった(rsyslog も journald も動いてない)

22: 名無しさん

>>2
設定を変えたら?

23: 名無しさん

>>22
rsyslogd -N1 で書式を確かめてから systemctl restart rsyslog。/etc/rsyslog.d/*.conf も読み込まれる($IncludeConfig の行)

24: 名無しさん

>>2
Debian 12 からは、新しく入れると rsyslog は入らず journald だけになった。rsyslog を使うならパッケージを足す。syslog-ng という別の実装もある

25: 名無しさん

>>3
ファシリティ.プライオリティ(以上)とアクション、; で足して none で外す、= と ! は rsyslog の拡張、@ が UDP で @@ が TCP。読めるようになった

管理人のひとこと