File: //usr/share/filebeat/module/panw/panos/ingest/traffic.yml
---
description: Pipeline for PanOS Traffic Logs
processors:
# Set network.direction using src/dst zone (traffic logs).
- set:
field: network.direction
value: inbound
if: >
ctx?._temp_?.external_zones != null &&
ctx?._temp_?.internal_zones != null &&
ctx?.observer?.ingress?.zone != null &&
ctx?.observer?.egress?.zone != null &&
ctx._temp_.external_zones.contains(ctx.observer.ingress.zone) &&
ctx._temp_.internal_zones.contains(ctx.observer.egress.zone)
- set:
field: network.direction
value: outbound
if: >
ctx?._temp_?.external_zones != null &&
ctx?._temp_?.internal_zones != null &&
ctx?.observer?.ingress?.zone != null &&
ctx?.observer?.egress?.zone != null &&
ctx._temp_.external_zones.contains(ctx.observer.egress.zone) &&
ctx._temp_.internal_zones.contains(ctx.observer.ingress.zone)
- set:
field: network.direction
value: internal
if: >
ctx?._temp_?.internal_zones != null &&
ctx?.observer?.ingress?.zone != null &&
ctx?.observer?.egress?.zone != null &&
ctx._temp_.internal_zones.contains(ctx.observer.egress.zone) &&
ctx._temp_.internal_zones.contains(ctx.observer.ingress.zone)
- set:
field: network.direction
value: external
if: >
ctx?._temp_?.external_zones != null &&
ctx?.observer?.ingress?.zone != null &&
ctx?.observer?.egress?.zone != null &&
ctx._temp_.external_zones.contains(ctx.observer.egress.zone) &&
ctx._temp_.external_zones.contains(ctx.observer.ingress.zone)
- set:
field: network.direction
value: unknown
if: >
ctx?._temp_?.external_zones != null &&
ctx?._temp_?.internal_zones != null &&
(
(
!ctx._temp_.external_zones.contains(ctx?.observer?.egress?.zone) &&
!ctx._temp_.internal_zones.contains(ctx?.observer?.egress?.zone)
) ||
(
!ctx._temp_.external_zones.contains(ctx?.observer?.ingress?.zone) &&
!ctx._temp_.internal_zones.contains(ctx?.observer?.ingress?.zone)
)
)
# Set network.type for TRAFFIC.
- set:
field: network.type
value: 'ipv4'
if: 'ctx?.labels?.ipv6_session == null'
- set:
field: network.type
value: 'ipv6'
if: 'ctx?.labels?.ipv6_session != null'
# Set event.category depending on log type.
- set:
field: event.kind
value: event
- append:
field: event.category
allow_duplicates: false
value:
- network
on_failure:
- append:
field: error.message
value: >-
error in Traffic pipeline:
error in [{{_ingest.on_failure_processor_type}}] processor{{#_ingest.on_failure_processor_tag}}
with tag [{{_ingest.on_failure_processor_tag }}]{{/_ingest.on_failure_processor_tag}}
{{ _ingest.on_failure_message }}