filebeat + logstash使用笔记

日志数据同步工具filebeat和logstash介绍和使用 官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。 阅读详情

背景

本文中有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正则表达式的行,追加至上一行后面。
(3)fields
通过fields新增三个字段hostip、service、component
(4)fields_under_root
将新增的三个字段hostip、service、component放置于json的顶层字段
(5)output.console
结果通过终端输出,注意如果使用systemcctl命令后台运行则不会输出,此配置只有前台运行才会生效
(6)output.logstash
输出至logstash

运行

用如下命令测试:

filebeat -e -c /etc/filebeat/filebeat.yml

由于配置中有output.console,通过终端输出示例如下:

{
  "@timestamp": "2024-07-31T13:35:24.159Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "8.13.0"
  },
  "agent": {
    "name": "host",
    "type": "filebeat",
    "version": "8.13.0",
    "ephemeral_id": "e8367621-cd9a-4fc2-ad71-be60f93976d5",
    "id": "0fef92e2-5af8-4706-ba2d-6f3cd1416f40"
  },
  "log": {
    "file": {
      "path": "/var/log/nova/nova-compute.log"
    },
    "offset": 1067
  },
  "message": "2023-05-10 23:21:52.593 7 INFO os_vif [-] Loaded VIF plugins: linux_bridge, noop, ovs",
  "input": {
    "type": "log"
  },
  "service": "nova",
  "ecs": {
    "version": "8.0.0"
  },
  "host": {
    "name": "host"
  },
  "component": "nova-compute",
  "hostip": "1.1.1.1"
}

配置文件测试无误后,可以使用systemctl start filebeat后台运行。

logstash

安装

官网(https://www.elastic.co/cn/downloads/logstash)下载rpm包并安装。

rpm -ivh logstash-8.14.1-x86_64.rpm

配置

logstash的配置文件目录为/etc/logstash/conf.d,logstsh会读取目录下的所有配置文件,从而可以分别启用不同的端口、进行不同的处理和输出。但是logstsh只会简单的将所有配置拼凑起来,从而导致结果混乱,本文中通过type字段进行区分。
新建openstack.conf如下:

input {
  beats {
    port => 5000 
    type => "openstack"
  } 
}
filter {
  if [type] == "openstack" {
    mutate {
      add_field => [ "[resource_pool]", "KVM01" ]
      gsub => ["message", "\n", " "]
    }
    grok {
      match => ["message", "(?<log_time>^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) %{INT:pid} %{LOGLEVEL:log_level} (?<module>(\S)+) (?<request_id>\[(\s|\w|\d|-)+\]) %{GREEDYDATA:log_message}"]
      tag_on_failure => ["_grokparsefailure_openstack"]
    }
    if "_grokparsefailure_openstack" in [tags] {  
      drop {}
    }
  }
}
output {
  if [type] == "openstack" {
    stdout { codec => rubydebug }
    file {
      path => "/var/log/openstack-log.log"
      codec => line {
        format => "%{resource_pool} %{[host][name]} %{hostip} %{service} %{component} %{log_time} %{log_level} %{module} %{request_id} %{log_message}"
      }
}
      gzip => false
    }
    kafka {
      bootstrap_servers => "2.2.2.2:8333,2.2.2.3:8333,2.2.2.4:8333"
      security_protocol => "SASL_PLAINTEXT"
      sasl_mechanism => "SCRAM-SHA-512"
      sasl_jaas_config => "org.apache.kafka.common.security.scram.ScramLoginModule required username='xxxxxxx' password='xxxxxxxxxxx';"
      topic_id => "OPENSTACK-LOG"
      codec => json {
        charset => "UTF-8" 
      }
    }
    elasticsearch {
      hosts => ["1.1.1.3:9200"]
    }
  }
}

其中部分配置解释如下:
(1)input
启动5000端口接受filebeat信息,并在接收的每一条消息中增加type字段
此外也可以用如下命令通过标准终端输入进行测试:

input {
  stdin {
    type => "openstack"
    codec => "plain"
  }
}

在终端中直接输入字符串,会默认作为message字段进行测试。
(2)filter
mutate
add_field:增加字段
gsub:将message字段中的换行符替换为空
grok
将message拆分:
匹配^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}的部分作为 log_time字段
数字作为pid字段
LOGLEVEL类型字符串作为log-level字段
匹配\S)+的部分作为module字段
匹配[(\s|\w|\d|-)+]的部分作为request-id
剩余的GREEDYDATA类型作为log-message字段
tag_on_failure
如果不匹配grok的规则,则在消息中增加"tags" => [0] "_grokparsefailure_openstack"并且丢弃
(3)output
本文中演示了stdout、file、kafka、elasticsearch四种对接方法

启动

用以下命令测试配置文件是否正确:

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/openstack.conf --config.test_and_exit

配置文件测试无误,用如下命令前台启动:

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/openstack.conf

