TwLogEye

AI-Native log server of the TWSNMP series.

View on GitHub

twlogeye

操作イメージ

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

SIGMAルール

https://github.com/SigmaHQ/sigma

を直接読み込み脅威の検知をすることができます。標準で Windows / Linux / ネットワーク機器 / Web 攻撃に対応した組み込みルールパックを備えており、簡単な設定ですぐに運用開始できます。 MCPサーバーに対応しておりAIがログ分析することを助けます。 WebhookによりAI対応の自動化ツールに通知することができます。 機械学習によりログから異常を検知できます。

対応しているログは

です。

システムの構成は

です。

ログやレポートの保存にGo言語製の高速Key/Value Store Badgerおよび ビッグデータ向け列指向フォーマットParquetに対応しているため、 毎秒数万件のログを数TB単位で効率的に保存・集計できます。

Install

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

$curl -sS https://raw.githubusercontent.com/twsnmp/twlogeye/main/install/install.sh | sh

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

$brew install twsnmp/tap/twlogeye

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

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

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

Docker

GitHub ActionsによりビルドされたコンテナイメージはGitHub Container Registry (GHCR) で公開されています。

起動方法

$mkdir ./twlogeye
$vi ./twlogeye/config.yaml # 設定ファイルの編集
$docker run --rm -v ./twlogeye:/datastore \
-p 2055:2055/udp -p 514:514/udp -p 162:162/udp -p 1883:1883 \
-e TZ=Asia/Tokyo \
ghcr.io/twsnmp/twlogeye:latest

特定のバージョンを指定して起動する場合は、以下のようにタグ名を指定します:

$docker run --rm -v ./twlogeye:/datastore \
-p 2055:2055/udp -p 514:514/udp -p 162:162/udp -p 1883:1883 \
-e TZ=Asia/Tokyo \
ghcr.io/twsnmp/twlogeye:v0.7.0

config.yamlを編集してください。

ダッシュボードの表示

$docker exec -it <コンテナID> /twlogeye dashboard \
monitor anomaly netflow.count mqtt.count

Dashboard

基本的な使い方

操作イメージ

~$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
- OpenTelemetry
- MQTT
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
  mcp         Run MCP server via stdio
  notify      Search notify
  otel        Get OpenTelemetry info
  reload      Reload rules
  report      Get report
  service     Manage twlogeye as a Windows service
  sigma       Check sigma rules (list|stat|logsrc|field|check|test)
  start       Start twlogeye
  stop        Stop twlogeye
  update      Update twlogeye to the latest or specified version
  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:
      --anomalyAlgo string             Anomaly detection algorithm (iforest|autoencoder|lstm|lof|knn|mahalanobis|zscore) (default "iforest")
      --anomalyNotifyDelay int         Grace period for sending notifications when detecting anomalies (default 24)
      --anomalyReportThreshold float   anomaly report threshold
      --anomalyUseTime                 Include weekends and hours in the vector data for anomaly detection
  -d, --dbPath string                  DB Path (.badger, .parquet) default: memory
      --debug                          debug mode
      --geoIPDB string                 Geo IP Database Path
      --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 (.badger, .parquet) default: dbPath
      --logRetention int               log retention(hours) (default 48)
      --logRetentionDays int           log retention(days)
      --mcpEndpoint string             MCP server endpoint
      --mcpFrom string                 MCP server from ip address list
      --mcpToken string                MCP server token
      --mibPath string                 SNMP Ext MIB Path
      --mqttCert string                MQTT server certificate
      --mqttFrom string                MQTT client IPs
      --mqttKey string                 MQTT server private key
      --mqttTCPPort int                MQTT TCP Port
      --mqttUsers string               MQTT user and password
      --mqttWSPort int                 MQTT Websock Port
      --namedCaptures string           Named capture defs path
      --netflowPort int                netflow port 0=disable
      --notifyRetention int            notify retention(days) (default 7)
      --otelCA string                  OpenTelemetry CA certificate
      --otelCert string                OpenTelemetry server certificate
      --otelFrom string                OpenTelemetry client IPs
      --otelHTTPPort int               OpenTelemetry HTTP Port
      --otelKey string                 OpenTelemetry server private key
      --otelRetention int              log retention(hours) (default 48)
      --otelgRPCPort int               OpenTelemetry gRPC Port
      --parquetBufferSize int          Parquet log buffer size (default 10000)
      --parquetBufferTime int          Parquet log buffer flush interval (seconds) (default 60)
      --reportInterval int             report interval (minute) (default 5)
      --reportRetention int            report retention(days) (default 7)
      --reportTopN int                 report top n (default 10)
      --resolveHostName                Resolve Host Name
      --sigmaConfigs string            SIGMA config path
      --sigmaRules string              SIGMA rule path
      --sigmaSkipError                 Skip sigma rule error
      --sjis                           Windows eventlog SHIFT-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 receive port 0=disable
      --webhookDst string              Webhook dst URL
      --winAuth string                 Windows eventlog auth
      --winEventLogChannel string      Windows eventlog channel
  -i, --winEventLogCheckInterval int   Windows eventlog check interval
  -s, --winEventLogCheckStart int      Windows eventlog 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
