Logstash:grokで複数のパターンを指定する

messageを複数指定することで上から順番にマッチするかどうかを判定していきます。

 

Logstash:grokのパターン解析便利サイト

Grok Constructor

なるサイトがあります。
上のウィンドウにログをペースト、下に構文をペーストしてGoを押すと定義した正規表現パターンが正しいかどうかチェックできます。

Automatic Construction」では元ログを貼り付けると、自動的にそのGrokパターンを出力してくれます。

Logstash:grokフィルタって何さ

Grokとは、直訳すると「意味を捉える」という意味。取得したログデータのフィルタリング、抽出、加工を行う際のとても重要なフィルタです。
grokフィルタを使うと、非構造データを正規表現によって構造データ化することができます。つまり、
Apache logやSyslogなど様々なログの出力文字列を定型的なパターンと化して、各パートの抽出ができるようになります。

ここ に予め用意されているGrokパターンが記載されています。
例えばApacheのログだと、COMMONAPACHELOGという名前でアクセスログが定義されています。

Logstash:ファイルをどこまで読み込んだかを保持するsincedbという仕組み

Logstashでは、sincedbなるもので、ファイルをどこまで読み込んだかという情報を保持しています。

logstash.confに下記の記載がありますが、ここに前回どこまで読み込んだかの情報が記録されます。

同じファイルを最初から読み込みたい場合などは、こちらのファイルを一旦削除するなどの対応が必要です。

その他のsincedb関連のパラメータ
start_position・・・ファイルの読み込み開始位置をこのパラメータで指定。ただし、このパラメータは、マニュアルに記載されているように対象ファイルに”first contact” 時のみ有効となります。つまり一度でも
sincedbに記録されると、このパラメータはなんの影響も与えず、sincedbで記録されている位置から読み込まれるという挙動になります。マニュアルを見るとbeginningかendのどちらかを指定できます。デフォルトは「end」、つまり対象ファイルの最終行から読み込むという形になります。tail -fのようなものです。対象ファイルへのこれ以降の書き込み分から読み込みを始めるということです。対象ファイルの最初からの読み込みを示すのは「begining」です。対象ファイルの過去の書き込み分も読み込みたい場合に指定します。
sincedb_write_interval・・・sincedbを更新する頻度を指定(単位は秒)

IIS Logstash Grok

IISのアクセスログをLogstashのGrokパターンで表したものは下記。

postfixでGmailに送信できるようにする

https://sites.google.com/site/shin1ogawa/mac-osx-1/postfix_gmail

Gmailへ送信時に以下のエラー発生

Feb 20 11:05:05 ip-172-31-8-159 postfix/smtp[3524]: connect to smtp.gmail.com[2404:6800:4008:c03::6c]:587: Network is unreachable

原因は、ipv6でつなぎにいっていることだった。main.cfのinet_protcolsをipv4とセットすることで回避。

Postfixが内部的に利用しているDB

Postfix は情報を蓄積したり検索するのに様々な種類のデータベースを 使います。Postfix データベースは “type:name” のように指定します。 Berkeley DB は Postfix データベース種類のうち “hash” と “btree” を 実装しています。Postfix Berkeley DB データベースの名前はデータベース ファイル名から “.db” サフィックスを取り除いたものです。Berkeley DB データベースはpostmap(1) コマンドで管理 されます。

main.cf を変更して、すぐに反映させたければ「postfix reload」コマンドを実行する。

Postfixの動作確認

ローカルのユーザからローカルのユーザ同士にメールが送信できるか」を確認可能。まず、動作確認するユーザを追加。

1
# useradd userA
2
# useradd userB
ユーザAからユーザBにメールを送信します。

1
# su userA
2
$ sendmail userB
入力待ち状態になるので、次のように入力します。

1
From:userA
2
To:userB
3
Subject:TEST
4

5
HONBUN
6
.
From,To,Subjectの行がメールヘッダ部分です。
改行をはさんで本文(HONBUN)を入力。本文の終了時はドット「.」だけ入力して改行します。
これでメールが送信されました。メールが送信されたかを確認しましょう。

初期状態では、受信したメールは「/var/spool/mail/【ユーザ名】」というファイルに書き込まれていきます。
それでは、先ほどuserAから送信したメールの受信ユーザuserBのメールファイルを見てみましょう。

1
$ su userB
2
$ cd /var/spool/mail
3
$ cat userB
先ほど送信した内容のメールが書き込まれていることがわかる。これでメールの送信がちゃんとできていることが確認できた。