如何将filebeat和logstash接入OpenStack进行日志管理?
摘要:背景 本文原发布于CSDN,现搬运至此,免得某天突然变成VIP文章,自己都看不了。 文中有2台主机: (1)1.1.1.1是OpenStack的nova节点,安装filebeat (2)1.1.1.2是logstash节点 在1.1.1.1
背景
本文原发布于CSDN,现搬运至此,免得某天突然变成VIP文章,自己都看不了。
文中有2台主机:
(1)1.1.1.1是OpenStack的nova节点,安装filebeat
(2)1.1.1.2是logstash节点
在1.1.1.1上通过filebeat读取OpenStack的nova-compute组件日志(/var/log/nova/nova-compute.log)的增量日志送至logstash,处理后送至下一步环节(终端输出、写入文件、kafka、elasticsearch)。
nova-compute日志格式示例如下:
2023-05-10 23:21:53.513 7 INFO nova.virt.driver [req-59da3b8b-04ed-446d-8d3e-838d3918bdc8 - - - - -] Loading compute driver 'libvirt.LibvirtDriver'
日志格式为“日期 时间 进程id(网上未查到信息) 日志等级 代码模块 请求id 日志正文”。
filebeat
安装
本文从官网(https://www.elastic.co/cn/downloads/beats/filebeat)下载rpm包并安装。
rpm -ivh filebeat-8.13.0-x86_64.rpm
配置
修改/etc/filebeat/filebeat.yml如下:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nova/nova-compute.log
start_position: end
multiline.pattern: '^\d{4}-\d{2}-\d{2}\s'
multiline.negate: true
multiline.match: after
fields:
hostip: 1.1.1.1
service: nova
component: nova-compute
fields_under_root: true
output.console:
pretty: true
enable: true
output.logstash:
hosts: ["1.1.1.2:5000"]
其中部分配置解释如下:
(1)start_position
start_position: end表示从末尾开始读取,则文件中原有的历史日志都会被忽略。
(2)multiline
multiline.pattern: '^\d{4}-\d{2}-\d{2}\s'
multiline.negate: true
multiline.match: after
针对日志正文可能出现的换行符情况,对不匹配^\d{4}-\d{2}-\d{2}\s正则表达式的行,追加至上一行后面。
