Wazuh took OSSEC and gave it the storage, search and interface it never had. That solved a real problem and introduced a different one. This page covers how Wazuh handles logs, what the components underneath cost to operate, and where a hosted platform fits alongside it.
Wazuh is a fork of OSSEC, started in 2015, now developed by a company of the same name. It kept the OSSEC architecture, a manager receiving events from agents and applying decoders and rules, and built substantially on top: a REST API, a much larger rule set, vulnerability detection, security configuration assessment, MITRE ATT&CK mapping, cloud service integrations, and a web interface people use.
Some context on where we are standing. Trunc was founded by the author of OSSEC, so Wazuh and Trunc share an ancestor several generations back. We think Wazuh is a good product and this page is not an argument against running it. It is an argument about which part of the problem you want to own.
A Wazuh deployment is three separate services, and the naming obscures what two of them are.
| Component | What it is |
|---|---|
| Wazuh server | The manager. Receives events from agents, runs them through decoders and rules, generates alerts. This is the OSSEC lineage and the part that does the security thinking. |
| Wazuh indexer | A fork of OpenSearch, which is itself a fork of Elasticsearch. This is where alerts are stored and searched, and it is a full search cluster with all that implies: JVM heap, shards, replicas, index lifecycle policies, and a preference for at least three nodes in production. |
| Wazuh dashboard | A fork of OpenSearch Dashboards, which is a fork of Kibana, with a Wazuh application layered on it. Unlike plain Kibana it arrives with dashboards already built for the Wazuh data, which is a genuine improvement. |
If you have read our page on the ELK Stack, the second and third rows will look familiar. Running Wazuh means running a search cluster, whether or not you think of it that way, and the operational characteristics are those of Elasticsearch because that is what it is.
Agents collect from files, Windows event channels, journald, command output and various cloud APIs, and forward to the manager. The manager decodes and applies rules, and matching events become alerts written into the indexer.
The important detail is the same one that applies to OSSEC: by default, only alerts are stored. An event that matches no rule is evaluated and dropped. Wazuh has an archives option that keeps everything, written to archives.json and optionally indexed, and this is where the cost question starts.
Indexing all archives rather than just alerts multiplies your ingest volume by a large factor, because the ratio of routine events to alertable ones is heavily weighted towards routine. That means more indexer nodes, more disk, more shards to manage, and a retention policy that has to reconcile "keep twelve months for the auditor" with "keep the cluster healthy". Many deployments compromise by enabling archives to disk without indexing them, which gets you compliance storage that nobody can search, which is roughly where OSSEC's logall left off.
The software is free. The operational load is the price, and it is mostly the indexer.
Heap sizing has the same trap as Elasticsearch: the JVM loses compressed object pointers somewhere around 32GB, so a node given more heap than that can address less usable memory than one given less. Shard sizing has the same characteristic as any Lucene based store, where a strategy that suits your current volume becomes a problem at ten times the volume, and the symptom is a cluster going yellow rather than an obvious error.
Version upgrades move three components that have to stay compatible with each other, and the indexer is the one that carries risk because it holds the data. Then there is the ordinary work of any cluster: capacity planning, disk growth, monitoring the thing that monitors everything else, and having somebody who understands it well enough to fix it when it breaks at an inconvenient hour.
None of that is a criticism of Wazuh. It is what running a search cluster involves, and Wazuh needs one because storing and searching security events at scale requires one. The question is whether operating it is work you want.
The split that works: Wazuh keeps the endpoint agent and the things only an agent can do. Trunc takes the log storage, search and retention problem, which is what the indexer is costing you.
Wazuh's strongest features are agent side. File integrity monitoring, vulnerability detection from the installed package list, configuration assessment against a benchmark, and rootkit checks all require something running on the host, and Trunc does not do any of them. Keeping Wazuh for those is the right call.
What Trunc replaces is the part where you run OpenSearch. Forward Wazuh alerts to Trunc and send your raw logs there directly, and the indexer's job becomes small enough that a single modest node handles it, or disappears if you stop indexing in Wazuh at all. Retention, search, categorization and the audit trail move to a platform where they are the only thing on the roadmap.
Forwarding alerts
Wazuh inherits OSSEC's syslog output, configured in ossec.conf on the manager:
<syslog_output> <server>your Trunc endpoint</server> <port>your port</port> <level>3</level> <format>json</format> </syslog_output>
Alternatively point the Trunc agent at /var/ossec/logs/alerts/alerts.json on the manager, which picks up the same content without touching the Wazuh configuration.
| Wazuh | Trunc | |
|---|---|---|
| Endpoint agent features | FIM, SCA, vulnerability detection | Log collection only |
| Log storage | You run the indexer | Hosted |
| Stores non-alert logs | Archives, at significant cost | Everything, by default |
| Search | Yes, via the indexer | Yes, no cluster involved |
| Retention | Index lifecycle policies you write | A setting |
| Infrastructure | Server, indexer cluster, dashboard | None |
| Non-agent log sources | Syslog to the manager | Syslog, agent or HTTP |
| Compliance reporting | Dashboards you configure | PCI DSS and ISO 27001 built in |
The case for pairing them is narrower than it sounds. It comes down to whether the cluster underneath your security tooling is something you chose or something you inherited by choosing the tool above it.
Can Trunc replace Wazuh entirely?
For log analysis, correlation and storage, yes. For file integrity monitoring, vulnerability detection and configuration assessment, no, because those are agent side capabilities Trunc does not have. Teams using Wazuh mainly as a log platform tend to find the swap straightforward. Teams using the endpoint features should keep it.
Will Trunc parse Wazuh alerts properly?
Yes. Alerts arrive with the rule ID, level, description, agent name and decoded fields intact, and Trunc categorizes them alongside everything else, so a Wazuh brute force alert lands in the same view as one derived from your firewall logs.
Does this mean running two agents?
On hosts where you want file integrity monitoring, yes, and they do not conflict. On hosts where you only want logs, the Trunc agent by itself is enough and you can leave Wazuh off entirely.
What about the Wazuh cloud offering?
Wazuh offers a hosted version, which removes the cluster operations problem in the same way Elastic Cloud does. Compare it on price at your ingest volume and on whether the interface suits how your team works, since both products are then solving the same shape of problem.
14 days free trial. No credit card required.