1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- receivers:
- filelog:
- include:
- - /var/log/pods/*/*/*.log
- exclude:
- # Exclude logs from all containers named otel-collector
- - /var/log/pods/*/otel-collector/*.log
- start_at: end
- include_file_path: true
- include_file_name: false
- operators:
- # Find out which format is used by kubernetes
- - type: router
- id: get-format
- routes:
- - output: parser-docker
- expr: 'body matches "^\\{"'
- - output: parser-crio
- expr: 'body matches "^[^ Z]+ "'
- - output: parser-containerd
- expr: 'body matches "^[^ Z]+Z"'
- # Parse CRI-O format
- - type: regex_parser
- id: parser-crio
- regex: '^(?P<time>[^ Z]+) (?P<stream>stdout|stderr) (?P<logtag>[^ ]*) ?(?P<log>.*)$'
- output: extract_metadata_from_filepath
- timestamp:
- parse_from: attributes.time
- layout_type: gotime
- layout: '2006-01-02T15:04:05.999999999Z07:00'
- # Parse CRI-Containerd format
- - type: regex_parser
- id: parser-containerd
- regex: '^(?P<time>[^ ^Z]+Z) (?P<stream>stdout|stderr) (?P<logtag>[^ ]*) ?(?P<log>.*)$'
- output: extract_metadata_from_filepath
- timestamp:
- parse_from: attributes.time
- layout: '%Y-%m-%dT%H:%M:%S.%LZ'
- # Parse Docker format
- - type: json_parser
- id: parser-docker
- output: extract_metadata_from_filepath
- timestamp:
- parse_from: attributes.time
- layout: '%Y-%m-%dT%H:%M:%S.%LZ'
- # Extract metadata from file path
- - type: regex_parser
- id: extract_metadata_from_filepath
- regex: '^.*\/(?P<namespace>[^_]+)_(?P<pod_name>[^_]+)_(?P<uid>[a-f0-9\-]{36})\/(?P<container_name>[^\._]+)\/(?P<restart_count>\d+)\.log$'
- parse_from: attributes["log.file.path"]
- cache:
- size: 128 # default maximum amount of Pods per Node is 110
- # Update body field after finishing all parsing
- - type: move
- from: attributes.log
- to: body
- # Rename attributes
- - type: move
- from: attributes.stream
- to: attributes["log.iostream"]
- - type: move
- from: attributes.container_name
- to: resource["k8s.container.name"]
- - type: move
- from: attributes.namespace
- to: resource["k8s.namespace.name"]
- - type: move
- from: attributes.pod_name
- to: resource["k8s.pod.name"]
- - type: move
- from: attributes.restart_count
- to: resource["k8s.container.restart_count"]
- - type: move
- from: attributes.uid
- to: resource["k8s.pod.uid"]
- exporters:
- debug:
- verbosity: detailed
- service:
- pipelines:
- logs:
- receivers: [filelog]
- exporters: [debug]
|