Collect Elastic Windows Event Log Beats logs

Supported in:

This document explains how to ingest Elastic Windows Event Log Beats logs into Google Security Operations using the Bindplane agent.

Winlogbeat is Elastic's Windows-specific event log shipping agent that collects Windows Event Logs and forwards them to various destinations. It runs as a Windows service on Windows systems and can collect events from Application, Security, System, and other Windows event log channels.

Before you begin

Make sure you have the following prerequisites:

  • A Google SecOps instance
  • Windows Server 2016 or later, or a Linux host with systemd for running the Bindplane agent
  • Network connectivity between the Bindplane agent and the Logstash server
  • Network connectivity between Logstash and the Bindplane agent
  • If running behind a proxy, ensure that firewall ports are open according to the Bindplane agent requirements
  • Windows systems where Winlogbeat will be installed to collect event logs
  • Administrator access to Windows systems for Winlogbeat installation
  • Logstash server (version 7.x or 8.x) for intermediary processing

Get Google SecOps ingestion authentication file

  1. Sign in to the Google SecOps console.
  2. Go to SIEM Settings > Collection Agents.
  3. Download the Ingestion Authentication File. Save the file securely on the system where Bindplane will be installed.

Get Google SecOps customer ID

  1. Sign in to the Google SecOps console.
  2. Go to SIEM Settings > Profile.
  3. 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

  1. Open Command Prompt or PowerShell as an administrator.
  2. Run the following command:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Wait for the installation to complete.

  4. Verify the installation by running:

    sc query observiq-otel-collector
    

    The service status should be RUNNING.

Linux installation

  1. Open a terminal with root or sudo privileges.
  2. Run the following command:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Wait for the installation to complete.

  4. Verify the installation by running:

    sudo systemctl status observiq-otel-collector
    

    The service status should be 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

  1. Replace the entire contents of config.yaml with the following configuration:

    receivers:
        tcplog:
            listen_address: "0.0.0.0:1514"
    
    exporters:
        chronicle/winlogbeat:
            compression: gzip
            creds_file_path: '<CREDS_FILE_PATH>'
            customer_id: '<CUSTOMER_ID>'
            endpoint: <REGION_ENDPOINT>
            log_type: ELASTIC_WINLOGBEAT
            raw_log_field: body
            ingestion_labels:
                env: production
                source: winlogbeat
    
    service:
        pipelines:
            logs/winlogbeat_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/winlogbeat
    
  2. Replace the following placeholders:

    • Receiver configuration:

      • listen_address: Set to 0.0.0.0:1514 to listen on all interfaces on port 1514 (TCP). You can change the port number if needed, but ensure that it matches the Logstash syslog output configuration.
    • 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
      • <CUSTOMER_ID>: Customer ID from the previous step

      • <REGION_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

Example configuration:

  • receivers:
      tcplog:
        listen_address: "0.0.0.0:1514"
    
    exporters:
      chronicle/winlogbeat:
        compression: gzip
        creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
        customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ELASTIC_WINLOGBEAT
        raw_log_field: body
        ingestion_labels:
          env: production
          source: winlogbeat
    
    service:
      pipelines:
        logs/winlogbeat_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/winlogbeat
    

Save the configuration file

After editing, save the file:

  • Linux: Press Ctrl+O, then Enter, then Ctrl+X
  • Windows: Click File > Save

Restart the Bindplane agent to apply the changes

  • To restart the Bindplane agent in Linux:

    1. Run the following command:

      sudo systemctl restart observiq-otel-collector
      
    2. Verify the service is running:

      sudo systemctl status observiq-otel-collector
      
    3. Check logs for errors:

      sudo journalctl -u observiq-otel-collector -f
      
  • To restart the Bindplane agent in Windows:

    1. Choose one of the following options:

      • Command Prompt or PowerShell as administrator:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Services console:

        1. Press Win+R, type services.msc, and press Enter.
        2. Locate observIQ OpenTelemetry Collector.
        3. Right-click and select Restart.
    2. Verify the service is running:

      sc query observiq-otel-collector
      
    3. Check logs for errors:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Install and configure Logstash

Logstash is required as an intermediary to receive events from Winlogbeat and forward them to the Bindplane agent via syslog. Winlogbeat does not have native syslog output capability.

Install Logstash

  1. Download Logstash from the Elastic downloads page.
  2. Install Logstash on a Windows or Linux server:
  • Linux (Debian/Ubuntu):

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    sudo apt-get install apt-transport-https
    echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
    sudo apt-get update && sudo apt-get install logstash
    
  • Linux (RHEL/CentOS):

    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    sudo tee /etc/yum.repos.d/logstash.repo <<EOF
    [logstash-8.x]
    name=Elastic repository for 8.x packages
    baseurl=https://artifacts.elastic.co/packages/8.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    EOF
    sudo yum install logstash
    
  • Windows:

    1. Download the ZIP file from the Elastic downloads page.
    2. Extract to C:\logstash.

Configure Logstash pipeline

  1. Create a new pipeline configuration file:

    • Linux:

      sudo nano /etc/logstash/conf.d/winlogbeat-to-syslog.conf
      
    • Windows:

      notepad "C:\logstash\config\winlogbeat-to-syslog.conf"
      
  2. Add the following configuration:

    input {
        beats {
            port => 5044
        }
    }
    
    output {
        syslog {
            host => "<BINDPLANE_AGENT_IP>"
            port => 1514
            protocol => "tcp"
            rfc => "rfc5424"
            appname => "winlogbeat"
            facility => "user-level"
            severity => "informational"
        }
    }
    
  3. Replace <BINDPLANE_AGENT_IP> with the IP address of the server running the Bindplane agent.

