レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

LogWatchで独自のログを収集させるには

2013年5月7日 2014年1月10日
logwatch

LogWatchを使ってみる ( nginxの設定例 )php-fpm のLogWatchの設定を行ってみる では、LogWatchの設定例をいくつか紹介してきました。
そこでは、元となる設定例があって、それに沿って設定を行ってきました。
今回は、独自のログをLogWatchで収集させるための設定を簡単に解説してみます。

基本的な考え方は、先の記事の例と同じです。
ここでは、必要最小限と情報収集のスクリプトの基本をメインに簡単に解説してみます。

LogWatchで独自のログを収集させるには

LogWatchで独自のログを収集させるための設定を解説するために、 ここでは、以下のようなログ(以降、Exampleログ とします)を例として、解説してみます。

[2013-04-24 20:27:19] http://server-setting.info/blog/unixbench-kvm-vps.html xxxxxxxx
[2013-04-24 20:54:10] http://server-setting.info/centos/logwatch-nginx-setting.html yyyyyyy
...

ここでは、ログの例として、上記のようなログファイルがあるとします。
このログ情報は、以下の3つの情報からなります。

+-------日付--------+ +----------------------URL---------------------------+ +-DATA-+
[2013-04-24 20:27:19] http://server-setting.info/blog/unixbench-kvm-vps.html xxxxxxxx

このログファイルは、 /var/log/example.log に保存され、Logrotate で /var/log/example.log.1.gz のように保存されていくものとします。

LogWatchで独自のログを収集させるためには、3つのファイルを作成する必要があります。


以降、3つのファイルについて解説します。


Exampleログ のスクリプトファイルを定義します

# LogWatchで出力される際のタイトルを設定します。
Title = Example Log
# ログファイルのグループ名を設定します。
#   この名前で、.../conf/logfiles/example-log.conf が決定します。
LogFile = example-log

Exampleログ のログファイルを定義します

# ログファイルのパスを設定します
LogFile = /var/log/example.log
# ログファイルのアーカイブパスを設定します
Archive = /var/log/example.log.*.gz

Exampleログ のスクリプトファイルを作成します

#!/usr/bin/perl

# Logwatch の dates の使用宣言を行います。
use Logwatch ':dates';

# ログファイルに出力される日付フォーマットを指定します。
$sdate = TimeFilter("%Y-%m-%d");

