いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.207 / 読者数:1910名

こんばんは、うすだです。

会社で、Red Hat 7.3 を使う機会がありました。

2002年5月にリリースですので、9年も前のディストリビューションになるんですね。

それでもまだ現役のところがあるので、 自分の PC の VirtualBox あたりにインストールして、 手元でも試せるようにしようと思いました。

ですが、ハードディスクを認識しなかったり、途中でエラーが発生したりなどして、 結局インストールできていません。

仮想環境ならハードウェアまわりでハマることはないと思っていたのですが、 そうでもないということがわかりました。

VirtualBoxでは、仮想マシンを作るときにOSの種類を選びますが、 意外とそこで吸収してくれているのかもしれない、という気もしています。

このままだと悔しいので、もう少し試行錯誤してみようと思います。

その作業は不毛ではない、必ず糧になるのだ、と自分に言い聞かせつつ、 釈然としない気持ちをひた隠しながら、今回もはりきってまいります。

今回のお題 - rsyslog の設定をしてみる

長年、この分野に足を突っ込んでいると(といっても高々十数年ですが)、 まったく変わらないものもあれば、大きく変化するものもあります。

たとえば、ls や find, grep などのコマンドは、 オプションが増えたりなどの変化はあるものの、基本的には昔と変わらず使用できます。

サービスに関しても、cron や at など昔からあるものが、いまでも使用できます。

かたや、udev や NetworkManager, memcached などといった新たな仕組みやサービスが、 次々と開発され、採用されています。
(もちろん、フェードアウトしていったものも、星の数ほどあります。)

さて、システムログ(syslog)に関しては、どうでしょうか。
そのサービス自体は昔から変わっていませんが、 裏でせっせと動いているデーモンさんは、古くからいらっしゃる syslogd から、 rsyslogd というひとに変わりつつあるようです。

いつまでも古い知識にすがっていてはいけないと思いますので、今回は、 rsyslog をご紹介したいと思います。
(といっても、従来の syslog の範疇しかご紹介できていませんが…。)

rsyslog だと何がよいのでしょうか?

rsyslog は、信頼性と豊富な機能を兼ね備えた、次世代の syslog です。

The enhanced syslogd for Linux and Unix rsyslog
http://www.rsyslog.com/

TCP や SSL などの通信に対応していたり、DBとの連携もできたり、 従来の syslog.conf との互換性もあります。てんこ盛りですごいですね。

恐らくもっとも大きな利点は、既存の syslog との互換性だと思います。 rsyslog 固有の設定を追加するだけで、あとは既存の設定そのままでよいので、 比較的楽に移行できるように思います。

とはいっても、Ubuntu, Debian, Fedora, RHELやその互換、 Vine などのディストリビューションの最新版は、すでに rsyslog になっています。 移行とか考えず、安心して、以降をご覧いただければと思います。

rsyslog の設定ファイル

