High-throughput NetFlow v9 collector with a multi-threaded processing pipeline.
- UDP ingest on configured NetFlow port
- Bounded processing queue + worker pool (
processing.workerThreads) - Multi-threaded decode directly into
IPFlowMetricsrows - Async DB writer queue + batch inserts into
IPFlowMetricsevery 500ms (default)
The app auto-generates config/netflowmonitor.config.json on first start.
{
"netflowPort": 2055,
"database": {
"enabled": false,
"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/ignite?useSSL=false&serverTimezone=UTC",
"username": "root",
"password": "change-me",
"poolSize": 10,
"batchSize": 500,
"databaseQueueCapacity": 20000,
"flushIntervalMs": 500
},
"processing": {
"workerThreads": 8,
"processingQueueCapacity": 10000
}
}No per-flow console output. The process is optimized for ingest/convert/insert only.
Run gg.zema.elizon.netflowmonitor.SFlowMonitor.
- Backpressure is explicit: both processing and DB queues are bounded.
- Dropped flow counters are logged on shutdown when queues saturate.
- DB writes use HikariCP and JDBC batching for throughput.
- Rows are flushed to MySQL in batches every 500ms by default (or earlier if the batch size limit is reached).
ORIGINAL com.lumaserv.netflow CODE IS OWNED BY https://github.com/LUMASERV/netflow-java AND IS LICENSED UNDER APACHE 2.0