Search 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.packet | netflow.ip.byte | netflow.mac.packet | netflow.mac.byte
  netflow.flow.packet | netflow.flow.byte | netflow.fumble | netflow.prot
  netflow.host | netflow.loc | netflow.country
  winevent.count | winevent.pattern | winevent.error
  otel.count | otel.pattern | otel.error | otel.metric.<id>
  mqtt.count | mqtt.type

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

Flags:
  -h, --help          help for dashboard
      --history int   Keep report history (default 100)
      --topn int      Number of top n lines. (default 5)

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

otel コマンド

OpenTelemetryのメトリック、トレースを取得するコマンドです。

$twlogeye help otel
Get OpenTelemetry info via api

Usage:
  twlogeye otel <metric|trace> <list|id> [flags]

Flags:
  -h, --help   help for otel

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

service コマンド (Windows専用)

Windows環境で twlogeye をバックグラウンドサービス(Windows Service)として登録・管理するためのコマンドです。 管理者権限のコマンドプロンプトまたはPowerShellで実行します。

>twlogeye help service
Manage twlogeye as a Windows service (install, remove, start, stop, status).

Usage:
  twlogeye service [command]

Available Commands:
  install     Install twlogeye as a Windows service
  remove      Remove twlogeye Windows service
  start       Start twlogeye Windows service
  status      Show status of twlogeye Windows service
  stop        Stop twlogeye Windows service

Flags:
  -h, --help          help for service
      --name string   Service name (default "twlogeye")
サービスのインストール
# デフォルト設定でインストール(自動起動)
>twlogeye service install

# 設定ファイルパスを指定してインストール
>twlogeye service install --config C:\twlogeye\twlogeye.yaml
サービスの開始・停止・状態確認
>twlogeye service start
>twlogeye service status
>twlogeye service stop
サービスの削除
>twlogeye service remove

Note: Windowsの標準コマンド(sc.exe)やPowerShell(New-Service)、サービス管理ツール(services.msc)からも直接管理可能です。SCMから起動された場合は自動的にサービスモードで動作し、作業ディレクトリも実行ファイル配置場所に自動設定されます。また、サービスの起動・停止ログはWindowsイベントログ(「Windowsログ > アプリケーション」)に記録されます。

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

update コマンド

GitHubのリリースページから最新版(または指定したバージョン)をダウンロードして自身を更新するコマンドです。

$twlogeye help update
Update twlogeye to the latest or specified version from GitHub releases.

Usage:
  twlogeye update [flags]

Flags:
  -c, --check             Check for updates only
  -h, --help              help for update
      --version string    Update to specified version
  -y, --yes               Update without confirmation

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

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ルールや組み込みルールパックの確認、およびWazuhルールの変換を行うためのコマンドです。

Check sigma rules (list|packs|stat|logsrc|field|check|test|convert-wazuh)
	list: list rules
	packs: list available embedded rule packs
	stat: stat rules
	logsrc: list log sources
	field: list fields
	check: check rule
	test: test rule args
	convert-wazuh: convert Wazuh rules XML to Sigma YAML
	convert-wazuh-decoder: convert Wazuh decoders XML to named-capture regex patterns

