Open6
Logstash関連メモ

Logstashのconfigファイルの構文定義
rule comment
(whitespace? "#" [^\r\n]* newline_or_eoi)+ <LogStash::Config::AST::Comment>
end
使ったことなかったけれど#でコメントを記述できそう(未確認) た(確認済み)

conf編集にgrammar.treetopを利用した方が良いと思いrubyでの実装を考えたが、
全量パースせずinput, filter, outputセクション単位丸ごとの書き換えなら他言語で簡単なパーサがあれば良いのでは。

Logstashのfile output codec rubydebugをtrueにして、
file input codec rubydebugをtrueにしたときの差分を後で確認する

- rubydebugの{ metadata => true }で@metadataまで出力
- デフォルトではコンソールで配色するためのエスケープ文字が混ざる
- rubydebugは内部でamazingprintを使用している
- 以下のように
AmazingPrint.defaults
へamazingprintのオプションを指定するコードをファイルに記述し、dockerの場合は/usr/share/logstash/.aprc
に配置すると出力書式を変更可能
require 'amazing_print' AmazingPrint.defaults[:indent] = 0 AmazingPrint.defaults[:multiline] = false AmazingPrint.defaults[:plain] = true
- 以下のように
- outputのcodecを rubydebug とした場合、出力は
key => value
形式 - 保存したファイル読み込み時に支障あり
- → カスタムcodecsを使用
-
event.to_hash_with_metadata
で@metadataごと出力可能
-
- ただし、file input pluginで読み込んだ場合eventにはinput側の@metadataが設定される
- テスト時のstubとして@metadataまで再現が必要な場合、こちらもカスタムinputsの使用が必要?

file inputのmetadata設定箇所

Logstash Filter Plugin設定のテストツール
- last commit: 6 years ago
- テスト実行時にshellからdockerコンテナのlogstashを起動
- インストールしている場合はスクリプトを修正
- reloadでなく都度docker run
- 入力はstdio、出力はfile
- confにinputとfilterを記述し、outputはテスト用のが与えられる
- 事前に用意したjsonlファイルと出力をjsのcliでdiff
- 比較除外項目はglobalでbash内に記述
- shell, js
- last commit: 3 days ago
- reloadあり?
- ブラウザから操作
- 自動テストしたいので調査保留
- last commit: 9 years ago
- input dataとexpectedをjsonで記述
- 比較除外項目はケースごと
- テスト実行時にshellからdockerコンテナのlogstashを起動
- confはfilterのみ記述
- reloadではなく都度docker run
- ruby, shell
- last commit: 8 months ago
- standaloneモードでは都度起動、daemonモードでは裏でreload
- input dataとexpectedをjson, yamlで記述
- 比較除外項目はケースごと
- go
- last commit: 8 months ago
- logstash-filter-verifierのよりシンプルな使い方を求めたツール
- input dataとexpectedをjson, yamlで記述
- 比較除外項目はケースごと
- おそらくreloadなし
- python