TWSNMP FC/FKのsFlow対応2日目
今朝は3時ぐらいに、助手の猫さんが起こしていたようですが、起きられませんでした。かみさんがお世話したのかもしれません。昨日、猫さんは暑さのせいか体調不良だったようです。
自力で4時半におきて開発開始です。
昨日、TWSNMP FCにログインできなくなったという問い合わせがありました。新しいデータストアを選択して起動したらログインできたとのことです。原因は、わかりませんがパスワードを忘れてログインできなくなった時にために、パスワードリセット機能をつけようと思いました。以前から考えていたパネルやマップのアイコンをイメージが使えるようにするというアイデアもマインドマップに追加しました。 SimpleMindのチェックボックスや日付挿入の機能も使ってみました。今朝のマインドマップは
のようになりました。資料のWebサイトへのリンクの他に、マインドマップ間のリンクも試して、sFlowの開発は別のマインドマップに詳しく描いてみました。SimpleMind上でクリックすると飛びます。
さて、sFlowの開発の2日目の話をします。
昨日は、新しいほうのGO言語のパッケージを試して、そちらのほうが良いと思っていました。
のsFlowパッケージです。
しかし、vyOSからsFlowを送信してみると認識(デコード)できないレポートが沢山ありました。
受信するソースコードは、
package main
import (
"bytes"
"log"
"net"
"github.com/netsampler/goflow2/v2/decoders/sflow"
)
func main() {
conn, err := net.ListenPacket("udp", ":6343")
if err != nil {
log.Fatalln(err)
}
defer conn.Close()
data := make([]byte, 1500)
for {
l, ra, err := conn.ReadFrom(data)
if err != nil {
log.Fatalln(err)
}
b := bytes.NewBuffer(data[:l])
var p sflow.Packet
if err := sflow.DecodeMessageVersion(b, &p); err != nil {
log.Println(err)
continue
}
log.Printf("ra=%+v, p=%+v", ra, p)
}
}
のような感じです。ルーターのCPUやメモリ使用率などのカウンターが、ことごとく不明なデータになっていました。
試しに9年前から更新されていない
を試してみました。
なんと、かなり多くのサンプルを認識します。こちらのほうが優れています。
どちらのパッケージでも不明となっているサンプルのタイプがあって、vyOS側でどのようなソフトで送信しているか調べると
を使っていることがわかりました。認識しないサンプルは、このソフトのソースコードを読むと破棄したパケットに関するレポートのようです。
Webサイトでいろいろ調べましたが、見つからなかった情報ですが、ソースコードから見つけることができました。
先代の助手の猫が天から
「ソースコードには、間違いも含めて全ての真実が書かれている」
と言っています。
今朝の実験と、このソフトの発見によって、9年間放置されていそうなsFlowのパッケージを自分でメンテナスしようと思いました。
明日に続く