blob: 01da4f894457da55daf92972de7b76e6bf3060b1 [file] [log] [blame]
# Copyright (c) 2020 Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# input plugin to collect openolt logs
# formating the input logs using regex and creating a feilds such as level, instanceId, caller and msg.
<source>
@id openolt.log
@type tail
path /var/log/openolt.log
pos_file /var/log/td-agent/openolt.log.pos
read_from_head true
tag openolt
<parse>
@type multiline
format_firstline /\[(\d+)(.\s+)(?<level>\w+)(?<instanceId>[\s]\w+)(\s+)\](?<caller>.\w+...\s\d+)(.\s)/
format1 /\[(\d+)(.\s+)(?<level>\w+)(?<instanceId>[\s]\w+)(\s+)\](?<caller>.\w+...\s\d+)(.\s)(?<msg>.*)/
</parse>
</source>
# Formating the `instanceId` field by concating with the device `Ip Address`.
# For example: If the extracted value for the field 'instanceId' is `OPENOLT` and `Ip` of the device is `192.x.x.x` after concating the
# `instanceId` will be "OPENOLT-192.x.x.x"
# The log levels which are coming in the logs are like 'I', 'E' etc so replacing the log level 'I' to 'info', 'W' to 'warn' and 'E' to 'error'
<filter openolt.**>
@type record_transformer
enable_ruby true
<record>
instanceId ${record["instanceId"]}-${"#{(Socket.ip_address_list.detect do |intf| intf.ipv4_private? end).ip_address}"}
level ${if record['level'] == 'I' then 'info' elsif record['level'] == 'W' then 'warn' else 'error'; end}
</record>
</filter>
# input plugin to collect dev_mgmt_daemon logs
# formating the input logs using regex and creating a feilds such as level, instanceId, caller and msg.
<source>
@id dev_mgmt_daemon.log
@type tail
path /var/log/dev_mgmt_daemon.log
pos_file /var/log/td-agent/dev_mgmt_daemon.log.pos
tag dev_mgmt
read_from_head true
<parse>
@type multiline
format_firstline /\[(\d+)(.\s+)(?<level>\w+)(?<instanceId>[\s]\w+)(\s+)\](?<caller>.\w+...\s\d+)(.\s)/
format1 /\[(\d+)(.\s+)(?<level>\w+)(?<instanceId>[\s]\w+)(\s+)\](?<caller>.\w+...\s\d+)(.\s)(?<msg>.*)/
</parse>
</source>
# Formating the `instanceId` field by concating with the device `Ip Address`.
# For example: If the extracted value for the field 'instanceId' is `SW_UTIL` and `Ip` of the device is `192.x.x.x` after concating the
# `instanceId` will be "SW_UTIL-192.x.x.x"
# The log levels which are coming in the logs are like 'I', 'E' etc so replacing the log level 'I' to 'info', 'W' to 'warn' and 'E' to 'error'
<filter dev_mgmt.**>
@type record_transformer
enable_ruby true
<record>
instanceId ${record["instanceId"]}-${"#{(Socket.ip_address_list.detect do |intf| intf.ipv4_private? end).ip_address}"}
level ${if record['level'] == 'I' then 'info' elsif record['level'] == 'W' then 'warn' else 'error'; end}
</record>
</filter>
# input plugin to collect system logs
# formating the input logs using regex and creating a feilds such as host, caller and msg.
<source>
@type syslog
port 42185
tag system
format /(.*\S \d{1,2}:\d{1,2}:\d{1,2}.)(?<host>[^\s]\w+) (?<caller>[^\s][^:]+)(.)(?<msg>.*)/
</source>
<filter **>
@type stdout
</filter>
# Output elasticsearch plugin
# provide host and port of elasticsearch
<match **>
@id elasticsearch
@type elasticsearch
@log_level info
include_tag_key true
host localhost
port 9200
scheme http
ssl_verify false
logstash_format true
reconnect_on_error true
reload_on_failure false
reload_connections false
<buffer>
@type file
path /var/log/td-agent/buffer/elasticsearch
flush_mode interval
retry_type exponential_backoff
flush_thread_count 8
flush_interval 5s
retry_max_interval 30
chunk_limit_size 32MB
queue_limit_length 8
overflow_action block
</buffer>
</match>