TwLogEye

AI-Native log server of the TWSNMP series.

View on GitHub

twlogeye

twlogeyeはAIネイティブなログサーバーです。

SIGMAルール

https://github.com/SigmaHQ/sigma

を直接読み込み脅威の検知をすることができます。 MCPサーバーに対応しておりAIがログ分析することを助けます。 WebhookによりAI対応の自動化ツールに通知することができます。 機械学習によりログから異常を検知できます。

対応しているログは

です。

システムの構成は

です。

ログやレポートの保存にGo言語製の高速Key/Value Store Badgerを を使用しているため毎秒数万件のログを数TB単位で保存できます。

Install

Linux/Mac OSの環境では、シェルスクリプトでインストールすることができます。

$curl -sS https://lhx98.linkclub.jp/twise.co.jp/download/install_twlogeye.sh | sh

Linux/Mac OSではHomebrewでもインストールできます。

$brew install twsnmp/tap/twlogeye

Linux版のパッケージもリリースに用意してあります。 https://github.com/twsnmp/twlogeye/releases

Winddowsは、リリースのzipファイルをダウンロードするかscoopでインストールできます。

>scoop bucket add twsnmp https://github.com/twsnmp/scoop-bucket
>scoop install twlogeye

基本的な使い方

~$mkdir logs
~$mkdir sigma
~$code twlogeye.yaml
~$cp <sigma rules> sigma
~$twlogeye start

コマンドの説明

helpコマンドで確認できます。

$twlogeye help
AI-Native log server to monitor threats in logs with sigma rules
Supported logs are
- syslog
- SNMP trap
- NetFlow/IPFIX
- Windows event log
You can find sigma rule here.
https://github.com/SigmaHQ/sigma

Support MCP server and webhook notify for AI

Usage:
  twlogeye [command]

Available Commands:
  clear       Clear DB of twlogeye
  completion  Generate the autocompletion script for the specified shell
  dashboard   Display twlogeye dashboard
  gencert     Generate TLS private key and cert
  help        Help about any command
  log         Search log
  notify      Search notify
  reload      Reload rules
  report      Get report
  sigma       Check sigma rules (list|stat|logsrc|field|check|test)
  start       Start twlogeye
  stop        Stop twlogeye
  version     Show twlogeye version
  watch       Watch notify

Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
  -h, --help                help for twlogeye
      --serverCert string   API server cert
      --serverKey string    API server private key

Use "twlogeye [command] --help" for more information about a command.

ログサーバー

start コマンド

サーバーを起動するコマンドです。

$twlogeye help start

Start twlogeye

Usage:
  twlogeye start [flags]

Flags:
      --anomalyNotifyDelay int         Grace period for sending notifications when detecting anomalies (default 24)
      --anomalyReportThreshold float   anomaly report threshold
      --anomayUseTime                  Include weekends and hours in the vector data for anomaly detection
  -d, --dbPath string                  DB Path default: memory
      --debug                          debug mode
      --grokDef string                 GROK define file
      --grokPat string                 GROK patterns
  -h, --help                           help for start
      --keyValParse                    Splunk Key value parse
  -l, --logPath string                 Log DB Path default: memory old option
      --logRetention int               log retention(hours) (default 48)
      --mcpEndpoint string             MCP server endpoint
      --mcpFrom string                 MCP server from ip address list
      --mcpToekn string                MCP server token
      --mibPath string                 SNMP Ext MIB Path
      --namedCaptures string           Named capture defs path
      --netflowPort int                netflow port 0=disable
      --notifyRetention int            notify retention(days) (default 7)
      --reportInterval int             report interval (minute) (default 5)
      --reportRetention int            report retention(days) (default 7)
      --reportTopN int                 report top n (default 10)
      --sigmaConfigs string            SIGMA config path
      --sigmaRules string              SIGMA rule path
      --sigmaSkipError                 Skip sigma rule error
      --sjis                           Windows eventlog SHIT-JIS mode
      --syslogDst string               syslog dst
      --syslogTCPPort int              syslog TCP port 0=disable
      --syslogUDPPort int              syslog UDP port 0=disable
      --trapCommunity string           SNMP TRAP Community
      --trapDst string                 SNMP TRAP dst
      --trapPort int                   SNMP TRAP recive port 0=disable
      --webhookDst string              Webhook dst URL
      --winAuth string                 Windows eventlog auth
      --winEventLogChannel string      Windows eventlog channel
  -i, --winEventLogCheckInterval int   Windows evnetlog check interval
  -s, --winEventLogCheckStart int      Windows evnetlog check start time (hours)
      --winPassword string             Windows eventlog password
      --winUser string                 Windows eventlog user

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

クライアント

log コマンド

サーバーに保存されたログを検索するためのコマンドです。

$twlogeye help log

Search log via api

Usage:
  twlogeye log [flags]

Flags:
      --end string       end date and time
  -h, --help             help for log
      --logtype string   log type  (default "syslog")
      --search string    search text
      --start string     start date and time

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

notify コマンド

サーバーに保存された通知を検索するコマンドです。

$twlogeye help notify
Serach notify via api

Usage:
  twlogeye notify [flags]

Flags:
      --end string     notify level
  -h, --help           help for notify
      --level string   notify level
      --start string   start date and time

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

watch コマンド

サーバーで発生する通知をリアルタイムで監視するコマンドです。