rsyslog の設定ファイルは、「/etc/rsyslog.conf」です。
ただ、いずれのディストリビューションにも、以下の設定が含まれているため、 「/etc/rsyslog.d/なんとか.conf」も読み込んでくれます。
(…あ、CentOS6 にはありませんでした。)

  $IncludeConfig /etc/rsyslog.d/*.conf

以降で試す際は、/etc/rsyslog.d/otameshi.conf などのように、 新たに設定ファイルを作ってやってみるのが、よさそうに思われます。
(不要になったら、mv otameshi.conf otameshi.conf.bak などとすることで、 設定を無効にできます。)

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

そもそも、システムログは、カーネルから各種サービスのデーモン、 普通に使っているアプリケーションなど、様々なプロセスが発するメッセージを集約して、 ファイルに出力したり、他のマシンに丸投げしたり、メールで通知したりなどを行う、 重要な役割を担っているひとです。

そのため、システムログでは、 種別を表す「ファシリティ(facility)」と重要度を表す「プライオリティ(priority)」 でログを種類分けします。

まず、ファシリティには、以下のような種類があります。
(/usr/include/sys/syslog.h より得ました。)

ファシリティ名概要
kernカーネルメッセージ
userユーザレベルのメッセージ
mailメール関連
daemonシステムデーモン
authセキュリティ・認証関連
syslogsyslog が内部的に使う
lprプリンタ関連
newsNetNews関連
uucpUUCP関連
authprivセキュリティ・認証関連(プライベート)
ftpFTPデーモン
local0〜7ローカルで自由に使える

該当するファシリティがあればそれを、 なければ local0〜7 のうち使用していないものを指定します。

そして、プライオリティには、以下のような種類があります。
(これも、/usr/include/sys/syslog.h より得ました。)

プライオリティ名概要
emergシステムが使用不能なレベル
alertすぐになんとかしないといけない状態
critクリティカルなレベル
errエラー
warningワーニング
noticeちょっと注意したほうがいいレベル
info情報
debugデバッグレベル

重要度の高い順に並んでいます。出力したいログのレベルにあったものを選びます。

ログファイルに記録する設定

そして、システムログの設定では、ファシリティとプライオリティを指定して、 その条件に合ったものだけを処理します。

たとえば、ファシリティが mail で、 noticeとそれ以上のプライオリティのログを /var/log/mail-notice.log に出力するには、 以下のように設定します。

  mail.notice            /var/log/mail-notice.log

プライオリティの指定は notice だけですが、 notice 以上すべてを指定したことになります。もし、 mail の notice だけを記録する場合は、以下のように「=」を先頭につけます。

  mail.=notice           /var/log/mail-notice-only.log

また、「*」ですべてを指定できます。たとえば、 mail なログのすべてを記録したい場合は、 以下のようにプライオリティに * を指定します。

  mail.*                 /var/log/mail-all.log

ファシリティに * を指定することもできます。 プライオリティがwarning以上のログをすべて記録したい場合は、 以下のように指定します。

  *.warning              /var/log/all-warning.log

「;」で複数指定することもできます。たとえば、 auth と authpriv 両方の err 以上を記録したい場合は、以下のように指定します。

  auth.err;authpriv.err  /var/log/auth-authpriv-err.log

logger コマンドでテスト

説明ばっかりではおもしろくありませんので、実際にやってみましょう。

まず、以下の内容のファイルを、 「/etc/rsyslog.d/sysad-test.conf」という名前で保存します。

  local5.info    /var/log/local5.info.log
  local5.=info   /var/log/local5.=info.log

そして、rsyslog を reload するのですが、Ubuntuな方だけは、 その前にログファイルを作っておく必要があります。
というのは、rsyslogd が、root ユーザの権限ではなく、 syslog ユーザの権限で動作しているためです。/var/log ディレクトリは、 root の権限がないとファイルを作れないようになっているのです。

  # touch /var/log/local5.info.log
  # touch /var/log/local5.=info.log
  # chown syslog /var/log/local5*info.log

ちなみに、Ubuntuな方もそうでない方も、ログファイルのパーミッションやグループは、 適切な値に設定しておきましょう。
(が、いまはお試しなので、気にしないで話を先に進めます。)

さて、準備が整いましたので、rsyslog を reload します。

  # service rsyslog reload

そして、logger コマンドでシステムログに何か出力してみます。
「-p」オプションでファシリティとプライオリティを指定できますので、 たとえば local5 の info を以下のように指定して実行します。

  $ logger -p local5.info "This is a test via logger command."

すると、双方に出力されていることがわかります。

  # tail /var/log/local5*info.log
  ==> /var/log/local5.=info.log <==
  Sep  4 01:23:45 host usu: This is a test via logger command.

  ==> /var/log/local5.info.log <==
  Sep  4 01:23:45 host usu: This is a test via logger command.

次に、プライオリティを err にしてみましょう。

  $ logger -p local5.err "This is an err test."

すると、local5.=info には出力されていないことがわかります。

  # tail /var/log/local5*info.log
  ==> /var/log/local5.=info.log <==
  Sep  4 01:23:45 host usu: This is a test via logger command.

  ==> /var/log/local5.info.log <==
  Sep  4 01:23:45 host usu: This is a test via logger command.
  Sep  4 01:24:36 host usu: This is an err test.

うまくいかないときは、/var/log/messages(あるいは syslog) に何か関連するログが出力されていないか確認します。
また、rsyslogdが上記ログファイルを参照しているかどうか、 以下の手順で確認することもできます。

  # ls -l /proc/`ps -C rsyslogd -o pid=`/fd
  合計 0
  lrwx------ 1 root root 64 2011-09-04 01:01 0 -> socket:[123456]
  l-wx------ 1 root root 64 2011-09-04 01:01 1 -> /var/log/syslog
  ...後略...

おわりに

以上、rsyslog の、というよりも、syslog の出力の設定について、 簡単にご紹介しました。

もちろん、rsyslog に関してはまだまだご紹介できていませんので、次回以降に、 モリモリとご紹介させていただきたいと思います。

ちなみに、syslog に関しては、遠い遠い過去にご紹介しております。
よろしければ、チラ見してみてください。

Vol.016 - syslog を管理する
http://www.usupi.org/sysad/016.html
Vol.017 - syslog を集中管理する
http://www.usupi.org/sysad/017.html

宿題の答え

前回の宿題は、

  digコマンドで得られるフラグについて調べましょう。

でした。

digコマンドの実行結果に含まれる、以下で示す箇所のことです。

  $ dig www.google.com

  ; <<>> DiG 9.7.3 <<>> www.google.com
  ;; global options: +cmd
  ;; Got answer:
  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60938
  ;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 4, ADDITIONAL: 1
  コレ↑のことです
  ...後略...

これは、DNSサーバからの応答パケットに含まれるフラグそのものです。
そのフラグが立っているとき(ビットが1のとき)に、出力されます。
各フラグを簡単にご紹介します。

  • QR (QueRy)
    問い合わせるパケットの場合は 0、 DNSサーバの応答の場合は 1 に設定されるフラグです。つまり、 digコマンドの出力結果には必ず qr が含まれます。
  • AA (Authoritative Answer)
    権威サーバからの応答であることを示すフラグです。たとえば、 知りたいドメインのDNSサーバに直接問い合わせた場合に、aa が含まれます。 キャッシュされたデータの場合には含まれません。
  • TC (Truncation)
    DNSサーバの応答パケットが、最大長(たとえば512バイト)を越えているため、 メッセージが切り詰められたことを示すフラグです。digコマンドの場合、 TCPに切り替えるかEDNS0を用いて問合せ直しますので、 tc と出力されることは基本的にないと思います。
  • RD (Recursion Desired)
    digコマンドで再帰問合せを行ったことを表します。こちら側でつけたフラグですが、 DNSサーバもつけて返します。
  • RA (Recursion Available)
    DNSサーバが再帰問合せをサポートしていることを示すフラグです。 たとえば、キャッシュサーバに問い合わせると、ra が含まれます。
  • CD (Checking Disabled)
    DNSSECに対応したDNSサーバに対して、 署名の認証を行わない問合せを行う際につけるフラグです。これも、 こちら側でつけたフラグですが、DNSサーバがつけて返します。
  • AD (Authentic Data)
    DNSSECで、すべてのレコードが信頼できる場合に、DNSサーバがつけるフラグです。

詳しくは、RFC1035 や RFC4035 あたりをご覧ください。
(検索すれば、日本語訳が多数見つかると思います。ありがたいことですが、 訳が正しいかどうかはわかりません。ご自身でご判断ください。)

http://www.ietf.org/rfc/rfc1035.txt
http://www.ietf.org/rfc/rfc4035.txt

今回の宿題

今回の宿題は、

  設定ファイルに誤った記述があるとどうなるか、試してみましょう。

です。

rsyslogd が死んでしまうのか、誤りの直前までは有効なのか、 誤りの行だけが無効になるのか、いろいろ推測はできると思います。

あ、ちなみに、本文で書き忘れましたが、くれぐれも本番環境で試すことだけは、 やめていただきたいと思います。
お試しな、どうなっても文句を言われない環境でお試しくださいませ。

あとがき

これを発行する前日、台風12号が西日本を縦断した日に、 インターネットが使えなくなってしまいました。

といっても、我が家だけの話です。

といっても、ネットが使えないのは、非常に不便なのです。

技術的にわからないことを調べるときはもちろん、近くのお店、気になる書籍、 料理のレシピ、経路検索、国語や英和などの辞典代わりなどなど、様々な情報を、 我々はインターネットから入手しています。
(もちろん、情報の入手だけでなく、購入や情報発信、交流など、 様々な用途でフルに活用しておられると思います。)

普段から、どれだけインターネットのお世話になっていたか、 ということを身をもって知りました。
(いつもありがとう、インターネットよ、と言いたくなりました。)

また、つながらなくなってサポートに電話したら、 復旧工事は最短で日曜日になってしまうと言われてしまいました。

わたしにとってインターネットは、電気などと同じくらい大事なインフラのひとつなので、 当日中の復旧を嘆願したのですが、ダメでした。

どうやら、強風のため、 光ファイバーの溶接などの作業ができないというのが理由のようでした。 作業員を危険に晒したくないと言われると、 まあしょうがないなあと言うしかありません。
しかし、昔の NTT のメタル回線だったら、 可及的速やかに復旧しているんだろうなと思うと、 やっぱり釈然としない気持ちになりました。

そんなわけで、つながらない日の夜は、 最寄りのマクドへ行って栗の更新などを行いました。なきゃないで、 なんとかなるもんですね。
(ケータイ使えばよいのでは、と言われるとその通りなのですが、 Android で SSH するのは、ものすごく骨が折れますので…。)

 

…と書いたのが、土曜日のことでした。

今日は日曜日ですが、今日もまだ台風が居座っていて復旧作業を行うことができず、 またしてもマクドのお世話になっています。

できなかったという連絡もなく(こっちから聞きました)、代替案もなく、 ただできませんすみませんと言われ、非常にがっかりしています。

客が望んでいるのは光ファイバーじゃなく、インターネットが使えることなんですけどね。 何度言ってもコミュファのサポートのひとにはわかってもらえませんでした。

まあ、小心なわたしが猛烈に主張できたという点で、よい経験にはなったと思います。 そして、天下の NTT さまに鞍替えすべく、準備を進めたいと考えております。 IPv6 も使えますしね。

 

今回も、ここまで読んでいただき、たいへんありがとうございました。
次回は、9月18日(日) の未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- 秋に作品展やるみたいです。ドキドキ。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本