見出し画像

TWSNMP FC v1.36.0リリース

TWSNMP FCv1.36.0をリリースしました。19日朝の時点でMicrosoft Storeは承認されいました。

今回の対応内容は

ポーリング結果をゲージなどで表示する機能追加

描画アイテムのアイテムタイプを増やしました。

  • ポーリング結果(新ゲージ)

  • ポーリング結果(バー)

  • ポーリング結果(ライン)

です。

のように表示されます。ラインはポーリングのログを記録しないと表示されません。

SSHサーバー対応

Fluentbitと連携してログの転送を行うためにSSHサーバー機能を追加しました。ポート番号は2222固定です。
マップ設定で有効にできます。

アクセスを許可するホストの公開鍵を下の<許可するSSH公開鍵>ボタンから表示されるダイアログで登録してください。
接続して以下のコマンドに対応しています。

  • get <syslog|eventlog|arplog|netflow|ipfix|node|polling|ai> [開始時刻] [件数]

  • put syslog [facility] [severity] [host]

開始時刻はnano sec単位のUnixタイムです。
putの場合、以下のデータを送ってください。
日時\tTag\tメッセージ
の形式です。

$ssh -p 2222 twsnmp@twsnmp get syslog 0 100

$cat log.txt | ssh -p 2222 twsnmp@twsnmp put syslog 

のような感じです。

syslog、SNMP TRAPログからポーリング作成

ログの右端にポーリングを登録するボタンを追加しました。

ボタンをクリックすると登録のためのダイアログが表示されます。

TRAPも同じように登録できます。

syslogから情報を抽出する機能の改善

GROKの登録を行わなくても自動で抽出する機能を追加しました。

  • SPLUNK風:key=valのような形式

  • 自動数値:とりあえず数値ぽいものを順番に取得

  • JSON:JSONでパースできるものを取得

  • 自動(IP,MAC,EMail):IPアドレス、MACアドレス、EMailぽいものを自動で取得

syslog,TRAPログのポーリングで送信元を指定する機能

フィルターに正規表現で送信元をIPを指定しなくても、パラメーター欄で指定できるようにしました。

正規表現でなくてもよいです。
syslogも同じです。

Fluentbitのプラグインを同梱

TWSNMP FCSSHサーバーに接続してログの送受信を行うFluentbitのプラグインを同梱しました。Mac OS,Windows,Linux(amd64,arm)に対応しています。

in_twsnmp

TWSNMP FCからログを取得するプラグインです。
パラメータは

  • twsnmp: 送信先 例: 192.168.1.250:2222

  • private_key:秘密鍵ファイルのパスを指定

  • host_key:接続先TWSNMPのSSH公開鍵のパスを指定、指定ない場合は初回接続から鍵が変わらなければ許可します。

  • log_type:取得するログのタイプです。(syslog,trap,eventlog,arplog)

です。
in_twsnmp.yaml

service:
  plugins_file: ./in_twsnmp.conf

pipeline:
    inputs:
        - name: twsnmp
          log_type: syslog
          twsnmp: 127.0.0.1:2222
          private_key: ~/.ssh/id_rsa
    outputs:
        - name: stdout

in_twsnmp.conf

[PLUGINS]
    Path ../in_twsnmp/in_twsnmp.darwin.so

のように設定して

fluent-bit -c in_twnmp.yaml

とすれば動作します。

out_twsnmp

TWSNMP FCのsyslogへFluentbitのログを送信するプラグインです。

パラメータは

  • twsnmp: 送信先 例: 192.168.1.250:2222

  • private_key:秘密鍵ファイルのパスを指定

  • host_key:接続先TWSNMPのSSH公開鍵のパスを指定、指定ない場合は初回接続から鍵が変わらなければ許可します。

  • facility:送信するsyslogのfacilityです。デフォルトは21です。

  • severity:送信するsyslogのseverityです。デフォルトは6(info)です。

  • id:プラグインを識別するIDです。

です。

out_twsnmp.yaml

service:
  plugins_file: ./out_twsnmp.conf

pipeline:
    outputs:
        - name: twsnmp
          id: test1
          twsnmp: 127.0.0.1:2222
          private_key: ~/.ssh/id_rsa
    inputs:
        - name: dummy

out_twsnmp.conf

[PLUGINS]
    Path ../out_twsnmp/out_twsnmp.darwin.so

と設定して

$fluent-bit -c out_twsnmp

で動作するはずです。

in_gopsutil

おまけですが、CPU使用率などの情報を取得するプラグインです。

パラメータは

  • collection: 収集する情報(cpu.percent,cpu.percent.percpuなど)

  • disk_pah: disk.usgaeの場合のディスクのパスを指定します。

service:
  plugins_file: ./in_gopsutil.conf

pipeline:
    inputs:
        - name: gopsutil
          collection: disk.usage
          tag:  disk.usage.root
    outputs:
        - name: stdout

のように設定します。

収集するデータは

  • cpu.percent:全CPUの使用率

  • cpu.percent.percpu:コア単位の使用率

  • cpu.times:CPUの使用時間

  • mem.vm:メモリーの使用量

  • mem.swap:SWAPメモリーの使用量

  • host.info:ホスト情報、稼働時間などがある

  • host.temp:測定可能な温度(CPU温度など)

  • load.avg:負荷

  • disk.usage:ディスク使用量

です。gopsutilとの関係は

	switch collection {
	case "cpu.percent.percpu":
		entry = append(entry, getCPUPercent(true))
	case "cpu.percent":
		entry = append(entry, getCPUPercent(false))
	case "cpu.times":
		if d, err := cpu.Times(false); err == nil && len(d) == 1 {
			entry = append(entry, d[0])
		}
	case "mem.vm":
		if d, err := mem.VirtualMemory(); err == nil {
			entry = append(entry, d)
		}
	case "mem.swap":
		if d, err := mem.SwapMemory(); err == nil {
			entry = append(entry, d)
		}
	case "host.info":
		if d, err := host.Info(); err == nil {
			entry = append(entry, d)
		}
	case "host.temp":
		entry = append(entry, getSensorTemp())
	case "load.avg":
		if d, err := load.Avg(); err == nil {
			entry = append(entry, d)
		}
	case "disk.usage":
		if d, err := disk.Usage(diskPath); err == nil {
			entry = append(entry, d)
		}
	default:
		log.Println("unknown collection")
		return input.FLB_ERROR
	}

を参考にしてください。

その他

  • 正規表現を入力する場所をハイライト対応

  • 定期レポートのリストをソート、停止のセンサーを除外

  • バグ修正

  • brain.jsを廃止してsyslogのAIアシストを削除



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