$twlogeye help watch 
Watch notify via api

Usage:
  twlogeye watch [flags]

Flags:
  -h, --help   help for watch

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

report コマンド

レポートを表示するコマンドです。

$twlogeye help report
Get report via api

Usage:
  twlogeye report <report type> [<anomaly type>] [flags]

Flags:
      --end string     end date and time
  -h, --help           help for report
      --noList         report summary only
      --start string   start date and time

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

dashboard コマンド

ダッシュボードを表示するコマンドです。

$twlogeye help dashboard
Display twlogeye dashboard.
<panel type> is
        monitor | anomaly
  syslog.count | syslog.pattern | syslog.error
  trap.count | trap.type
        netflow.count | netflow.ip.packtet | netflow.ip.byte | netflow.mac.packet | netflow.mac.byte
        netflow.flow.packet | netflow.flow.byte | netflow.fumble | netflow.prot
        winevent.count | winevent.pattern | winevent.error

Usage:
  twlogeye dashboard <panel type>... [flags]

Flags:
  -h, --help          help for dashboard
      --history int   Keep report history (default 100)

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

stop コマンド

サーバーを停止するコマンドです。

$twlogeye help stop
Stop twlogeye via api

Usage:
  twlogeye stop [flags]

Flags:
  -h, --help   help for stop

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

reload コマンド

サーバーにSigmaルールの再読み込みを指示するコマンドです。

$twlogeye help reload
Reload rules via api

Usage:
  twlogeye reload [flags]

Flags:
  -h, --help   help for reload

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert

clear コマンド

データベース上のログ、通知、レポートをクリアするコマンドです。

$twlogeye help clear
Clear DB of twlogeye via api type is "logs","notify","report"

Usage:
  twlogeye clear <type> <subtype> [flags]

Flags:
  -h, --help   help for clear

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

Util

gencert コマンド

サーバーとクライアントのgRPC通信を暗号化するための証明書、秘密鍵を作成するコマンドです。

$twlogeye  help gencert
Generate TLS private key and cert for gRPC server/client

Usage:
  twlogeye gencert [flags]

Flags:
      --cn string   CN for client cert (default "twsnmp")
  -h, --help        help for gencert

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

クライアントは

$twlogeye gencert --clientCert c.crt --clientKey k.key

サーバーは

$twlogeye gencert --serverCert s.crt --serverKey s.key

で作成します。

sigma コマンド

sigmaルールを確認するためのコマンドです。

Check sigma rules (list|stat|logsrc|field|check|test)
	list: list rules
	stat: stat rules
	logsrc: list log srourcese
	field: list fields
	check: check rule
	test: test rule args

Usage:
  twlogeye sigma [flags]

Flags:
  -h, --help                help for sigma
      --sigmaRules string   SIGMA rule path

Global Flags:
  -p, --apiPort int         API Server port (default 8081)
      --apiServer string    server IP or host name (default "localhost")
      --caCert string       API CA cert
      --clientCert string   API client cert
      --clientKey string    API client private key
      --config string       config file (default is ./twlogeye.yaml)
      --serverCert string   API server cert
      --serverKey string    API server private key

MCPサーバー ツールの仕様

mcp.goで定義されているMCPサーバーのツールとそのパラメータについて説明します。

search_log

TwLogEyeからログを検索します。

search_notify

TwLogEyeから通知を検索します。

get_report

TwLogEyeからレポートを取得します。

get_anomaly_report

TwLogEyeから異常検知のレポートを取得します。

get_sigma_evaluator_list

TwLogEyeからSigmaルール評価器のリストを取得します。

get_sigma_rule_id_list

TwLogEyeからSigmaルールのIDリストを取得します。

get_sigma_rule

TwLogEyeから指定したIDのSigmaルールを取得します。

add_sigma_rule

TwLogEyeに新しいSigmaルールを追加します。

delete_sigma_rule

TwLogEyeから指定したIDのSigmaルールを削除します。

reload_sigma_rule

TwLogEyeにロードされているSigmaルールを再読み込みします。

設定ファイル

–config パラメータで指定するか、カレントディレクトリの ./twlogeye.yamlを設定ファイルとして使用します。YAML形式です。

ConfigEnt構造体の設定ファイルについて、日本語で各項目を説明します。


設定ファイル項目一覧

データベースとログのパス

受信ポート設定

Windowsイベントログ設定

転送先設定

データ保持期間設定

レポート設定

異常検知レポート設定

ログ解析 (GROK)

ログ解析 (Named capture)

ログ解析 (Key/Value)

Sigmaルール設定

SNMP MIB設定

MCP (Microsoft Cloud) 設定

デバッグ

環境変数

The following environment variables are available.

Key Descr
TWLOGEYE_APIPORT API ポート番号
TWLOGEYE_APISERVER API サーバーアドレス
TWLOGEYE_SERVERCERT サーバー証明書のパス
TWLOGEYE_SERVERKEY サーバーの秘密鍵のパス
TWLOGEYE_CLIENTCERT クライアント証明書のパス
TWLOGEYE_CLIENTKEY クライアントの秘密鍵のパス
TWLOGEYE_CACERT CA証明書のパス

ビルド方法

ビルドには

https://taskfile.dev/

を利用します。

$task

LICENSEを参照してください。

Copyright 2025 Masayuki Yamai