When you rely on cloud-based network monitoring services, you hand over your most sensitive infrastructure data — every connection, every protocol, every anomaly — to a third party. For organizations handling compliance requirements (HIPAA, PCI-DSS, SOC 2) or anyone who values operational privacy, self-hosted network traffic analysis isn’t just an option, it’s a necessity.
Running your own network analysis stack means full visibility into every packet on your infrastructure without data leaving your premises. You control retention policies, detection rules, and access. And with modern open-source tools, you don’t need a dedicated security team to get enterprise-grade network visibility.
This guide covers the three most capable self-hosted network traffic analysis platforms available in 2026: Zeek, Arkime (formerly Moloch), and Ntopng. Each takes a fundamentally different approach to network visibility, and understanding those differences is key to building the right stack for your environment.
Why Self-Host Network Traffic Analysis
Cloud network monitoring platforms like Datadog Network Monitoring, Cisco Umbrella, or ExtraHop charge per-flow pricing models that become prohibitively expensive at scale. A mid-sized infrastructure generating 10,000 flows per second can easily incur thousands of dollars monthly in network telemetry costs alone.
Beyond cost, self-hosting network analysis gives you:
- Full packet capture — Cloud providers typically only store flow metadata (NetFlow/IPFIX). Self-hosted systems can retain actual packet data for forensic investigation.
- No data exfiltration — Sensitive internal traffic patterns, DNS queries, and encrypted TLS metadata never leave your network.
- Custom detection logic — Write bespoke Zeek scripts or Arkime queries tuned to your specific infrastructure rather than relying on vendor-defined rules.
- Unlimited retention — Store packet captures and logs as long as your storage budget allows, with no artificial caps from SaaS providers.
- Compliance alignment — Meet regulatory requirements that mandate on-premises data processing and storage.
Zeek: The Network Security Monitoring Engine
Zeek (formerly Bro) is not a traditional IDS — it’s a network analysis framework that transforms raw packet captures into structured, high-level logs. Rather than simply alerting on known attack signatures, Zeek builds a comprehensive semantic model of everything happening on your network.
Every TCP connection, DNS query, HTTP request, SSL handshake, and file transfer gets extracted into structured logs (TSV or JSON). This makes Zeek ideal for both real-time monitoring and retrospective forensic analysis.
Zeek Architecture
Zeek operates through a modular event engine:
- Packet Capture — Uses libpcap to capture raw packets from a network interface
- Protocol Analyzers — Dozens of built-in analyzers parse protocols (HTTP, DNS, SMTP, SSH, TLS, DHCP, and 40+ more)
- Event Engine — Converts parsed protocol data into discrete events (e.g.,
http_request,dns_request,ssl_established) - Script Interpreter — A purpose-built scripting language reacts to events, generating logs or triggering alerts
- Log Writer — Outputs structured logs to files, Elasticsearch, or other sinks
Installing Zeek via docker
The fastest way to get Zeek running is through the official Docker image:
| |
For a production deployment, you’ll want a proper docker-compose.yml:
| |
Core Zeek Log Files
Once Zeek is running, it generates a structured log file for each protocol:
| Log File | Content |
|---|---|
conn.log | Every TCP/UDP/ICMP connection with duration, bytes, and flags |
dns.log | All DNS queries and responses including resolved IPs |
http.log | HTTP requests with method, URI, status code, user-agent |
ssl.log | TLS handshakes with certificate details, cipher suites, SNI |
files.log | Every file transferred across the network with MIME type and hash |
notice.log | Security-relevant events (scan detection, policy violations) |
weird.log | Protocol anomalies and unexpected network behavior |
Writing Custom Zeek Scripts
Zeek’s scripting language lets you define custom detection logic. Here’s a script that detects potential data exfiltration by monitoring unusually large outbound transfers:
| |
Zeek Cluster Mode for High Traffic
For environments exceeding 1 Gbps of traffic, Zeek supports a clustered deployment:
| |
Arkime: Full Packet Capture and Search
Arkime takes a different approach — it captures and indexes every single packet, then provides a web interface for searching, analyzing, and downloading PCAP data. Think of it as a search engine for your network traffic.
While Zeek extracts high-level semantic data from packets, Arkime preserves the raw packets themselves. This means you can reconstruct exact conversations, download forensic PCAP files, and replay traffic — capabilities that log-only systems cannot provide.
Arkime Architecture
Arkime consists of three components:
- Capture — A packet capture daemon that stores raw PCAP data on disk and extracts session metadata
- Viewer — A web application for searching, viewing, and analyzing captured sessions
- Elasticsearch — The indexing backend for session metadata (Arkime does not store packet data in ES)
Installing Arkime
Arkime provides official packages for major distributions. Here’s the installation process:
| |
The Configure script will prompt you for:
- Elasticsearch URL
- S3 or local storage for PCAP files
- Password hash for the web interface
- Network interface to capture on
Docker Deployment of Arkime
| |
Arkime Configuration Essentials
Key settings in /opt/arkime/etc/config.ini:
| |
Arkime Search and Analysis
The Arkime web interface (port 8005) provides powerful search capabilities:
- Sessions View — Filter by IP, port, protocol, bytes, duration
- SPI View — Search extracted protocol data (DNS names, HTTP URIs, TLS certs)
- Hunts — Run regex searches across raw packet payloads
- Stats — Visualize traffic patterns by protocol, country, or time
Example Arkime query syntax:
| |
Ntopng: Real-Time Network Flow Analysis
Ntopng focuses on real-time network flow monitoring with a rich web interface. It uses nDPI (deep packet inspection) to classify traffic by application protocol and provides flow-level analytics without the storage overhead of full packet capture.
Where Arkime stores every packet and Zeek generates detailed protocol logs, Ntopng aggregates traffic into flows and provides real-time dashboards, historical charts, and alerting — making it the most operationally accessible of the three.
Ntopng Architecture
- nProbe (optional) — NetFlow/IPFIX probe that exports flow data from network devices
- ntopng — Core daemon that receives flows, performs DPI, and serredishe web interface
- Redis — In-memory data store for active flows and real-time statistics
- n2disk (optional) — Companion tool for packet-to-disk recording
Installing Ntopng via Docker
| |
Docker Compose for Production Ntopng
| |
Ntopng Configuration File
For deployments beyond Docker, configure /etc/ntopng/ntopng.conf:
| |
nDPI Protocol Classification
Ntopng’s deep packet inspection engine (nDPI) classifies traffic into 300+ application protocols. This is its standout feature — you don’t just see “TCP port 443,” you see “Netflix,” “Zoom,” “Tor,” or “Bitcoin”:
| |
Head-to-Head Comparison
| Feature | Zeek | Arkime | Ntopng |
|---|---|---|---|
| Primary purpose | Network analysis & security monitoring | Full packet capture & search | Real-time flow monitoring & DPI |
| Packet capture | Optional (via Zeek’s pcap) | Yes, with searchable PCAP | Via n2disk companion |
| Storage model | Structured text/JSON logs | PCAP files + Elasticsearch metadata | Redis (active) + disk (historical) |
| Protocol analyzers | 40+ built-in analyzers | nDPI + custom dissectors | nDPI (300+ protocols) |
| Search interface | Command-line / Kibana | Built-in web UI (Sessions, SPI, Hunts) | Built-in web UI (dashboards, charts) |
| Custom detection | Zeek scripting language | Custom fields + Lua plugins | Custom alerts + Lua scripts |
| Cluster support | Yes (manager/worker/proxy) | Yes (multi-capture with shared ES) | Yes (via nProbe exporters) |
| Resource usage | Moderate (CPU-intensive for DPI) | High (disk-heavy for PCAP storage) | Low to moderate |
| Best for | Security analysts, forensic investigators | SOC teams, compliance, forensics | Network engineers, capacity planning |
| Learning curve | Steep (scripting language) | Moderate (query language) | Low (point-and-click UI) |
| License | BSD | Apache 2.0 | GPLv3 |
Choosing the Right Tool
Use Zeek when:
- You need structured, queryable logs for every network protocol
- You want to write custom detection logic for your specific environment
- You’re building a security operations pipeline with SIEM integration
- You need to detect network anomalies that don’t match known signatures
- Your team has the expertise to write and maintain Zeek scripts
Zeek’s structured logs integrate beautifully with Elasticsearch, Splunk, or any SIEM. The conn.log alone is one of the most valuable data sources in security operations — it tells you every single connection that occurred on your network, with timing, volume, and protocol metadata.
Use Arkime when:
- You need to retain actual packet data for forensic investigation
- Compliance requirements mandate packet-level evidence
- You need to search historical traffic with flexible query syntax
- You want the ability to download PCAP files for external analysis
- You need to answer “what exactly was in that packet?”
Arkime fills the gap between flow-level monitoring and full PCAP storage solutions. You can keep the raw packets for compliance or investigation while using Elasticsearch for fast metadata searches. The ability to hunt across raw packet payloads with regex makes Arkime invaluable for incident response.
Use Ntopng when:
- You want immediate visibility into network traffic with zero configuration
- Application-level traffic classification (what apps are using bandwidth?) is your priority
- You need real-time dashboards for network capacity planning
- You want to identify bandwidth hogs and unauthorized applications
- You prefer a GUI over command-line tools
Ntopng excels at answering operational questions: “Why is the network slow?” “Which host is generating the most traffic?” “What applications are consuming bandwidth right now?” The nDPI classification means you see application names, not just port numbers.
Combined Stack: Best of All Three
For maximum network visibility, many organizations deploy all three tools in complementary roles:
| |
In this architecture:
- Zeek feeds structured logs to Elasticsearch for SIEM integration
- Arkime retains raw PCAPs for forensic investigation
- Ntopng provides real-time operational dashboards for network engineers
- Kibana unifies Zeek logs and Arkime metadata in a single view
Practical Deployment Tips
Network Interface Selection
| |
Storage Planning
| |
Traffic Sampling for High-Speed Links
If you’re monitoring 10 Gbps+ links and can’t capture everything:
| |
Alerts and Notifications
Configure Ntopng alerts for common security events:
| |
Conclusion
Zeek, Arkime, and Ntopng represent three complementary approaches to self-hosted network visibility. Zeek gives you semantic analysis and custom detection. Arkime gives you forensic-grade packet retention and search. Ntopng gives you real-time operational awareness with minimal setup.
The right choice depends on what questions you need to answer. If you need to know “what happened on my network last week,” Zeek’s structured logs are invaluable. If you need to prove “what exactly was in that suspicious packet,” Arkime’s PCAP search is essential. If you need to know “why is the network slow right now,” Ntopng’s real-time dashboards are the answer.
Deploying all three together — with shared Elasticsearch indexing — provides complete network visibility from real-time monitoring through forensic investigation, all self-hosted, all open-source, and fully under your control.
Frequently Asked Questions (FAQ)
Which one should I choose in 2026?
The best choice depends on your specific requirements:
- For beginners: Start with the simplest option that covers your core use case
- For production: Choose the solution with the most active community and documentation
- For teams: Look for collaboration features and user management
- For privacy: Prefer fully open-source, self-hosted options with no telemetry
Refer to the comparison table above for detailed feature breakdowns.
Can I migrate between these tools?
Most tools support data import/export. Always:
- Backup your current data
- Test the migration on a staging environment
- Check official migration guides in the documentation
Are there free versions available?
All tools in this guide offer free, open-source editions. Some also provide paid plans with additional features, priority support, or managed hosting.
How do I get started?
- Review the comparison table to identify your requirements
- Visit the official documentation (links provided above)
- Start with a Docker Compose setup for easy testing
- Join the community forums for troubleshooting