检查无误后可以使用systemctl start logstash后台运行。

ELK整合实战,filebeat和logstash采集SpringBoot项目日志发送至ES 但此时,我们并没有开启并配置Logstash,所以FileBeat是无法连接到Logstash的。默认字段经过date插件处理后,会输出到@timestamp字段,所以,我们可以通过修改target属性来重新定义输出字段。例如:时间、日志级别、哪个类打印的日志、日志具体内容。在Logstash中可以配置过滤器Filter对采集到的数据进行过滤处理,Logstash中有大量的插件可以供我们使用。但注意,要在index中使用时间格式化,filter的输出必须包含 @timestamp字段,否则将无法解析日期。 阅读详情

相关推荐

Filebeat+Kafka+Logstash+ElasticSearch+Kibana+Springboot二次部署笔记

带着三年前分分钟搞定环境的优越感,在新的系统环境里重新搭建一套分布式日志采集系统,着实给自己坑了一把,今天把踩到的坑和经验总结一下,希望帮到后来的小伙伴。 先上一张成功的截图,喜悦一把:) ==================================华丽丽的分割线=========================================== ...

artaganan8的博客 5482

Logstash:用 Filebeat 把数据传入到 Logstash

在今天的讲座里,我们来讲述一下如何把Filebeat里的数据传入到Logstash之中。在做这个练习之前,我想信大家已经安装我之前的文章“如何安装Elastic栈中的Logstash”把Logstash安装好。 之前,我们介绍了一这样的一幅图: 如上图所示,我们可以直接把beats里的数据直接传入到Elasticsearch,也可以直接接入到Logstash之中。 数据采集流程: ...

Elastic 中国社区官方博客 1万+

Pytorch实现softmax多分类

PyTorch实现softmax多分类

天涯雨的博客 1387

ELK之使用Filebeat插件收集日志到Logstash

Filebeat是转发和收集数据的轻量级工具,可以监视指定的日志文件或位置,收集日志,并将数据转发到Elasticsearch或Logstash进行存储

zuihongyan518的博客 2505

交换芯片数据通路四大核心微架构深度解析

数据通路是交换芯片性能的物理根基,决定着低延迟、高吞吐与突发承载能力。其本质是在硅片约束下对带宽、时序、功耗与统计复用的系统性权衡。Crossbar提供确定性低延迟但受RC延迟与功耗制约;VOQ通过虚拟队列隔离输出争抢,却引入仲裁复杂度与内存开销;Shared Buffer依托统计复用提升缓存利用率,但面临碎片化与管理策略挑战;Cell Fabric以固定长度cell重构交换粒度,在AI与金融等小包敏感场景实现尾延迟稳定。这些架构并非替代关系,而是面向不同网络不确定性(如流量不对称性、突发强度、包长分布)的

weixin_32667955的博客 189

uniapp [全端兼容] - 最新详细实现拍摄视频录像并可播放预览视频,调起本机摄像头开启录像录制完毕后保存到本机临时存放,可对拍摄的视频进行压缩处理减少文件大小不损失画质,详解录制视频并读取播放!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,录视频,拍视频,拍摄录制视频后上传服务器,调起摄像头录视频并可预览,录视频上传,录像,uniapp录制视频并上传,录制视频并保存到本地设备,如何本地保存并播放预览,提供给用户观看MP4视频录像并上传到后端服务器完整功能源码,视频压缩,mp4文件,删除视频,录像后怎么预览,临时视频文件怎么减少压缩大小,视频压缩及上传,自己录视频并生成可播放的文件,录视频并能打开查看,视频压缩后上传,本机相册,录完怎么预

🏆 前端领域优质创作者 1万+

ELK Filebeat采集日志推送到Logstash

Filebeat介绍 Filebeat是一个轻量级的日志采集器,将采集的数据推送到Logstash、ES存储。 logstash是可以日志采集,但是资源消耗比较大,其主要功能是日志的过滤以及格式化的输出,也就是独立作为日志格式化输出的。使用filebeat是代替其采集功能,消耗的资源小,哪台机器需要日志采集就部署filebeat。 filebeat.config.modules: filebeat里面内置了一些模块,这些模块可以对特定的软件进行采集,像nginx mysql这些 可以使用其对应的

小楼一夜听春雨,深巷明朝卖杏花 7138

环境配置与基础教程:2026大厂标准:使用 DVC (Data Version Control) 实现 YOLO 数据集版本控制全链路管理

本文介绍了使用DVC 3.0对YOLO数据集进行全链路版本控制的方法。主要内容包括: DVC 3.0的核心增强:内容块级缓存去重、并行云传输、AI智能体元数据跟踪等新特性,可显著提升YOLO数据集管理效率。 环境配置:详细说明DVC 3.0的安装步骤、项目初始化方法以及远程存储配置方案(支持S3、GCS、Azure等多种存储后端)。 目录结构规范:提供符合大厂MLOps标准的项目目录结构设计。 实战操作: 原始数据版本化 多格式标注数据版本控制 版本切换方法 优势说明:DVC通过哈希指针机制管理大型数据集,

