見出し画像

TWLogAIAN:抽出パターン(Grok)の編集機能を作るのに1日かかった

今朝は5時から開発開始しました。昨日のCSVの読み込みの問題は何とか解決できました。GO言語のCSVパッケージではCSVの列数を厳密にチェックしているので手抜きして列数が少ない場合でも読み込めるようにしていたのが良くなかったようです。列数のチェック機能をOFFにして解決しました。

	r := csv.NewReader(f)
	r.Comma = '\t'
	r.Comment = '#'
	r.FieldsPerRecord = -1

の最後の行です。
この問題を解決した後、サンプルのログから情報を抽出するためのGrokの抽出パターンの定義を編集できる機能を作り始めました。
全自動でできたらかなり嬉しいなといろいろ考えました。流行りのAIで自動で考えてほしいのですが、作るのは無理そうなのでよく使うパターンだけ見つけてGROKの定義に変換するようにしました。対応したのは

  • IPアドレス

  • メールアドレス

  • MACアドレス

  • URL

  • タイムスタンプ

です。

抽出パターン自動生成

テストデータのところにサンプルのログを入力して<自動抽出パターン生成>ボタンをクリックすると魔法のように変換してくれます。
上の例だとIPv4のアドレス、タイムスタンプ、URIの部分が変換されています。正規表現としてエスケープが必要な部分も自動で変換しています。
でも、このままでは使えないので、もう少し編集を助けてくれる機能をつけました。
取得したい項目を選びます。

抽出情報の項目

対応する部分を選択します。

選択

この状態でTABキーを押せば、

変換後

選択した範囲の文字列がGROKのパターンに変換されます。
いろいろ考えて現時点で最善の方法で作ってみました。選択状態の取得などにいろいろ問題があって、気がつけば8時間以上パソコンの前に座っていました。今日の開発は、

です。
何とか、これから始まる浦和レッズの試合に間に合いました。

明日に続く




開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。