ELK日志分析--Filebeat

news/2024/3/29 21:53:41/文章来源:https://blog.csdn.net/qq_47800859/article/details/129168490
  1. ELK架构

  2. Filebeat简介

  3. Filebeat安装

  4. Filebeat简单使用

  5. 专用日志搜集模块

  6. 案例模块-Nginx 模块

  7. 重读日志文件

  8. 使用Processors(处理器)过滤和增强数据

1.ELK架构

2.Filebeat简介

可以使用 Filebeat 收集各种日志,之后发送到指定的目标系统上,但是同一时间只能配置一个输出目标。

Filebeat 会对配置好的日志内容进行收集,第一次会从每个文件的开头一直读到当前文件的最后一行。

每一行称为一个事件,格式是一个包含很多字段的大字典,也就是 JSON 格式的数据。在 Filebeat中负责完成这个动作的官方称它为 Harvester (收割机)。

每个事件将来会被保存到 Elasticsearch 中

在收割机读到文件的最后,会停止工作。直到文件有新的内容写入才继续工作。

3.Filebeat安装

        3.1安装filebeaat

# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.6.2-linux-x86_64.tar.gz

# tar xzvf filebeat-8.6.2-linux-x86_64.tar.gz -C /usr/local/

# mv /usr/local/filebeat-8.6.2-linux-x86_64 /usr/local/filebeat

1.前台运行

        filebeat采用前台运行的方式查看Filebeat获取的日志结果

2.后台运行

        使用nohup方式启动Filebeat到后台,日志结果可查看nohup.out文件

        3.2Filebeat启动管理

使用systemd管理的后台方式启动Filebeat进程不能查看输出日志,测试阶段勿用

配置systemd方式的Filebeat启动管理文件:

# vim /usr/lib/systemd/system/filebeat.service      
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Wants=network‐online.target
After=network‐online.target
[Service]
User=root
Group=root
Environment="BEAT_CONFIG_OPTS=-c /usr/local/filebeat/filebeat.yml"
ExecStart=/usr/local/filebeat/filebeat $BEAT_CONFIG_OPTS
Restart=always
[Install]
WantedBy=multi‐user.target

# systemctl daemon-reload          重新加载
# systemctl start  filebeat

4.Filebeat简单使用

        4.1准备测试数据

# vim /tmp/access.log
123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"

        4.2  配置Filebeat 的输入和输出

