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

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


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

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

突然ですが、電子工作をやりたくなりまして、 500円くらいの安いキットを買ってきて、作っていました。

表向きは、子どもが興味を示すかどうか確認する、という意図があったのですが、 実のところは、わたしが作りたいという気持ちの方が上でした。

で、英語と中国語の大雑把な説明しかないので、 コンデンサは極性があるんだっけとかネットで調べて、なんやかんやしてるうちに、 なんとか完成することができました。

しかし、組み込み系の会社に属しているとは思えない初心者っぷりには、 われながら驚愕です。5年弱の間、なにしてたんだろうって感じです。

でも、スイッチを入れたら、一発でちゃんと動きました。
組み込み系の社員としても、父親としても、最低限の面目を果たせたように思います。

それでは、今週も、はりきってまいりましょう!

今週のお題 - Logwatch にサービス・フィルタを追加する

というわけで、先週、Logwatch の使い方やちょっとしたカスタマイズの方法を、 ご紹介しました。

Vol.074 - Logwatch をカスタマイズする
http://www.usupi.org/sysad/074.html

Logwatch には、さまざまなサービスのフィルタが、すでにあります。
ですので、なんにも設定しなくても、黙って集計してくれます。

…が、しかし、しかしです。
一般的でないデーモンなどをインストールして動かしていますと、 さすがにそれは集計してくれません。わからんもんはわからんのです。
かといって、せっかく Logwatch があるのに、 わざわざ独自にスクリプトを書いて実行するのも、なんだかなーという気がいたします。

そんなお嘆きの貴兄のために、今週は、 Logwatch のサービス・フィルタを作ってみたいと思います。


実は、/usr/shad/doc/logwatch-x.x.x/HOWTO-Make-Filter に、 作り方がばっちり載っています。(x.x.x は logwatch のバージョンです。)

じゃあ、読めばできますよね…と言ってしまいますと、 当メルマガの存在意義が消失してしまいますので、簡単な例をまじえつつ、 作り方をご紹介したいと思います。

 

さて、サービス・フィルタを追加する手順は、以下の通りです。

  1. ログファイル・グループを選ぶ。
    使用するログを選択します。該当するグループがない場合は、 その設定ファイルを作る必要があります。
    (今回は、すでにあるログファイル・グループを使用します。)
  2. サービス・フィルタの設定ファイルを作ります。
    サービス名や、 使用するログファイル・グループなどを指定するための設定ファイルを作成します。
    (今回は、最低限の設定を書いただけの設定ファイルを作ります。)
  3. サービス・フィルタ本体を作ります。
    ログを読み込み、集計して、結果を出力するスクリプトを作成します。
    (集計の度合によってピンキリですが、今回はキリでご容赦ください。)

以降で、それぞれの詳細をご説明いたします。
例として、 /var/log/messages に記録されたカーネルのメッセージを処理するフィルタを、 ちょちょいと作ってみたいと思います。


まずは、ログファイル・グループを選択します。
ログファイル・グループというとわかりにくいですが、ようするに、 使用するログファイルを指定する、ということです。

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/ の下です。
設定ファイル名は、サービス名.conf である必要があります。

とりあえずサービス名を kernel-test にして、 kernel-test.conf を作成してみたいと思います。
内容は、最低限、以下があればよいです。

  Title = "タイトル名"
  LogFile = ログファイル・グループ名

Title はタイトル名で、出力されるメッセージに使われます。
LogFile には、使用するログファイル・グループの名前を指定します。

あといくつかオプションがあります。簡単なものを以下に示します。

*RemoveHeaders を指定しますと、行の最初の方にある、日時、 ホスト名とサービス名を取り除いてくれます。

  *RemoveHeaders

*OnlyService を指定しますと、一致するサービス名の行のみを対象としてくれます。

  *OnlyService = サービス名

 

というわけで、以下の内容のファイルを、 kernel-test.conf という名前で作成してください。(後半2行は、お好みでどうぞ。)

  Title = "Kernel Test"
  LogFile = messages
  *RemoveHeaders
  *OnlyService = kernel

さあ、最後は、サービス・フィルタ本体です。

フィルタのファイル名は、サービス名と同じである必要があります。
フィルタの置き場所は、/etc/log.d/scripts/services/ か、もしくは、 /usr/share/logwatch/scripts/services/ の下です。

フィルタには、ログの内容を標準入力から読み込み、 標準出力に集計結果を出力する処理を行わせます。
ここでは、ごく簡単に、そのまま出力するものにしてみましょう。

  #!/usr/bin/perl
  while (<>) {
      print "  $_";
  }

標準入力から得たものをそのまま出力しているだけですね…。
上記内容のファイルを、kenrel-test という名前で作成し、実行可能状態にして、 フィルタの置き場所に置いてください。


では、念のため、標準出力に出力させて、確認してみましょう。

  # 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 で、すべてのサービスの集計結果を必要としますが、特定の
  サービスの集計結果が先頭に来るようにしてください。

です。

すべての結果が欲しいけれど、忙しいときは、特定のサービスの結果しか見ない、 というかたが結構いらっしゃるのではないかと思います。
たとえば、sshd の結果は必ず確認する、という場合、sshd の結果が先頭にあると、 忙しいときは先頭だけ見ればいいので、楽ですよね。

そんなふうに logwatch を実行するスクリプトを、書いてみてください。

…とはいえ、こういうのが欲しいなと今思いついただけですので、 簡単にできるかどうかなどわかりません。来週までに、なにか考えておきます。

あとがき

冒頭で、電子工作を突発的に行った話をしましたが、もうひとつ、 唐突にはじめたことがあります。

わたしは、学生のころからいろんな言語に興味がありましたので、 とくに目的もないまま、PostScript や Emacs Lisp のお勉強をしていました。

最近、そんな気持ちを忘れ、惰性で生きてきたような気がしましたので、 なにか新しい言語を勉強しよう!! と奮起した次第です。

そんなわけで、今、Python のお勉強をしています。

なにゆえ Python なんだ!? と疑問に思われたかたも多いことでしょう。
いつものように、あまり根拠はないのですが、 ちょっとマイナーな言語を覚えたかった…といういい加減な気持ちが、 そもそものきっかけです。
また、以下のページを見たところ、Python のニーズがかなり低かった、 というのも根拠のひとつです。(綴りも間違ってますし…)

日本であなたが今すぐ学ぶべき10のプログラミング言語
http://www.magicvox.net/archive/2006/09261926.php

さすがに、目標がないと、「OS自作入門」のときのように挫折してしまいますので、 今回は、とあるアプリを作るという目標を定めています。

内容はヒミツですが、子どもに使ってもらうためのモノです。
もし万が一完成したら、僭越ながらご紹介したいと思います。
挫折したら(ぜんぜんその話題に触れなくなったら)、 またかよ! って指摘していただけますと、いい感じにヘコむのではないかと思います。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

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

「栗日記」−長野のNHKがギャラリーを取材するらしいです。うひゃぁ。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本