ログ分析のためにTF-IDFパッケージを使う練習 その2
今朝は5時半から開発開始です。
昨日から始めたTF-IDFパッケージを使う練習の続きです。
ログの数が多い時に計算した結果がおかしくなる問題は、TF-IDFパッケージの処理にバグがありました。ログの数の問題ではなくログに同じ行があると読み込みを終了してまう問題でした。たまたま、テストしたログが
Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
のような感じで最初の3行がまったく同じでした。
パッケージのソースを見ると
のように間違っていました。同じ行を見つけた瞬間に読み込みを終了しています。スキップして継続するようにしました。
この問題を修正すると、大量のログの中から稀なログを見つけることができるようになりました。
かなり楽しくなってなってきて、パッケージのコマンドを追加することにしました。
例えば、
Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
Jun 3 07:13:57 minipc gravwell_simple_relay[550]: <14>1 2023-06-03T07:13:57.057382+09:00 minipc simplerelay - ingest/muxer.go:1394 [gw@1 indexer="pipe:///opt/gravwell/comms/pipe" ingester="simplerelay" ingesteruuid="cd6c92b5-8fdb-4b84-a87f-1cab42c0033e"] initializing connection
Jun 3 07:13:57 minipc gravwell_simple_relay[550]: <12>1 2023-06-03T07:13:57.05767+09:00 minipc simplerelay - ingest/muxer.go:1402 [gw@1 indexer="pipe:///opt/gravwell/comms/pipe" ingester="simplerelay" ingesteruuid="cd6c92b5-8fdb-4b84-a87f-1cab42c0033e" error="dial unix /opt/gravwell/comms/pipe: connect: no such file or directory"] connection error
Jun 3 07:14:01 minipc CRON[10234]: (root) CMD (/usr/sbin/mon.sh)
Jun 3 07:14:01 minipc memmon: Mem: 7987020 743760 171064 465844 7072196 6467548
Jun 3 07:14:01 minipc loadmon: 07:14:01 up 209 days, 23:56, 1 user, load average: 0.99, 0.91, 0.92
Jun 3 07:14:07 minipc gravwell_simple_relay[550]: <14>1 2023-06-03T07:14:07.061471+09:00 minipc simplerelay - ingest/muxer.go:1394 [gw@1 indexer="pipe:///opt/gravwell/comms/pipe" ingester="simplerelay" ingesteruuid="cd6c92b5-8fdb-4b84-a87f-1cab42c0033e"] initializing connection
Jun 3 07:14:07 minipc gravwell_simple_relay[550]: <12>1 2023-06-03T07:14:07.061758+09:00 minipc simplerelay - ingest/muxer.go:1402 [gw@1 indexer="pipe:///opt/gravwell/comms/pipe" ingester="simplerelay" ingesteruuid="cd6c92b5-8fdb-4b84-a87f-1cab42c0033e" error="dial unix /opt/gravwell/comms/pipe: connect: no such file or directory"] connection error
Jun 3 07:14:17 minipc gravwell_simple_relay[550]: <14>1 2023-06-03T07:14:17.065364+09:00 minipc simplerelay - ingest/muxer.go:1394 [gw@1 indexer="pipe:///opt/gravwell/comms/pipe" ingester="simplerelay" ingesteruuid="cd6c92b5-8fdb-4b84-a87f-1cab42c0033e"] initializing connection
Jun 3 07:14:17 minipc gravwell_simple_relay[550]: <12>1 2023-06-03T07:14:17.065608+09:00 minipc simplerelay - ingest/muxer.go:1402 [gw@1 indexer="pipe:///opt/gravwell/comms/pipe" ingester="simplerelay" ingesteruuid="cd6c92b5-8fdb-4b84-a87f-1cab42c0033e" error="dial unix /opt/gravwell/comms/pipe: connect: no such file or directory"] connection error
Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:65404->[192.168.1.210]:161
Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:64336->[192.168.1.210]:161
Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:57419->[192.168.1.210]:161
Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:65404->[192.168.1.210]:161
Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:65404->[192.168.1.210]:161
Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:57419->[192.168.1.210]:161
Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:65404->[192.168.1.210]:161
Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
のようなログを対象に実行すると
Score Log
1.767 Jun 3 07:14:01 minipc loadmon: 07:14:01 up 209 days, 23:56, 1 user, load average: 0.99, 0.91, 0.92
1.730 Jun 3 07:14:01 minipc memmon: Mem: 7987020 743760 171064 465844 7072196 6467548
1.622 Jun 3 07:14:01 minipc CRON[10234]: (root) CMD (/usr/sbin/mon.sh)
1.110 Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
1.110 Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
1.110 Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
1.110 Jun 3 07:13:48 minipc snmpd[23595]: Connection from UDP: [192.168.1.4]:57885->[192.168.1.210]:161
1.041 Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:65404->[192.168.1.210]:161
1.041 Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:65404->[192.168.1.210]:161
1.041 Jun 3 07:14:22 minipc snmpd[23595]: Connection from UDP: [192.168.1.250]:64336->[192.168.1.210]:161
のように稀なログ(同じようなログがないもの)の順番に出力します。
何日か前に、本業で悪銭苦闘した150MBちかいログで試してみました。
かなりいい感でエラーログが上位の表示されました。いつもと違うログを見つけてくれたのです。
欲がでてきてコマンド版には、
正規表現でフィルターする機能
ログ専用の単語分割する機能
ログ専用の単語分割ではタイムスタンプを削除する機能
をつけています。
もう少しテストしてコマンド版を公開します。ご期待ください。
その後GUI版のログ分析ツールに組み込むつもりです。
明日に続く
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。