Collect ArcSight CEF logs
This document explains how to ingest ArcSight CEF logs to Google Security Operations using Bindplane agent.
ArcSight (now part of OpenText) uses the Common Event Format (CEF) for normalizing security events from multiple sources. The ArcSight SmartConnector collects events and forwards them in CEF format via syslog to downstream consumers including SIEM platforms.
Before you begin
Make sure you have the following prerequisites:
- A Google SecOps instance
- Windows Server 2016 or later, or Linux host with
systemd - Network connectivity between the Bindplane agent and the ArcSight SmartConnector host
- If running behind a proxy, ensure firewall ports are open per the Bindplane agent requirements
- Access to the OpenText support portal to download SmartConnector
- Administrative access to the SmartConnector server
Get Google SecOps ingestion authentication file
- Sign in to the Google SecOps console.
- Go to SIEM Settings > Collection Agents.
- Download the Ingestion Authentication File.
-
Save the file securely on the system where the 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" / quiet -
Wait for the installation to complete.
-
Verify the installation by running:
sc query observiq-otel-collectorThe 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 ) " install_unix.sh -
Wait for the installation to complete.
-
Verify the installation by running:
sudo systemctl status observiq-otel-collectorThe service should show as active (running).
Additional installation resources
For additional installation options and troubleshooting, see Bindplane agent installation guide .
Configure 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/arcsight_cef : compression : gzip creds_file_path : '/etc/bindplane-agent/ingestion-auth.json' customer_id : '<customer_id>' endpoint : malachiteingestion-pa.googleapis.com log_type : ARCSIGHT_CEF raw_log_field : body service : pipelines : logs/arcsight_to_chronicle : receivers : - udplog exporters : - chronicle/arcsight_cef
Configuration parameters
Replace the following placeholders:
-
Receiver configuration:
-
listen_address: IP address and port to listen on:-
0.0.0.0to listen on all interfaces (recommended) - Port
514is the standard syslog port (requires root on Linux; use1514for non-root)
-
-
-
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 copied from the Google SecOps console -
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:
-
Save the configuration file
- After editing, save the file:
- Linux: Press
Ctrl+O, thenEnter, thenCtrl+X - Windows: Click File > Save
- Linux: Press
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.
-
Verify the service is running:
sc query observiq-otel-collector -
Check logs for errors:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Press
-
Download ArcSight SmartConnector
- Sign in to the OpenText support portal.
- Find and download the latest ArcSight SmartConnector for Linux.
- Example filename:
ArcSight-Connector-Linux64-8.4.0.8499.0.bin.
Install the ArcSight SmartConnector
-
Upload the
.binfile to the SmartConnector server:scp ArcSight-Connector-Linux64-8.4.0.8499.0.bin user@your-smartconnector-host:/tmp -
Sign in to the SmartConnectorserver using SSH and run:
cd /tmp chmod +x ArcSight-Connector-Linux64-8.4.0.8499.0.bin ./ArcSight-Connector-Linux64-8.4.0.8499.0.bin -
Follow the interactive installer:
- Select installation directory (for example,
/opt/arcsight/connectors/current). - Accept the license.
- Select Install connectorwhen prompted.
- Select installation directory (for example,
Configure ArcSight SmartConnector to send CEF to syslog
-
In the SmartConnector host, launch the destination wizard:
cd /opt/arcsight/connectors/current/bin ./arcsight connectors -
In the wizard, do the following:
- Select Add Destination.
- Select CEF Syslog.
-
Provide the following configuration details:
- Host/IP: Enter the Bindplane agent IP address.
- Port: Enter the Bindplane agent port number (for example,
514). - Protocol: Select UDP.
-
Finish the setup and restart the connector:
./arcsight agents -
Run a check for connectivity (look for:
Successfully connected to syslog: X.X.X.X:514):tail -f /opt/arcsight/connectors/current/logs/agent.log
UDM mapping table
| Log field | UDM mapping | Logic |
|---|---|---|
|
act
|
security_result.action_details | Directly mapped from the act
field. |
|
agt
|
principal.ip | Directly mapped from the agt
field. |
|
agt
|
principal.asset.ip | Directly mapped from the agt
field. |
|
app
|
network.application_protocol | Directly mapped from the app
field. |
|
art
|
metadata.event_timestamp.seconds | Directly mapped from the art
field. |
|
cs2
|
additional.fields.value.string_value | Directly mapped from the cs2
field when cs2Label
is EventlogCategory
. |
|
cs2Label
|
additional.fields.key | Directly mapped from the cs2Label
field when its value is EventlogCategory
. |
|
cs3
|
additional.fields.value.string_value | Directly mapped from the cs3
field when cs3Label
is Process ID
. |
|
cs3Label
|
additional.fields.key | Directly mapped from the cs3Label
field when its value is Process ID
. |
|
cs5
|
additional.fields.value.string_value | Directly mapped from the cs5
field when cs5Label
is Authentication Package Name
. |
|
cs5Label
|
additional.fields.key | Directly mapped from the cs5Label
field when its value is Authentication Package Name
. |
|
cs6
|
additional.fields.value.string_value | Directly mapped from the cs6
field when cs6Label
is Logon GUID
. |
|
cs6Label
|
additional.fields.key | Directly mapped from the cs6Label
field when its value is Logon GUID
. |
|
dhost
|
about.hostname | Directly mapped from the dhost
field. |
|
dhost
|
target.hostname | Directly mapped from the dhost
field. |
|
dntdom
|
about.administrative_domain | Directly mapped from the dntdom
field. |
|
dntdom
|
target.administrative_domain | Directly mapped from the dntdom
field. |
|
dproc
|
about.process.command_line | Directly mapped from the dproc
field. |
|
dproc
|
target.process.command_line | Directly mapped from the dproc
field. |
|
dst
|
principal.ip | Directly mapped from the dst
field. |
|
dst
|
principal.asset.ip | Directly mapped from the dst
field. |
|
dst
|
target.ip | Directly mapped from the dst
field. |
|
duid
|
target.user.userid | Directly mapped from the duid
field. |
|
duser
|
target.user.user_display_name | Directly mapped from the duser
field. |
|
dvc
|
about.ip | Directly mapped from the dvc
field. |
|
dvchost
|
about.hostname | Directly mapped from the dvchost
field. |
|
eventId
|
additional.fields.value.string_value | Directly mapped from the eventId
field. |
|
externalId
|
metadata.product_log_id | Directly mapped from the externalId
field. |
|
fname
|
additional.fields.value.string_value | Directly mapped from the fname
field. |
|
msg
|
metadata.description | Directly mapped from the msg
field. |
|
proto
|
network.ip_protocol | Directly mapped from the proto
field. Translates protocol names to their respective constants (e.g., tcp
to TCP
). |
|
rt
|
metadata.event_timestamp.seconds | Directly mapped from the rt
field. |
|
shost
|
about.hostname | Directly mapped from the shost
field. |
|
shost
|
principal.hostname | Directly mapped from the shost
field. |
|
src
|
principal.ip | Directly mapped from the src
field. |
|
src
|
principal.asset.ip | Directly mapped from the src
field. |
|
src
|
target.ip | Directly mapped from the src
field. |
|
sproc
|
principal.process.command_line | Directly mapped from the sproc
field. |
|
spt
|
principal.port | Directly mapped from the spt
field. |
|
spt
|
target.port | Directly mapped from the spt
field. |
|
additional.EventRecordID
|
additional.fields.value.string_value | Directly mapped from the ad.EventRecordID
field. |
|
additional.ThreadID
|
additional.fields.value.string_value | Directly mapped from the ad.ThreadID
field. |
|
additional.Opcode
|
additional.fields.value.string_value | Directly mapped from the ad.Opcode
field. |
|
additional.ProcessID
|
additional.fields.value.string_value | Directly mapped from the ad.ProcessID
field. |
|
additional.TargetDomainName
|
additional.fields.value.string_value | Directly mapped from the ad.TargetDomainName
field. |
|
additional.Version
|
additional.fields.value.string_value | Directly mapped from the ad.Version
field. |
|
deviceExternalId
|
about.asset.hardware.serial_number | Directly mapped from the deviceExternalId
field. |
|
deviceInboundInterface
|
additional.fields.value.string_value | Directly mapped from the deviceInboundInterface
field. |
|
deviceOutboundInterface
|
additional.fields.value.string_value | Directly mapped from the deviceOutboundInterface
field. |
|
PanOSConfigVersion
|
security_result.detection_fields.value | Directly mapped from the PanOSConfigVersion
field. |
|
PanOSContentVersion
|
security_result.detection_fields.value | Directly mapped from the PanOSContentVersion
field. |
|
PanOSDGHierarchyLevel1
|
security_result.detection_fields.value | Directly mapped from the PanOSDGHierarchyLevel1
field. |
|
PanOSDestinationLocation
|
target.location.country_or_region | Directly mapped from the PanOSDestinationLocation
field. |
|
PanOSRuleUUID
|
metadata.product_log_id | Directly mapped from the PanOSRuleUUID
field. |
|
PanOSThreatCategory
|
security_result.category_details | Directly mapped from the PanOSThreatCategory
field. |
|
PanOSThreatID
|
security_result.threat_id | Directly mapped from the PanOSThreatID
field. |
| |
about.asset.asset_id | Generated by concatenating Palo Alto Networks.
, the vendor name ( LF
), and the deviceExternalId
field. |
| |
extensions.auth.type | Set to AUTHTYPE_UNSPECIFIED
if the event_name
field contains logged on
. |
| |
metadata.description | If the description
field contains by
followed by an IP address, the IP address is extracted and mapped to principal.ip
and principal.asset.ip
. |
| |
metadata.event_type | Determined based on a series of conditional checks on various fields, including event_name
, principal_*
, target_*
, and device_event_class_id
. The logic determines the most appropriate event type based on the available information. |
| |
metadata.log_type | Set to ARCSIGHT_CEF
. |
| |
metadata.product_event_type | Generated by concatenating \[
, the device_event_class_id
field, \] -
, and the name
field. |
| |
metadata.product_name | Set to NGFW
if the product_name
field is LF
. |
| |
principal.asset.ip | If the description
field contains by
followed by an IP address, the IP address is extracted and mapped to principal.ip
and principal.asset.ip
. |
| |
principal.ip | If the description
field contains by
followed by an IP address, the IP address is extracted and mapped to principal.ip
and principal.asset.ip
. |
| |
security_result.action | Set to ALLOW
if the act
field is alert
, otherwise set to BLOCK
. |
| |
security_result.severity | Set to HIGH
if the sev
field is greater than or equal to 7, otherwise set to LOW
. |
Need more help? Get answers from Community members and Google SecOps professionals.

