Collect Cohesity DataProtect (formerly Veritas NetBackup) logs
This document explains how to ingest Cohesity DataProtect (formerly Veritas NetBackup) logs to Google Security Operations using Bindplane.
Cohesity DataProtect (formerly Veritas NetBackup, acquired by Cohesity in December 2024) is an enterprise-grade data protection and backup solution designed to safeguard data across physical, virtual, and cloud environments. It provides centralized management for backup, recovery, and disaster recovery operations, supporting a wide range of platforms, applications, and storage targets to ensure data resilience at scale.
Before you begin
Make sure you have the following prerequisites:
- Google SecOps instance.
- Windows Server 2016 or later, or Linux host with systemd.
- Network connectivity between Bindplane agent and Cohesity DataProtect (formerly Veritas NetBackup).
- If running behind a proxy, ensure firewall ports are open per the Bindplane agent requirements.
- Privileged access to the NetBackup Administration Console or NetBackup Appliance Shell.
- NetBackup version 7.7 or later (for syslog forwarding support).
Get Google SecOps ingestion authentication file
Sign in to the Google SecOps console.
Go to SIEM Settings > Collection Agent.
Click Download to download the Ingestion Authentication File.
Save the file securely on the system where Bindplane agent will be installed.
Get Google SecOps customer ID
Sign in to the Google SecOps console.
Go to SIEM Settings > Profile.
Copy and save the Customer ID from the Organization Details section.
Install the Bindplane agent
Install the Bindplane agent on your Windows or Linux operating system according to the following instructions.
Windows installation
Open Command Prompt or PowerShell as an administrator.
Run the following command:
msiexec /i "[https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi](https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi)" /quietWait for the installation to complete.
Verify the installation by running:
sc query observiq-otel-collector
The service should show as RUNNING.
Linux installation
Open a terminal with root or sudo privileges.
Run the following command:
sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.shWait for the installation to complete.
Verify the installation by running:
sudo systemctl status observiq-otel-collector
The service should show as active (running).
Additional installation resources
For additional installation options and troubleshooting, see Bindplane agent installation guide.
Configure the Bindplane agent to ingest syslog and send to Google SecOps
Locate the configuration file
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edit the configuration file
Replace the entire contents of
config.yamlwith the following configuration:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/netbackup: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'your-customer-id-here' endpoint: malachiteingestion-pa.googleapis.com log_type: VERITAS_NETBACKUP raw_log_field: body ingestion_labels: env: production source: netbackup service: pipelines: logs/netbackup_to_chronicle: receivers: - udplog exporters: - chronicle/netbackup
Configuration parameters
Replace the following placeholders:
Receiver configuration:
listen_address: IP address and port to listen on. Use0.0.0.0:514to listen on all interfaces on port 514. If port 514 requires root privileges on Linux, use0.0.0.0:1514and configure NetBackup to send to port 1514.
Exporter configuration:
creds_file_path: Full path to ingestion authentication file:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Customer ID from the previous step (for example,a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6)endpoint: Regional endpoint URL:- US:
malachiteingestion-pa.googleapis.com - Europe:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - See Regional Endpoints for complete list
- US:
log_type: Must be exactlyVERITAS_NETBACKUPingestion_labels: Optional labels for filtering and organization
Save the configuration file
After editing, save the file:
- Linux: Press
Ctrl+O, thenEnter, thenCtrl+X - Windows: Click File > Save
Restart the Bindplane agent to apply the changes
To restart the Bindplane agent in Linux:
Run the following command:
sudo systemctl restart observiq-otel-collectorVerify the service is running:
sudo systemctl status observiq-otel-collectorCheck logs for errors:
sudo journalctl -u observiq-otel-collector -f
To restart the Bindplane agent in Windows:
Choose one of the following options:
- Command Prompt or PowerShell as administrator:
net stop observiq-otel-collector && net start observiq-otel-collector- Services console:
- Press
Win+R, typeservices.msc, and press Enter. - Locate observIQ OpenTelemetry Collector.
- Right-click and select Restart.
- Press
Verify the service is running:
sc query observiq-otel-collectorCheck logs for errors:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configure Cohesity DataProtect (formerly Veritas NetBackup) syslog forwarding
NetBackup supports two methods for configuring syslog forwarding: through the bp.conf configuration file on the NetBackup primary server, or through the NetBackup Appliance Shell for appliance-based deployments.
Option A: Configure syslog via bp.conf (NetBackup primary server)
Sign in to the NetBackup primary server as an administrator.
Open the
bp.confconfiguration file:- Linux:
sudo vi /usr/openv/netbackup/bp.conf- Windows:
C:\Program Files\Veritas\NetBackup\bp.confAdd the following entries to the
bp.conffile:SYSLOG_SERVER = <BINDPLANE_AGENT_IP> SYSLOG_PORT = 514- Replace
<BINDPLANE_AGENT_IP>with the IP address of the Bindplane agent host (for example,192.168.1.100).
- Replace
Save and close the file.
Restart the NetBackup services to apply the changes:
- Linux:
sudo /usr/openv/netbackup/bin/bp.kill_all sudo /usr/openv/netbackup/bin/bp.start_all- Windows:
"C:\Program Files\Veritas\NetBackup\bin\bpdown.exe" -f "C:\Program Files\Veritas\NetBackup\bin\bpup.exe" -f
Option B: Configure syslog via NetBackup Appliance Shell
Sign in to the NetBackup Appliance Shell via SSH or the web-based console.
Navigate to Settings > Syslog.
Run the following command to configure syslog forwarding:
Settings > Syslog > Set <BINDPLANE_AGENT_IP> 514 UDP- Replace
<BINDPLANE_AGENT_IP>with the IP address of the Bindplane agent host (for example,192.168.1.100).
- Replace
Confirm the configuration by running:
Settings > Syslog > ShowVerify that the syslog server IP, port, and protocol are correctly displayed.
Verify syslog forwarding
After configuring syslog forwarding, verify that logs are being sent by checking the Bindplane agent host:
Linux:
sudo tcpdump -i any port 514 -AWindows:
Use Wireshark or Microsoft Message Analyzer to capture traffic on port 514.
Notes on NetBackup syslog behavior
NetBackup sends operational event logs, job status notifications, and system alerts via syslog. The log messages include backup job status, media events, device errors, and administrative actions.
Syslog messages are sent via UDP by default. NetBackup does not natively support TCP syslog forwarding through the
bp.confmethod.The Google SecOps VERITAS_NETBACKUP parser handles both key-value pair and JSON-formatted syslog messages from NetBackup.
Ensure the NetBackup primary server system time is synchronized with NTP and configured to UTC for accurate log timestamps.
UDM mapping table
| Log Field | UDM Mapping | Logic |
|---|---|---|
data |
additional.fields[0].value.string_value |
The date and time from the raw log message, extracted using grok and formatted as "MM/DD/YY HH:MM:SS". |
data |
metadata.description |
The description part of the message extracted using grok. Example: "(OdbcStatement::ExecDirect:962)::Error". |
data |
metadata.product_event_type |
The product event type extracted using grok. Example: "Error::83". |
data |
principal.asset.hostname |
The hostname extracted from the syslog message using grok. |
data |
principal.file.full_path |
The pem file path extracted from the JSON data in the log. |
data |
principal.hostname |
The hostname extracted from the syslog message using grok. |
data |
security_result.detection_fields[0].key |
The key "SqlState" is added if the SqlState field is present in the raw log after the grok parsing. |
data |
security_result.detection_fields[0].value |
The value of SqlState extracted from the raw log message using grok and kv. |
data |
security_result.detection_fields[1].key |
The key "NativeError" is added if the NativeError field is present in the raw log after the grok parsing. |
data |
security_result.detection_fields[1].value |
The value of NativeError extracted from the raw log message using grok and kv. |
data |
security_result.detection_fields[2].key |
The key "sev" is added if the sev field is present in the raw log after the grok parsing. |
data |
security_result.detection_fields[2].value |
The value of sev extracted from the JSON data in the log. |
data |
security_result.severity |
Set to "LOW" if the sev field (extracted from JSON) is "normal". |
data |
security_result.summary |
The error message or summary extracted from the raw log message using grok. |
data |
additional.fields[1].value.string_value |
The value of thread extracted from the JSON data in the log. |
data |
additional.fields[2].value.string_value |
The value of m extracted from the JSON data in the log. |
data |
additional.fields[3].value.string_value |
The value of fn extracted from the JSON data in the log. |
collection_time |
metadata.event_timestamp |
The timestamp from the collection_time field in the raw log. Set to "STATUS_UPDATE" if a principal hostname is present, otherwise "GENERIC_EVENT". |
collection_time |
timestamp |
The timestamp from the collection_time field in the raw log. |
Need more help? Get answers from Community members and Google SecOps professionals.