hajichan.net technical version

サーバ管理

syslog

syslogの設定は、/etc/syslog.confで行います。構文は、以下の通りです。

facility.level action

レベルとアクションの間は、タブですので注意して下さい。(スペースでは動作しません!)。レベルは指定されたレベル以上が有効範囲となります。

また、複数設定する場合は、セミコロン(;)で区切ります。この辺の基本的なこと、ファシリティ、レベル、アクションの詳細パラメータは、マニュアル及びネットでも情報が落ちているのでそちらご参照下さい。

ここでは、それ以外のことを書こうと思います。

Solaris特有の設定

syslogは、多くのUNIX系OSでほぼ共通の機能ですが、設定に関してSolaris特有のものが有ります。その部分を以下に記載します。

# /etc/syslog.conf
---
mail.debug   ifdef(`LOGHOST', /var/log/syslog, @loghost)

このifdef構文の箇所です。これは、m4で解釈されて、もしLOGHOSTが設定されていれば、/var/log/syslogへログを出力し、設定されていなければ、loghostというホストへログを転送すると言う意味です。では、LOGHOSTがどこで定義されているかというと、/etc/hostsです。つまりぃ

# cat /etc/hosts
---
192.168.1.10 host-a loghost

となっていれば、/var/log/syslogへログを出力です。デフォルトでは、/etc/hostsは、上記のようになっているはずなので、/var/log/syslogへログが出力されているはずです。

# cat /etc/hosts
---
192.168.1.10 host-a
192.168.1.20 loghost

こんな風になっていれば、host-aのログはloghost(192.168.1.20)というホストへ転送されます。

自分でインストールしたアプリケーションのログを取りたい

一般的なことですが、自分でインストールしたアプリケーション(サーバデーモン)のログをsyslogへ出力したい場合を記載します。箇条書き程度ですがこんな感じです。

  • アプリケーションをコンパイルする際(configure)に、ログ出力のオプションを付ける(大抵は、LOCAL0〜7)
  • /etc/syslog.confで設定
  • touchで空のログファイルを予め作成
  • kill -HUP <syslogd pid>を実行
  • loggerコマンドで動作確認テスト

ログローテーション

Solarisに付いているデフォルトのログローテーションスクリプト(/usr/lib/newsyslog)はかなり品祖です。/var/adm/messagesについては3世代、/var/log/syslogについては7世代で上書きされますのでログを半永久的に取っておきたい場合は注意しましょう。

自分でログローテーションスクリプトをカスタマイズしたり、フリーのログローテーションツールを利用したり、Solaris9であればlogadmでもっと柔軟な設定が出来るはずなので、そちらを利用するのも良いかと思います。

ページのトップへ戻る