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 Downloadto 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 IDfrom the Organization Detailssection.
Install the Bindplane agent
Install the Bindplane agent on your Windows or Linux operating system according to the following instructions.
Windows installation
-
Open Command Promptor PowerShellas 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)" / quiet -
Wait 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.sh -
Wait 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.yaml -
Windows:
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_NETBACKUP -
ingestion_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-collector -
Verify the service is running:
sudo systemctl status observiq-otel-collector -
Check 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-collector -
Check 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 serveras an administrator.
-
Open the
bp.confconfiguration file:- Linux:
sudo vi /usr/openv/netbackup/bp.conf- Windows:
C:\Program Files\Veritas\NetBackup\bp.conf -
Add 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 Shellvia 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 > Show -
Verify 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 -A -
Windows:
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.

