docs/ref/modules/syscollector/configuration.md
Syscollector is configured in the agent's ossec.conf file using the <wodle name="syscollector"> section. The module supports both basic inventory collection and advanced synchronization features for persistent inventory state management.
Important: Starting in version 5.0, vulnerability detection is handled by a separate Vulnerability Detector module. Syscollector focuses exclusively on inventory collection (packages, OS, hotfixes, etc.), while vulnerability detection and CVE correlation are performed independently.
<wodle name="syscollector">
<disabled>no</disabled>
<interval>1h</interval>
<scan_on_start>yes</scan_on_start>
<!-- Inventory categories -->
<hardware>yes</hardware>
<os>yes</os>
<network>yes</network>
<packages>yes</packages>
<ports all="yes">yes</ports>
<processes>yes</processes>
<users>yes</users>
<groups>yes</groups>
<services>yes</services>
<browser_extensions>yes</browser_extensions>
<hotfixes>yes</hotfixes> <!-- Windows only -->
<!-- Rate limiting -->
<max_eps>50</max_eps> <!-- Stateless/real-time inventory event rate limit -->
<notify_first_scan>no</notify_first_scan> <!-- First scan notification -->
<!-- Advanced synchronization settings -->
<synchronization>
<enabled>yes</enabled> <!-- Enable/disable persistence -->
<interval>300</interval> <!-- Sync interval in seconds -->
<response_timeout>60</response_timeout> <!-- Response timeout in seconds -->
<max_eps>50</max_eps> <!-- Max sync events per second (0 = unlimited) -->
<integrity_interval>86400</integrity_interval> <!-- Integrity check interval in seconds (24 hours) -->
</synchronization>
</wodle>
| Option | Default | Range | Description |
|---|---|---|---|
disabled | no | yes/no | Enable/disable the module |
interval | 1h | >= 60s | Scan interval (minimum 60 seconds) |
scan_on_start | yes | yes/no | Scan when agent starts |
max_eps | 50 | 0 - 1000000 | Maximum events per second for stateless/real-time inventory events (0 = unlimited) |
notify_first_scan | no | yes/no | Generate events during initial inventory scan |
| Category | Default | Description |
|---|---|---|
hardware | yes | CPU, memory, storage information |
os | yes | Operating system details |
network | yes | Network interfaces and configuration |
packages | yes | Installed software packages |
ports | yes | Open network ports |
processes | yes | Running processes |
users | yes | System user accounts |
groups | yes | System groups |
services | yes | System services |
browser_extensions | yes | Browser add-ons and extensions |
hotfixes | yes | Windows updates (Windows only) |
Note: The ports element accepts an optional all attribute:
<ports all="yes">: Scan all ports<ports all="no">: Scan only listening portsThe synchronization feature enables persistent inventory state management through the Agent Sync Protocol.
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
enabled | Boolean | yes | yes/no | Enable or disable Syscollector synchronization persistence |
interval | Integer | 300 | 1 - ∞ | How often to trigger synchronization with the manager (seconds) |
response_timeout | Integer | 60 | 1 - ∞ | Timeout for waiting manager responses during sync (seconds) |
max_eps | Integer | 50 | 0 - 1000000 | Maximum events per second for sync messages (0 = unlimited) |
integrity_interval | Integer | 86400 | 60 - ∞ | Time between integrity checks for each inventory table (seconds) |
The enabled parameter controls whether Syscollector uses persistence or falls back to legacy behavior:
<synchronization>
<enabled>yes</enabled>
</synchronization>
Implementation:
unsigned int enable_synchronization:1; /* Enable database synchronization */
When disabled, Syscollector only generates stateless events without persistence.
Controls how frequently the agent attempts to synchronize pending inventory events:
<synchronization>
<interval>300</interval> <!-- 5 minutes -->
</synchronization>
Implementation:
uint32_t sync_interval; /* Synchronization interval */
Considerations:
Defines how long to wait for manager acknowledgments during synchronization:
<synchronization>
<response_timeout>60</response_timeout>
</synchronization>
Implementation:
uint32_t sync_response_timeout; /* Minimum interval for the synchronization process */
Considerations:
Controls the rate of synchronization messages sent to the manager:
<synchronization>
<max_eps>50</max_eps>
</synchronization>
Implementation:
uint32_t sync_max_eps; /* Maximum sync events per second */
Purpose:
0 for unlimited (not recommended for production)Controls how frequently each inventory table's integrity is verified with the manager:
<synchronization>
<integrity_interval>86400</integrity_interval> <!-- 24 hours -->
</synchronization>
Implementation:
uint32_t integrity_interval; /* Time between integrity checks per table (seconds) */
Behavior:
integrity_interval elapses for a table:
last_sync_time updatedConsiderations:
86400 seconds (24 hours) - balances reliability and performancelast_sync_time independentlyRecovery on Mismatch: When checksums don't match, the agent performs full table recovery:
last_sync_time after successful recoveryControls whether Syscollector generates events during the initial inventory scan:
<notify_first_scan>no</notify_first_scan>
Implementation:
unsigned int notify_first_scan:1; /* Generate events on first scan */
Behavior:
yes: Generates events for all inventory items found during initial scanno (default): Suppresses events during first scan, only reports changes after baseline establishmentControls the maximum rate of stateless inventory events sent to the manager:
<max_eps>50</max_eps>
Implementation:
uint32_t max_eps; /* Maximum events per second for stateless inventory */
Purpose:
Syscollector implements separate rate controls for different event types:
<max_eps>50</max_eps> <!-- Outside synchronization block -->
Controls:
<synchronization>
<max_eps>50</max_eps> <!-- Inside synchronization block -->
</synchronization>
Controls:
For environments with frequent inventory changes:
<wodle name="syscollector">
<max_eps>100</max_eps>
<notify_first_scan>no</notify_first_scan>
<synchronization>
<enabled>yes</enabled>
<interval>120</interval> <!-- Sync every 2 minutes -->
<response_timeout>60</response_timeout>
<max_eps>25</max_eps> <!-- Higher sync throughput -->
<integrity_interval>1h</integrity_interval> <!-- Check integrity every hour -->
</synchronization>
</wodle>
<wodle name="syscollector">
<disabled>no</disabled>
<interval>24h</interval>
<hardware>yes</hardware>
<os>yes</os>
<packages>yes</packages>
<!-- Disable resource-intensive scans -->
<processes>no</processes>
<ports>no</ports>
<browser_extensions>no</browser_extensions>
</wodle>
<wodle name="syscollector">
<disabled>no</disabled>
<interval>1h</interval>
<packages>yes</packages>
<services>yes</services>
<users>yes</users>
<groups>yes</groups>
<hotfixes>yes</hotfixes>
<ports all="yes">yes</ports>
</wodle>
<wodle name="syscollector">
<disabled>no</disabled>
<interval>5m</interval>
<processes>yes</processes>
<ports>yes</ports>
<synchronization>
<max_eps>50</max_eps>
</synchronization>
</wodle>
hotfixes category is Windows-specificValidate configuration syntax:
/var/ossec/bin/wazuh-agentd -t
Monitor for errors:
tail -f /var/ossec/logs/ossec.log | grep syscollector