syslog設定と管理

syslogの管理をしっかりやたいですね!
という、、ようやく本来の「サーバ管理運用」というネタを(w

syslogについて

syslogとは、、syslogです(w
当たり前すぎることかもしれないですが、がんばって書きます!

システムでもデーモンでも、何か導入した場合にはログが出力されますよね。
それは何でもそうだと思います。WebサーバでもDNSサーバでも、
ldapサーバでも何でも同じでログを出力します。

何時? 誰が? どんなアクセスを?
というのをログとして残すのも多いですが、
こういう場合はsyslogのパフォーマンスとか重要になりますよね。
※ldapサーバ構築時にはsyslogが一番のボトルネックになってました><

その他にも何か異常があった場合などに、その異常を検知して
ログに出力します。デーモンを再起動した場合等にもログでます。
ひとまずサーバ上で動くツールはログという名のメッセージを
投げかけ続けるものですよね。

syslog設定

syslogの設定は/etc/syslog.confでやります。

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
# Log cron stuff
cron.*                                                  /var/log/cron
# Everybody gets emergency messages
*.emerg                                                 *
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

デフォルトではこんな感じですかねー。
ひとまずは、このままでも動作します^^)b

syslog設定ポイントはファシリティとプライオリティでしょう。
設定的には左側にあるヤツです。

コレです。
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

syslogファシリティとプライオリティ

ピリオドとセミコロンがあってセミコロンが区切りです。
セミコロンを区切りとみて、ピリオドの左がファシリティで右がプライオリティです。
ファシリティは元々syslogに設定されているもので、以下があります。

  • auth
  • authpriv
  • cron
  • daemon
  • kern
  • lpr
  • mail
  • mark
  • news
  • security (same as auth)
  • syslog
  • user
  • uucp
  • local0 ~ local7

プライオリティは以下です。

  • debug
  • info
  • notice
  • warning
  • warn (same as warning)
  • err
  • error (same as err)
  • crit
  • alert
  • emerg
  • panic (same as emerg)

syslogのアクション

このファシリティとプライオリティの組み合わせがsyslog設定の左側で、
ログの捕捉対象といったところでしょうか。これが右側にドーンあり、
左側はそのログに対するアクションを書きます。
一般的には /var/log/以下のファイルを指定します。
ここはアクションと名前が付いていて以下のアクションがあります。

  • ファイル:ファイル名を指定して、そこにログを書き出します。
  • 名前付きパイプ:パイプに渡せる。あまり見たことない。mkfifoも要調査。
  • コンソール:コンソールに出力
  • 外部syslog:外部サーバにsyslogを飛ばす。何気に便利。
  • 特定ユーザ:ユーザに渡す。例えばrootに渡すとか。
  • ログインしてる全ユーザ:ログイン中のユーザのコンソールにメッセージ出す。

こんな感じでしょうか。
一般的なのはファイル出力ですね。もともとsysylog.confに設定されます^^
そして、何気に役立つのがマイナスです!

mail.*                 -/var/log/maillog

こうやって書くと、/var/log/maillogにログを非同期で書き出します。
デーモン等からログが書き出された瞬間にファイルにも出力されるのが基本ですが、
ちょっと遅れて出力されます。

これにより、システムがクラッシュした時等のログは確認することは
できないというメリットがありますが、パフォーマンスが格段に向上します。

ldapサーバ構築でパフォーマンスが上がらず困っていたのですが、
openldapサーバのログにマイナスを付けて非同期出力にしたところ
パフォーマンスが100倍近くになりました(w

こういう場合はディスクI/O waitが多くなるので
そういう現象があった場合にはsyslog設定を見直して見るのも手です^^)b

まとめ

syslog設定について書きました!
アクションでいろいろと出力先を決定できるという点と、
非同期出力(-)については是非活用して欲しいと思います!!

ではでは。
次は、logrotateとか書きたいです!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です