在Ubuntu上自定义Filebeat输入的步骤
在自定义输入前,需确保Ubuntu系统已安装Filebeat。若未安装,可通过以下命令完成安装:
# 更新系统包列表
sudo apt update
# 添加Elastic官方GPG密钥(用于验证软件包完整性)
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# 添加Elastic官方APT仓库(以7.x版本为例,可根据需求替换)
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
# 更新APT包列表
sudo apt update
# 安装Filebeat
sudo apt install filebeat -y
Filebeat的自定义输入主要通过编辑/etc/filebeat/filebeat.yml配置文件实现。以下是常见场景的配置示例:
若需监控Ubuntu系统中的自定义日志文件(如/var/log/myapp/*.log),可添加以下配置:
filebeat.inputs:
- type: log # 输入类型为日志文件
enabled: true # 启用该输入
paths: # 指定日志文件路径(支持通配符)
- /var/log/myapp/*.log
scan_frequency: 10s # 扫描文件变化的频率(默认10秒,可根据需求调整)
ignore_older: 24h # 忽略超过24小时的旧文件(避免处理历史数据)
若需对日志数据进行预处理(如添加字段、过滤行),可使用processors配置。例如,添加add_fields处理器为每条日志添加自定义字段:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/*.log
processors:
- add_fields: # 添加自定义字段
target: "" # 添加到根层级(若需嵌套可改为"custom")
fields:
app_name: "myapp" # 自定义应用名称字段
environment: "production" # 环境字段
- drop_fields: # 可选:删除不需要的字段(如原始路径)
fields: ["log.file.path"]
若日志文件中的多行内容属于同一条事件(如Java异常堆栈),需配置multiline选项。例如,以^[0-9]{4}-[0-9]{2}-[0-9]{2}(日期格式)作为新行起点:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/*.log
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' # 匹配新行起点的正则表达式
negate: true # 反转匹配(即不符合pattern的行合并到上一行)
match: after # 将匹配行合并到上一行之后
修改filebeat.yml后,需通过以下命令验证配置语法是否正确:
sudo filebeat test config -e
若配置正确,将输出Config OK;若存在错误,需根据提示修正。
配置验证通过后,重启Filebeat服务以应用更改:
sudo systemctl restart filebeat
# 设置开机自启(可选,但建议开启)
sudo systemctl enable filebeat
通过以下命令查看Filebeat服务的运行状态,确认自定义输入是否正常工作:
sudo systemctl status filebeat
# 查看实时日志(过滤自定义输入相关的日志)
sudo journalctl -u filebeat -f | grep "myapp"
若日志中出现Starting input of type: log或自定义处理器的日志(如add_fields),说明自定义输入已生效。
chmod或chown调整权限)。harvester.buffer.size(harvester缓冲区大小,默认8192)和flush.min.events(批量发送事件的最小数量,默认1024)参数,提升处理性能。output.elasticsearch.ssl配置项)。