Usage:
  twlogeye sigma [flags]
  twlogeye sigma [command]

Available Commands:
  convert-wazuh         Convert Wazuh XML rules to Sigma YAML rules
  convert-wazuh-decoder Convert Wazuh XML decoders to named-capture regex patterns

Flags:
      --custom               Filter custom (file/db) rules only
  -h, --help                 help for sigma
      --pack string          Filter rules by pack name
      --sigmaPacks strings   SIGMA rule packs (e.g. windows-essential,linux-auth)
      --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

主な利用例:

# 利用可能な組み込みルールパック一覧の表示
$ twlogeye sigma packs

# 指定したルールパックを有効にしてルール一覧を表示
$ twlogeye sigma list --sigmaPacks windows-essential,linux-auth

# 特定のルールパックのみを絞り込み表示
$ twlogeye sigma list --sigmaPacks windows-essential,linux-auth --pack linux-auth

# Wazuh XMLルールをSigma YAMLルールに変換
$ twlogeye sigma convert-wazuh -o ./converted-rules ./ruleset/rules/0095-sshd_rules.xml

# Wazuh XMLデコーダーをNamedCaptures用正規表現パターンに変換
$ twlogeye sigma convert-wazuh-decoder -o ./patterns ./decoders/0310-ssh_decoders.xml

MCP (Model Context Protocol) サーバー

TwLogEyeはMCPサーバー機能を備えており、Claude DesktopやCursor、AIエージェントなどのLLMクライアントと連携してログ分析やインシデント調査を行うことができます。

接続方法

1. stdioモード (Claude Desktop / Cursor等でのローカル連携)

twlogeye mcp コマンドで標準入出力 (stdio) 経由のMCPサーバーを起動できます。

Claude Desktopの設定例 (claude_desktop_config.json):

{
  "mcpServers": {
    "twlogeye": {
      "command": "twlogeye",
      "args": ["mcp"]
    }
  }
}

2. HTTPモード (リモート / Web連携)

設定ファイルで mcpEndpoint (例: 0.0.0.0:8080) を指定すると、/mcp エンドポイントでHTTP (SSE/Streamable HTTP) 経由の待ち受けを行います。 mcpToken が設定されている場合は、Authorization: Bearer <トークン> による認証が必要です。


MCPサーバー ツールの仕様

search_log

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

search_notify

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

investigate_ip

指定したIPアドレスに関するGeoIP情報、DNS逆引きホスト名、および関連するログ・通知を集約調査します。

test_sigma_rule

作成したSigmaルールYAMLを過去ログに対してシミュレーション評価(バックテスト)し、マッチ件数とマッチしたログのサンプルを取得します。

get_otel_trace

指定したTrace IDのOpenTelemetryトレース詳細(スパンツリー)を取得します。

get_otel_metric

指定したMetric ID/KeyのOpenTelemetryメトリクス詳細を取得します。

get_report

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

get_anomaly_report

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

get_last_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

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

reload_sigma_rule

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

get_sigma_packs

利用可能な組み込みSigmaルールパックの一覧、または指定したパック内のルール一覧を取得します。

convert_wazuh_rules

WazuhのXMLルールを階層依存関係(if_sid, if_matched_sid)および相関分析属性(frequency, timeframe)を含めてSigma YAMLルールに変換します。

convert_and_add_wazuh_rule

WazuhのXMLルールをSigma YAMLルールに変換し、直接TwLogEyeのSigmaルールデータベースへ追加・自動再読み込みを行います。

convert_wazuh_decoder

WazuhのXMLデコーダーをTwLogEyeの名前付き正規表現抽出パターンに変換します。


MCP Resources (リソース)

MCPクライアントから以下のURIでリソースを直接参照できます:


MCP Prompts (プロンプト)

設定ファイル

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

コア設定


受信データポート


OpenTelemetry設定


MQTTサーバー設定


Windowsイベントログ収集


転送先設定


データ保持期間


レポート設定


異常検知


ログ解析


Sigmaルール


その他の設定

環境変数

以下の環境変数が利用可能です。

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 - 2026  Masayuki Yamai