見出し画像

TWSNMPのログ/Netflow受信対応

SNMPの限界

TWSNMPマネージャを開発した時、目的の一つとして、SNMPを世の中に広めたいと思ってっていました。でも、何年か前からSNMPによる監視には限界を感じていました。ネットワークに接続される機器で、SNMPに対応していないものが圧倒的に多いからです。ほとんどの機器から情報がとれないということです。困ったことです。では、どうするか?

ログの可能性

ネットワークに接続する、ほとんどの機器(コンピュータ)は、何らかのログを記録しています。その機器自体のログを取得できなくても他の機器のログに何らかの痕跡が残ります。私は、この何年かは、ログ分析に興味をもっています。ログは情報の宝庫で、分析することで思ってもみない発見があります。例えば、

・誰かが、新しいスマフォを買った。
・誰かが、ポケットWifiで会社で使っている。
・転職サイトをみている人がいる。
・誰かが、海外旅行中に仕事した。

が、ログから分析できるのです。怖いことです。
オリジナルのTWSNMPマネージャにもSyslogを受信する機能がありました。でも、今の時代のログの量には、耐えられない貧弱な機能でした。

Syslogの受信

復刻版のTWSNMPでは、たくさんのログを高速分析したので、GO言語でSyslogを受信したいと思い探したらいいものがありました。

https://github.com/mcuadros/go-syslog

channel := make(syslog.LogPartsChannel)
handler := syslog.NewChannelHandler(channel)
server := syslog.NewServer()
server.SetFormat(syslog.RFC5424)
server.SetHandler(handler)
server.ListenUDP("0.0.0.0:514")
server.Boot()
go func(channel syslog.LogPartsChannel) {
   for logParts := range channel {
       fmt.Println(logParts)
   }
}(channel)
server.Wait()

このぐらいのコードで、受信できます。ありがたいことです。受信したログを前に書いたデータ保存場所、

に保存できるようにしました。高速に検索できるかは、これから試してみますが、ちょっと楽しみです。

NetFlowも対応したい

TWSNMPとは別にTWFlowというsFlow/NetFlowに対応したソフトも作っていました。このソフト自体は、それほど、普及しませんでしたが、NetFlowは、当時からセキュリティーなどの目的で普及すると思っていました。実際、最近のファイヤーウォールなどのネットワーク機器は、NetFlow対応になっています。去年、読んで、すごく勉強になった

という本でも、NetFlowが役にたつと言っているので、復刻版では対応したいと思って、またまた、探しました。単独で動作するソフトウェアになっているものもありましたが、ライブラリとして使えるので、

で、実装してみようと思っています。テスト実装では、いい感じです。

つづく

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