
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.075 / 読者数:904名こんばんは、うすだです。 突然ですが、電子工作をやりたくなりまして、 500円くらいの安いキットを買ってきて、作っていました。 表向きは、子どもが興味を示すかどうか確認する、という意図があったのですが、 実のところは、わたしが作りたいという気持ちの方が上でした。 で、英語と中国語の大雑把な説明しかないので、 コンデンサは極性があるんだっけとかネットで調べて、なんやかんやしてるうちに、 なんとか完成することができました。 しかし、組み込み系の会社に属しているとは思えない初心者っぷりには、 われながら驚愕です。5年弱の間、なにしてたんだろうって感じです。
でも、スイッチを入れたら、一発でちゃんと動きました。 それでは、今週も、はりきってまいりましょう! 今週のお題 - Logwatch にサービス・フィルタを追加するというわけで、先週、Logwatch の使い方やちょっとしたカスタマイズの方法を、 ご紹介しました。
Vol.074 - Logwatch をカスタマイズする
Logwatch には、さまざまなサービスのフィルタが、すでにあります。
…が、しかし、しかしです。 そんなお嘆きの貴兄のために、今週は、 Logwatch のサービス・フィルタを作ってみたいと思います。 実は、/usr/shad/doc/logwatch-x.x.x/HOWTO-Make-Filter に、 作り方がばっちり載っています。(x.x.x は logwatch のバージョンです。) じゃあ、読めばできますよね…と言ってしまいますと、 当メルマガの存在意義が消失してしまいますので、簡単な例をまじえつつ、 作り方をご紹介したいと思います。
さて、サービス・フィルタを追加する手順は、以下の通りです。
以降で、それぞれの詳細をご説明いたします。
まずは、ログファイル・グループを選択します。 Logwatch には、一般的なログファイル・グループの設定が、 あらかじめ用意されていますので、大抵はこれらのどれかを選ぶだけです。 ログファイル・グループの設定ファイルは、/etc/log.d/conf/logfiles/ か、 もしくは /usr/share/logwatch/default.conf/logfiles/ の下にあります。 (ご使用の環境によって微妙に異なるかもしれません。)
例として作るフィルタのログは、/var/log/messages ですが、
これの設定ファイルは messages.conf です。
そして、ログファイル・グループ名は、.conf を除いた messages になります。 次は、サービス・フィルタの設定ファイルを記述します。
設定ファイルの置き場所は、/etc/log.d/conf/services/ か、もしくは、
/usr/share/logwatch/default.conf/services/ の下です。
とりあえずサービス名を kernel-test にして、
kernel-test.conf を作成してみたいと思います。 Title = "タイトル名" LogFile = ログファイル・グループ名
Title はタイトル名で、出力されるメッセージに使われます。 あといくつかオプションがあります。簡単なものを以下に示します。 *RemoveHeaders を指定しますと、行の最初の方にある、日時、 ホスト名とサービス名を取り除いてくれます。 *RemoveHeaders *OnlyService を指定しますと、一致するサービス名の行のみを対象としてくれます。 *OnlyService = サービス名
というわけで、以下の内容のファイルを、 kernel-test.conf という名前で作成してください。(後半2行は、お好みでどうぞ。) Title = "Kernel Test" LogFile = messages *RemoveHeaders *OnlyService = kernel さあ、最後は、サービス・フィルタ本体です。
フィルタのファイル名は、サービス名と同じである必要があります。
フィルタには、ログの内容を標準入力から読み込み、
標準出力に集計結果を出力する処理を行わせます。
#!/usr/bin/perl
while (<>) {
print " $_";
}
標準入力から得たものをそのまま出力しているだけですね…。 では、念のため、標準出力に出力させて、確認してみましょう。
# logwatch -service kernel-test -print
...前略...
--------------------- Kernel Test Begin ------------------------
usb.c: USB disconnect on device 00:1d.1-1 address 38
usb.c: deregistering driver pegasus
hub.c: new USB device 00:1d.1-1, assigned address 39
...中略...
---------------------- Kernel Test End -------------------------
###################### LogWatch End #########################
こんな感じで、カーネルのメッセージが全部出てきます。 以上、Logwatch のサービス・フィルタの作り方を、ご紹介しました。 今回作ったものは、すごく単純なものですので、あまり実用的でないかもしれません。 これはちょっとなと思われた貴兄は、 ちゃんと集計するものに書き換えていただけますと、幸いです。 また、標準入力からのログを無視して、 なにかの状態を出力するコマンドを実行させるのも、アリだと思います。 たとえば、zz-disk_space というフィルタがそんな感じです。 機会があれば、中を覗いてみてください。 宿題の答え先週の宿題は、 すべてのサービスを対象に logwatch を実行してください。 ただし、sendmail は対象外としてください。 でした。 logwatch.conf の Service の指定を、以下のようにしてください。 Service = All Service = -sendmail Service のひとつに All が指定されている場合、 他の Service の名前の先頭が - で始まるサービスは、対象から外されます。 時間と Perl の読解力があれば、logwatch.pl の中を見てみてください。 # Time to expand @ServiceList, using @LogFileList if defined... というコメントの直後のループで、その処理を行っています。 今週の宿題今週の宿題は、 Logwatch で、すべてのサービスの集計結果を必要としますが、特定の サービスの集計結果が先頭に来るようにしてください。 です。
すべての結果が欲しいけれど、忙しいときは、特定のサービスの結果しか見ない、
というかたが結構いらっしゃるのではないかと思います。 そんなふうに logwatch を実行するスクリプトを、書いてみてください。 …とはいえ、こういうのが欲しいなと今思いついただけですので、 簡単にできるかどうかなどわかりません。来週までに、なにか考えておきます。 あとがき冒頭で、電子工作を突発的に行った話をしましたが、もうひとつ、 唐突にはじめたことがあります。 わたしは、学生のころからいろんな言語に興味がありましたので、 とくに目的もないまま、PostScript や Emacs Lisp のお勉強をしていました。 最近、そんな気持ちを忘れ、惰性で生きてきたような気がしましたので、 なにか新しい言語を勉強しよう!! と奮起した次第です。 そんなわけで、今、Python のお勉強をしています。
なにゆえ Python なんだ!? と疑問に思われたかたも多いことでしょう。
日本であなたが今すぐ学ぶべき10のプログラミング言語 さすがに、目標がないと、「OS自作入門」のときのように挫折してしまいますので、 今回は、とあるアプリを作るという目標を定めています。
内容はヒミツですが、子どもに使ってもらうためのモノです。
今週も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からできます。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」−長野のNHKがギャラリーを取材するらしいです。うひゃぁ。 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本
▼ 気に入ってる本 |