ZXSXJ的博客 148

ELK测试笔记-filebeat输出到logstash

测试说明通过filebeat监控nginx日志(已配置为json格式)。之后直接输出到logstash。filebeat配置增加部分: output.logstash: # The Logstash hosts hosts: [“192.168.100.34:5044”] index: shopweblogstash配置input { beat { por

Jianblog's VED 1万+

如何做好软件需求分析?

软件需求分析也称为系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。软件开发一般包括:可行性分析、需求分析、软件设计、软件开发、软件测试、软件实施、软件服务等步骤,需求分时软件开发的第一步骤。用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。

qq_41854911的博客 1415

100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)

100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)

努力让自己发光,对的人才能迎着光而来 8万+

日志收集笔记(Filebeat 日志收集、Logstash 日志过滤)

Filebeat 是使用 Golang 实现的轻量型日志采集器,也是 Elasticsearch stack 里面的一员。本质上是一个 agent ,可以安装在各个节点上,根据配置读取对应位置的日志,并上报到相应的地方去。

KeePCoding 2891

Vue3 - Element Plus上传组件el-upload上传多个文件时,让on-change监听事件仅执行一次并获取最终文件列表方法(开启多选文件并手动上传,拿到文件列表统一循环调用接口上传)

vue3,elementplus,Upload上传,el-upload,文件上传组件,上传组件on-change里执行多次,取消自动上传后change重复执行问题,upload上传多个文件后导致on-change执行多次拿不到最终文件列表,Element-plus的upload组件on-change不断执行怎么办,上传多个文件多次执行调用,上传多个文件时如何只执行一次on-change方法拿到最终的文件列表,vue3elementplus上传组件开启多个上传后导致change方法执行好几次,仅调用一

🏆 前端领域优质创作者 1万+

ELK学习笔记之Logstash和Filebeat解析对java异常堆栈下多行日志配置支持

0x00 概述 logstash官方最新文档。假设有几十台服务器,每台服务器要监控系统日志syslog、tomcat日志、nginx日志、mysql日志等等,监控OOM、内存低下进程被kill、nginx错误、mysql异常等等,可想而知,这是多么的耗时耗力。logstash采用的是插件化体系架构,几乎所有具体功能的实现都是采用插件,已安装的插件列表可以通过bin/logstas...

dengxiangbao3167的博客 1197

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 998

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ELK技术栈全套学习笔记(Elasticsearch+Logstash+Filebeat)

支持文件、TCP/UDP、Kafka、MySQL、Beats、HTTP 等多种数据源,生产最常用beats 插件(对接 Filebeat)。# 对接Filebeat输入配置input {beats {port => 5044 # 固定端口,与Filebeat输出端口一致# 文件输入配置input {file {sincedb_path => "/dev/null" # 不记录读取位置,每次从头读取。

yexiaoxiq的博客 545

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【运维笔记】docker + elasticsearch + kibana + logstash + filebeat + springboot 实现多模块日志收集系统(详细步骤版)

Centos7.5 docker-24.0.6 + elasticsearch-7.4.0 + kibana-7.4.0 + logstash-7.4.0 + filebeat-7.4.0 + springboot 实现多模块日志收集。

seesun2012的专栏 626

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ELK学习笔记之CentOS 7下ELK(6.2.4)++LogStash+Filebeat+Log4j日志集成环境搭建

0x00简介 现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的。 经过仔细的分析和研究,确定下面的架构应该是比较合理的之一(Filebeat也支持直接写到ES),如果可以的话,Filebeat也可以不直接连到Logstash,先写到kafka,然后...

dengxiangbao3167的博客 730

写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)

写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)

p15097962069的博客 139

在记录文档和传输日志方面,有多种工具可供选择,这些工具各具特色,适用于不同的场景和需求。以下是一些常见的记录文档和传输日志的工具:记录文档的工具Evernote功能特点:Evernote是一款

在记录文档和传输日志方面,有多种工具可供选择,这些工具各具特色,适用于不同的场景和需求。

weixin_60830013的博客 644

写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)...

接前一篇CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南,继续对ELK。 logstash官方最新文档https://www.elastic.co/guide/en/logstash/current/index.html。假设有几十台服务器,每台服务器要监控系统日志syslog、tomcat日志、nginx日志、mysql日志等等,监控OOM、内存...

weixin_34010949的博客 323

elk9.1安装笔记

我使用的是ubuntu apt安装的。

qq_27371173的博客 568
上一篇: drain3学习笔记
下一篇: docker-compose笔记
Re_Virtual
博客等级 码龄16年 88粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值