# vim /usr/local/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true  #改
  paths:  
    - /tmp/*.log #改 指定需要收集日志的路径,支持通配符可以写多个
filebeat.config.modules: # 内置的收集日志的模块配置文件的存放路径
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false  # 当模块的配置文件有更新时,此程序是否要自动加载,false不加载,true 加载
setup.template.settings:
  index.number_of_shards: 1

output.console:  #添加 输出到终端即屏幕上
  pretty: true

# 输出到 logstash
#output.logstash:
  #  logstash 的 IP和端口
  #hosts: ["172.26.139.148:5044"]
processors: #改
  - add_host_metadata:  # 添加此主机的源数据信息到输出数据中,比如 IP MAC OS 等信息
      when.not.contains.tags: forwarded

        4.3  运行观察输出

# /usr/local/filebeat/filebeat   -c /usr/local/filebeat/filebeat.yml

找不到配置文件可使用-c指定配置文件位置

./filebeat -c /usr/local/filebeat/filebeat.yml

Filebeat进程日志

filebeat本身运行日志默认位置   /usr/local/filebeat/logs/filebeat

要修改Filebeat的日志路径,可以添加如下内容在配置文件 filebeat.yml 中实现:

这样设置后,filebeat 启动后,日志的目录是 /var/log/, 日志的文件名为 filebeat ,每次启动或者重启程序会生成一个新的日志文件 filebeat, 旧的日志命名为 filebeat.1 依次类推。 

5.专用日志搜集模块

        5.1查看可启用的模块列表

# /usr/local/filebeat/filebeat modules list -c /usr/local/filebeat/filebeat.yml

        5.2  模块配置文件存储位置;禁用;启用

模块配置文件存储位置:/usr/local/filebeat/modules.d

禁用模块:/usr/local/filebeat/filebeat modules disable 模块名

启用模块:/usr/local/filebeat/filebeat modules enable  模块名

6.案例模块-Nginx 模块

        6.1准备 Nginx 示例日志

访问日志示例文件:

# vim /var/log/access.log
123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"

错误日志示例文件:

# vim /var/log/error.log
2021/03/04 10:50:28 [error] 11396#0: *5 open() "/farm/bg.jpg" failed (2: No such file or directory), client: 123.127.39.50, server: localhost, request: "GET /bg.jpg HTTP/1.1", host: "81.68.233.173", referrer: "http://81.68.233.173/"

        6.2  启用 nginx 模块

        6.3  情景1:使用模块默认的日志路径

修改 modules.d/nginx.yml 文件内容如下:

nginx 模块搜集日志的默认路径是:

  • /var/log/nginx/access.log*

  • /var/log/nginx/error.log*

        6.4  情景2:使用非默认路径(适用于所有的模块)

假如所要搜集的日志真实路径和日志收集模块默认的路径不一致,可以配置 var.paths: 属性进行配置。            var.paths

接收的值是一个包含一个以上的日志绝对路径列表。接收的值是一个数组

用于给日志文件设置自定义路径的。如果不设置此选项,Filebeat将根据您的操作系统选择路径选择使用默认值
可以使用如下方式配置:

- module: nginx
  access:
    enabled: true
    var.paths: ["/opt/nginx/log/nginx/access.log*", "/opt/nginx/log/error.log*"]

或者下面的方式:

- module: nginx
  access:
    enabled: true
    var.paths:
      - "/opt/nginx/log/nginx/access.log*"
      - "/opt/nginx/log/error.log*"

        6.5  测试

var.paths 指定的路径,是以追加的方式和模块默认路径合并到一起的,也就是说假如模块的默认路径有具体的日志文件 /var/log/nginx/access.log。 这里 var.paths 也配置了路径 /tmp/log/nginx/access.log ,那么最终 Filebeat 收集的日志路径将会是:

  • /var/log/nginx/access.log

  • /tmp/log/nginx/access.log

测试:调用模块进行测试:

        # /usr/local/filebeat/filebeat -e 

        6.6  配置output

        (一)概述

简介:

Filebeat 是用于搜集日志,之后把日志推送到某个接收的系统中的,这些系统或者装置在 Filebeat 中称为 output

output类型:

  • console 终端屏幕

  • elasticsearch 存放日志,并提供查询

  • logstash 进一步对日志数据进行处理

  • kafka 消息队列

完整output列表:

https://www.elastic.co/guide/en/beats/filebeat/current/configuring-output.html

具体配置方式是编辑主配置文件 :   /usr/local/filebeat/filebeat.yml

filebeat 运行的时候,以上的 output 只可配置其中的一种。

注意:注释掉其他的 output

        (二)输出到 console

输出完整 JSON 数据:

output.console:
  pretty: true

进入到 filebeat 的安装目录下,执行命令前台运行

# ./filebeat   -c /usr/local/filebeat/filebeat.yml

如果只想输出完整Json数据中的某些字段:

output.console:
  codec.format:
    string: '%{[@timestamp]} %{[message]}'

        (二)输出到 elasticsearch、 logstash

elasticsearch:

output.elasticsearch:
  hosts: ['http://es01:9200', 'http://es02:9200']

elasticsearch配置的官方文档:

https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html

logstash:

output.logstash:
  hosts: ["127.0.0.1:5044"]

7.重读日志文件

        7.1

有时候处于实验目的,可能需要重新读取日志文件,这个时候需要删除安装目录下的 data 文件夹,重新运行 filebeat 即可。

假如出现如下报错,请删除安装目录中的 data 文件夹 :

Exiting: data path already locked by another beat. Please make sure that multiple beats are not sharing the same data path (path.data). 

查看一下是否有一个进程已经处于运行状态,尝试杀死此进程,之后重新运行 filebeat

8.使用Processors(处理器)过滤和增强数据

        8.1  概述

可以在配置中定义处理器,以便在事件发送到配置的输出之前对其进行处理。libbeat库提供以下处理器:

  • 减少导出字段的数量

  • 使用其他元数据增强事件

  • 执行其他处理和解码

        8.2  工作方式

每个处理器都接收一个事件,对该事件应用已定义的操作,然后返回该事件。如果定义处理器列表,则将按照在Filebeat配置文件中定义的顺序执行它们。

        8.3  去重日志中的某些行

配置位置在 filebeat.yml 文件中

删除所有以 DBG: 开头的行:

processors:
  - drop_event:
      when:
        regexp:
          message: "^DBG:"  # message为自定义字段

        8.4  向输出的数据中添加某些自定义字段

processors:
  - add_fields:
      target: project  # 要添加的自定义字段key名称
      fields:
        name: myproject
        id: '574734885120952459'

        8.5   从事件中删除某些字段

processors:
  - drop_fields:
      fields: ["field1", "field2", ...]
      ignore_missing: false

以上配置,将删除字段: field1field2

ignore_missing 的值为 false 表示,字段名不存在则会返回错误。为 true 不会返回错误。

注意: 事件中的 "@timestamptype 字段是无法删除的。

        8.6  案例

删除顶级字段 input 和 顶级字段 ecs 中的 version 字段。

  - drop_fields:
     fields: ['input', "ecs.version"]

配置之前:

 配置之后:

官方完整的处理器列表:

https://www.elastic.co/guide/en/beats/filebeat/current/defining-processors.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73043.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试面试题 —— 整理与解析(1)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

【华为OD机试真题】用 C++ 实现 - 数字加减游戏

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

程序员如何发展第二职业?这几种副业方式超赚钱

很多程序员曾表示,虽然月薪一两万,但有时候还是会焦虑。 尤其是遇上了年初裁员年底裁员这样的就业环境,焦虑就会逐步放大,这时候副业赚钱的重要性就体现出来了。 发展第二职业,可以让程序员们增加抗风险能力&#xf…

数据结构-考研难点代码突破(树型查找 - 红黑树(RBT)插入流程图,删除)

文章目录1. 红黑树的定义和性质红黑树的插入操作流程红黑树的删除(了解)1. 红黑树的定义和性质 红黑树查找与删除的效率和AVL树相同。 但是因为AVL树在插入或删除节点可能破坏AVL树结构,而重新调整树的开销大。所以引出了红黑树。 红黑树的…

【Jmeter】ForEach控制器

一、什么是ForEach控制器 ForEach控制器是遍历某个数组读取不同的变量值,来控制其下的采样器或控制器执行一次或多次。而这个数组可以是用户自定义变量,也可以是从前面接口请求中提取到需要的数据,然后进行遍历循环。 二、ForEach控制器相关…

技能提升:Python技术应用工程师职业技能提升

职业技术培训-Python技术应用工程师分为高级培训班、中级培训班及初级培训班。 Python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的语言。最初被设计用于编写自动化脚本Shell(适用于Linux操作系统&#xf…

Linux PWM 开发指南

Linux PWM 开发指南 1 概述 1.1 编写目的 介绍 PWM 模块的详细设计方便相关人员进行 PWM 模块的代码设计开发。 1.2 使用范围 适用于 Linux-3.10,linux-4.4 和 Linux-4.9 内核,Linux-5.4 内核。 1.3 相关人员 PWM 驱动的开发人员/维护人员等 2 术…

数据库系统概论——绪论

1、绪论 1.1、数据库系统概述 数据库系统的构成示意图 1.1.1、数据库系统基本概念 基本概念:数据、数据库、数据库管理系统和数据库系统 1)数据(data) 定义:描述事物的符号记录称为数据数据是数据库中存储的基本对象…

中科检测赴中科院广州电子CASAIM开展座谈会,围绕3D打印、三维扫描和精密测量展开深入交流

2月9日,中科检测技术服务(广州)股份有限公司(简称:中科检测)一行到访中科院广州电子技术有限公司,参观广东省增材制造工程实验室和三维扫描及精密测量重点实验室,就3D打印、三维扫描和精密测量相关技术内容…

NTP同步时钟为医院提供标准的时间信号

NTP同步时钟应用于城市重要公共领域,如车站、学校、医院、等。NTP同步时钟可提供准确的公众时间,为人们的日常生活提供便利,避免了因时钟不准确而带来的不便。NTP同步时钟采用智能模块化设计,与同类产品相比,更突出了安…

JavaScript Web API实战:7个小众技巧让你的网站瞬间提升用户体验

随着技术的日新月异,为开发人员提供了令人难以置信的新工具和API。但据了解,在100 多个 API中,只有5%被开发人员积极使用。 让我们来看看一些有用的Web API,它们可以帮助您将网站推向月球! 1、 截屏接口 Screen Capt…

ELK日志分析--Logstash

Logstash简介 Logstash安装 测试运行 配置输入和输出 使用Geoip过滤器插件增强数据编辑 配置接收 Beats 的输入 1.Logstash简介 Logstash管道具有两个必需元素input和output,以及一个可选元素filter。输入插件使用来自源的数据,过滤器插件根据你的…

shell的测试语句

一、shell的条件测试语句 在写shell脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文件状态或进 行数字测试,只有这些测试完成才能做下一步动作。 1.1、shell脚本中的条件测试如下: 1、文件测试 2、字符串测试 3、数…

《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(带解析)(三)

声明:此系列答案配套《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误…

java JMM 内存屏障

内存屏障的目的 每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一…

基于SPI的增强式插件框架设计

很久之前,为了诊断线上的问题,就想要是能有工具可以在线上出问题的时候,放个诊断包进去马上生效,就能看到线上问题的所在,那该是多么舒服的事情。后来慢慢的切换到 java 领域后,这种理想也变成了现实&#…

【selenium 自动化测试】如何搭建自动化测试环境,搭建环境过程应该注意的问题

最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的…

2023年PMP考试应该注意些什么?

首先注意(报考条件) 2023年PMP考试报名流程: 一、PMP英文报名: 英文报名时间无限制,随时可以报名,但有一年的有效期,所以大家尽量提前报名,在英文报名有效期内进行中文报名。 英…

深度卷积对抗神经网络 进阶 第三部分 GANs Unpaired Translation with Cycle GAN 模型

非配对的图像转换应用 Unpaired Image-to-Image Translation Unpaired image-to-image translation 主要用于学习两组图像之间的对应关系,检查和寻找两堆数据中的共同内容(content)以及每堆独有的特点(style)。而这个…

【Database-03】从 MySQL 迁移到 达梦数据库(DM 8)

1、环境 源数据库 MySQL 8.30 目标数据库 DM 8 操作系统 Centos 9 Steam 迁移工具 DM 数据迁移工具 (DM DTS) 2、开始迁移 2.1、打开DM数据迁移工具 在新建工程对话框中填写工程名和工程描述信息,点击【确定】按钮,成功添加了一个工程。 2.2、新建迁…