# ログファイルを1行づつ読み込み処理します。
while (defined($line = <STDIN>)) {
    # 同じ日付なら、ログ情報を出力します。
    if ($line =~ /^\[$sdate/) {
        print $line;
    }
}

上記のスクリプトは、同じ日付のログ情報を選別して、LogWatchへ出力する単純なスクリプトです。
LogWatchのスクリプトは、通常、perlで記述することが多いです。それは、LogWatchが、perlのためのLogWatch専用モジュールを提供しているからもであります。

ただ、上記のとおり便利ではありますが、perlで記述しなければならないわけではありません。以下は、上記と同じ処理を bash (B-シェル)で記述した例です。

#!/usr/bin/env bash

# 1行の分割キーワードを設定します。
OLD_IFS=$IFS
IFS=$'\n'

# LogWatchの日付範囲パラメータから、ログ収集する日付情報を編集します。
rm_date=''

if [[ "$LOGWATCH_DATE_RANGE" =~ "today" ]]; then
    rm_date=`date '+%Y-%m-%d '`
elif  [[ "$LOGWATCH_DATE_RANGE" =~ "yesterday" ]]; then
    rm_date=`date  --date '1 days ago' '+%Y-%m-%d '`
else
    rm_date=''
fi

# ログファイルを1行づつ読み込み処理します。
for LINE in $( cat /dev/stdin ); do
    # 同じ日付なら、ログ情報を出力します。
    if echo $LINE|egrep "^\[$rm_date" &> /dev/null; then
        echo $LINE
    fi
done
# 1行の分割キーワードを元に戻します。
IFS=$OLD_IFS
bash でスクリプトを記述する場合は、以下の環境変数にLogWatchのパラメータ情報が設定されています。

  • $LOGWATCH_DATE_RANGE : Date Range(日付範囲)
  • $LOGWATCH_DETAIL_LEVEL : Detail Level(詳細レベル)
  • $LOGWATCH_TEMP_DIR : Temp Dir(一時ディレクトリ)
  • $LOGWATCH_DEBUG : Debug Level(デバッグレベル)

LogWatchで独自のログを収集させてみる(テスト)

先に設定した独自ログの収集を、簡単にLogWatchで動作確認してみましょう。

CentOS Scientific Linux
$ logwatch --print --service example-log --range yesterday

Debian Ubuntu
$ logwatch --output stdout --service example-log --range yesterday


 ################### Logwatch 7.3.6 (05/19/07) ####################
        Processing Initiated: Thu Apr 25 05:05:09 2013
        Date Range Processed: yesterday
                              ( 2013-Apr-24 )
                              Period is day.
      Detail Level of Output: 0
              Type of Output: unformatted
           Logfiles for Host: db9.rise43.com
  ##################################################################

 --------------------- Example Log Begin ------------------------

 [2013-04-24 20:27:19] http://server-setting.info/blog/unixbench-kvm-vps.html xxxxxxxx
 [2013-04-24 20:54:10] http://server-setting.info/centos/logwatch-nginx-setting.html yyyyyyy

 ---------------------- Example Log End -------------------------


 ###################### Logwatch End #########################

こんな感じで出力されればOKです。
一応、コマンドについて解説しておきます。

$ logwatch --help

Usage: /usr/sbin/logwatch [--detail <level>] [--logfile <name>] [--output <output_type>]
   [--format <format_type>] [--encode <enconding>] [--numeric]
   [--mailto <addr>] [--archives] [--range <range>] [--debug <level>]
   [--filename <filename>] [--help|--usage] [--version] [--service <name>]
   [--hostformat <host_format type>] [--hostlimit <host1,host2>] [--html_wrap <num_characters>]

--detail <level>: Report Detail Level - High, Med, Low or any #.
--logfile <name>: *Name of a logfile definition to report on.
--logdir <name>: Name of default directory where logs are stored.
# ****  --service : サービス名を指定します。
--service <name>: *Name of a service definition to report on.
# ****  --output : 出力先を指定します。CentOSでは、--print で --output stdout と同じ結果(標準出力先指定)を得ます。
--output <output type>: Report Output - stdout [default], mail, file.
--format <formatting>: Report Format - text [default], html.
--encode <encoding>: Enconding to use - none [default], base64.
--mailto <addr>: Mail report to <addr>.
--archives: Use archived log files too.
--filename <filename>: Used to specify they filename to save to. --filename <filename> [Forces output to file].
# ****  --range : ログを解析する時間範囲を指定します。デフォルト:昨日です。
--range <range>: Date range: Yesterday, Today, All, Help
                             where help will describe additional options
--numeric: Display addresses numerically rather than symbolically and numerically
           (saves  a  nameserver address-to-name lookup).
--debug <level>: Debug Level - High, Med, Low or any #.
--hostformat: Host Based Report Options - none [default], split, splitmail.
--hostlimit: Limit report to hostname - host1,host2.
--html_wrap <num_characters>: Default is 80.
--version: Displays current version.
--help: This message.
--usage: Same as --help.
* = Switch can be specified multiple times...

とりあえずテストなので、最小限のオプションを指定しています。


ここで設定して例は、非常に基本的な事項のみです。必要に応じて、その他の設定事項も必要になるかと思います。
また、ログ情報収集のスクリプトも一番簡単なもので、日付情報のみを確認しているだけです。これも必要に応じていろんなことができると思います。

本来、ログファイルは、何か異常を検出するための情報です。
その情報をリアルタイムに見ていれば、異常の検知も早く、問題が拡大しない内に対処できると思いますが、複数のサーバーを管理している場合には、全てのサーバーをリアルタイムにウォッチするというわけにもいきません。

そういうとき、
上記のように必要なログ情報を個人で採取し、そのログ情報を1日1回メール配信してくれるLogWatchの処理にはめ込んでおくと、 毎日、メールをチェックすることで、大まかなシステムの異常を確認することができるようになると思います。

LogWatch以外にもシステム異常をモニターする Monitを使ってApacheを監視する(1) で記事にした Monitなどもあります。
このような異常検知のシステムを動作させていることがセキュリティの強化につながることは間違いありません。
まずは、導入をおすすめします。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

php-fpm のLogWatchの設定を行ってみる

LogWatchを使ってみる ( nginxの設定例 ) でLogWatchのインストールとnginxのLogWatchの設定を行ってみました。 ...

LogWatchを使ってみる ( nginxの設定例 )

LogWatchとは、文字通り、ロギング情報を監視してくれる便利なツールです。一応、LogWatch公式サイトの英文の翻訳は、以下のとおりです。 ...

yum を使って システムアップデートを行う (自動化も)

先のCentOSをインストールする(2)からの続きです。 CentOSの基本的な設定を終えたら、最初にOSのバージョンアップをしましょう。 ...

.htaccessで特定のホストからのアクセスを拒否する(2)

今回は、「.htaccessで特定のホストからのアクセスを拒否する」の続きです。 ここでの話は、FreeBSDもCentOSも関係なく、a ...

CentOS,ScientificLinuxでLAMP(Lighttpd+MySQL+PHP)インストールからWordpressを動かすまで(Lighttpd編)

今回は、最短でLAMPインストールし、Wordpressを動かすまでの手順について解説してみたいと思います。 とりあえず、CentOS / S ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2639 [s]