docs/ref/modules/inventory-sync/configuration.md
The Inventory Sync module is designed to run with minimal configuration, working out of the box with default settings. It acts as a synchronization intermediary, relying primarily on the Indexer Connector configuration for indexing operations.
The module itself does not expose dedicated options in wazuh-manager.conf. Instead, it inherits operational parameters from the Indexer Connector.
Inventory Sync delegates all indexing tasks to the Indexer Connector. Incoming FlatBuffer messages from agents are processed and grouped into bulk operations, which are then sent to the Indexer for efficient storage.
Default Indexer Connector configuration block:
<indexer>
<hosts>
<host>https://127.0.0.1:9200</host>
</hosts>
<ssl>
<certificate_authorities>
<ca>/var/wazuh-manager/etc/certs/root-ca.pem</ca>
</certificate_authorities>
<certificate>/var/wazuh-manager/etc/certs/manager.pem</certificate>
<key>/var/wazuh-manager/etc/certs/manager-key.pem</key>
</ssl>
</indexer>
Note: Only secure (TLS/SSL) connections are supported. Plaintext connections to the Indexer are not allowed.
The module relies on internal constants that define synchronization behavior:
| Parameter | Default Value | Purpose |
|---|---|---|
| Session Timeout | 10 seconds (2 × DEFAULT_TIME) | Defines how long a session remains active without receiving data |
| Thread Count | 1 | Dedicated thread for Indexer operations |
| Topic | inventory-states | Router topic subscription |
| Subscriber ID | inventory-sync-module | Router subscriber identity |
| Storage Path | inventory_sync/ | RocksDB directory for session data |
Before starting synchronization, verify Indexer health via the /_cluster/health endpoint.
Example response:
{
"cluster_name": "wazuh-cluster",
"status": "green",
"number_of_nodes": 1,
"active_primary_shards": 15,
"active_shards_percent_as_number": 100
}
A green status indicates the cluster is healthy and ready.
The connection can be validated manually with curl, using the proper CA, certificate, and key:
curl --cacert <root_CA_path> --cert <cert_path> --key <key_path> \
https://<indexer-ip>:9200/_cluster/health
The Inventory Sync module uses RocksDB for temporary session data:
inventory_sync/ directory (relative to Wazuh working dir)<session_id>_<sequence> to isolate per-session dataThis ensures persistence during ongoing syncs without exhausting memory.
The module relies on the Router for message delivery from agents:
inventory-statesinventory-sync-moduleThe Router must be properly configured and running for Inventory Sync to receive agent updates.
The following diagram illustrates the three synchronization phases (Start → Data → End) between Agent, Inventory Sync, and Indexer:
sequenceDiagram
autonumber
participant Agent
participant InventorySync
participant RocksDB
participant IndexerConnector
participant Indexer
Agent->>InventorySync: START (agent_id, mode=full/delta)
InventorySync->>RocksDB: Initialize session storage
loop Data Phase
Agent->>InventorySync: DATA (seq, payload)
InventorySync->>RocksDB: Store <session_id, seq>
end
Agent->>InventorySync: END (agent_id)
InventorySync->>IndexerConnector: Bulk request (events)
IndexerConnector->>Indexer: _bulk (insert/delete)
Indexer-->>IndexerConnector: Bulk response
alt Success
IndexerConnector-->>InventorySync: ACK OK
InventorySync-->>Agent: ACK OK
else Failure
IndexerConnector-->>InventorySync: ACK ERROR (details)
InventorySync-->>Agent: ACK ERROR
end
InventorySync->>RocksDB: Cleanup session