Example Logstash configuration

  • input {
        beats {
            port => 5044
        }
    }
    
    output {
        syslog {
            host => "192.168.1.100"
            port => 1514
            protocol => "tcp"
            rfc => "rfc5424"
            appname => "winlogbeat"
            facility => "user-level"
            severity => "informational"
        }
    }
    

Start Logstash

  • Linux:

    1. Start Logstash:

      sudo systemctl start logstash
      sudo systemctl enable logstash
      
    2. Verify Logstash is running:

      sudo systemctl status logstash
      
    3. Check Logstash logs:

      sudo tail -f /var/log/logstash/logstash-plain.log
      
  • Windows:

    cd C:\logstash\bin
    logstash.bat -f C:\logstash\config\winlogbeat-to-syslog.conf
    

    For production use, install Logstash as a Windows service using NSSM or similar tools.

Install Winlogbeat on Windows systems

Download Winlogbeat

  1. Download Winlogbeat from the Elastic downloads page.
  2. Choose the ZIP or MSI installer for Windows.

Install Winlogbeat

  • Using MSI installer:

    1. Run the MSI installer.
    2. Follow the installation wizard.
    3. Install to the default location: C:\Program Files\Winlogbeat.
  • Using ZIP file:

    1. Extract the ZIP file to C:\Program Files\Winlogbeat.
    2. Open PowerShell as an administrator.
    3. Navigate to the Winlogbeat directory:

      cd 'C:\Program Files\Winlogbeat'
      
    4. Run the installation script:

      .\install-service-winlogbeat.ps1
      

Configure Winlogbeat to send logs to Logstash

  1. Open the Winlogbeat configuration file:

    notepad "C:\Program Files\Winlogbeat\winlogbeat.yml"
    
  2. Configure the event logs to collect. Locate the winlogbeat.event_logs section and configure as follows:

    winlogbeat.event_logs:
      - name: Application
        ignore_older: 72h
      - name: System
      - name: Security
      - name: Microsoft-Windows-Sysmon/Operational
        ignore_older: 72h
      - name: Windows PowerShell
        event_id: 400, 403, 600, 800
      - name: Microsoft-Windows-PowerShell/Operational
        event_id: 4103, 4104, 4105, 4106
      - name: ForwardedEvents
        tags: [forwarded]
    
  3. Comment out the Elasticsearch output section by adding # at the beginning of each line:

    #output.elasticsearch:
    #  hosts: ["localhost:9200"]
    
  4. Uncomment and configure the Logstash output section:

    output.logstash:
      hosts: ["<LOGSTASH_SERVER_IP>:5044"]
    
  5. Replace <LOGSTASH_SERVER_IP> with the IP address of your Logstash server.

Example Winlogbeat configuration

  • winlogbeat.event_logs:
      - name: Application
        ignore_older: 72h
      - name: System
      - name: Security
      - name: Microsoft-Windows-Sysmon/Operational
        ignore_older: 72h
    
    output.logstash:
      hosts: ["192.168.1.50:5044"]
    

Save the configuration file

Save and close the file.

Start Winlogbeat service

  1. Open PowerShell as an administrator.
  2. Start the Winlogbeat service:

    Start-Service winlogbeat
    
  3. Verify the service is running:

    Get-Service winlogbeat
    

    The status should show as Running.

  4. Check Winlogbeat logs for errors:

    Get-Content "C:\ProgramData\winlogbeat\Logs\winlogbeat" -Tail 50
    

Verify log flow

Verify Winlogbeat to Logstash connection

  1. On the Logstash server, check the Logstash logs:

    • Linux:

      sudo tail -f /var/log/logstash/logstash-plain.log
      
    • Windows:

      type C:\logstash\logs\logstash-plain.log
      
  2. Look for messages indicating Beats connections:

    [INFO ][logstash.inputs.beats] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
    

Verify Logstash to Bindplane agent connection

  1. On the Bindplane agent server, check the agent logs:

    • Linux:

      sudo journalctl -u observiq-otel-collector -f
      
    • Windows:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      
  2. Look for messages indicating successful log ingestion.

Verify logs in Google SecOps

  1. Sign in to the Google SecOps console.
  2. Go to Search.
  3. Run a search query to verify Winlogbeat logs are being ingested:

    metadata.log_type = "ELASTIC_WINLOGBEAT"
    
  4. Verify that Windows event logs appear in the search results.

Troubleshooting

Winlogbeat not connecting to Logstash

  • Verify network connectivity between Winlogbeat and Logstash:

    Test-NetConnection -ComputerName <LOGSTASH_IP> -Port 5044
    
  • Check Windows Firewall rules allow outbound connections on port 5044.

  • Verify Logstash is listening on port 5044:

    • Linux:

      sudo netstat -tulpn | grep 5044
      
    • Windows:

      netstat -an | findstr 5044
      

Logstash not forwarding to Bindplane agent

  • Verify network connectivity between Logstash and Bindplane agent:

    • Linux:

      telnet <BINDPLANE_IP> 1514
      
    • Windows:

      Test-NetConnection -ComputerName <BINDPLANE_IP> -Port 1514
      
  • Check firewall rules allow TCP connections on port 1514.

  • Verify Bindplane agent is listening on port 1514:

    • Linux:

      sudo netstat -tulpn | grep 1514
      
    • Windows:

      netstat -an | findstr 1514
      

Logs not appearing in Google SecOps

  • Verify the customer ID and ingestion authentication file are correct.
  • Check the Bindplane agent logs for authentication errors.
  • Verify the regional endpoint matches your Google SecOps instance region.
  • Ensure the log_type is set to ELASTIC_WINLOGBEAT exactly as shown.

UDM mapping table

Field mapping information is not available for this parser.

Need more help? Get answers from Community members and Google SecOps professionals.