ELK日志分析--Filebeat

2023-11-09

  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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK日志分析--Filebeat 的相关文章

  • 【基于Docker-Compose安装ELK日志系统完整操作步骤】

    一 前言 ELK是三个开源软件的缩写 分别是Elasticsearch Logstash Kibana 一般情况下会结合FileBeat使用 Elasticsearch 是个开源分布式搜索引擎 它的特点有 分布式 零配置 自动发现 索引自动
  • 2020-10-14 KIBANA7 配置(搜索、可视化组件和仪表板)导出导入

    需求描述 线上Kibana的可视化图表跟仪表盘配置意外丢失了 还好测试环境有相同的配置 根据Kibana的功能进行配置的导出 gt 导入 避免手工一个一个重新配置的繁琐跟配置错误疏漏等情况 也同时进行下配置文件的导出备份工作 参考资料 官方
  • ELK+Filebeat日志分析系统

    目录 一 ELK基本介绍 1 ELK是什么 2 组件简介 2 1 ELK组件介绍 2 2 ELFK组件介绍 2 3 其它组件 4 使用ELK的原因 5 完整日志系统的基本特征 二 Elasticsearch的介绍 三 Logstash的介绍
  • ELK技术栈实践(一)

    通常 日志被分散的储存不同的设备上 如果你管理数十上百台服务器 你还在使用依次登录每台机器的传统方法查阅日志 这样是不是感觉很繁琐和效率低下 当务之急我们使用集中化的日志管理 例如 开源的syslog 将所有服务器上的日志收集汇总 集中化管
  • SpringBoot+Kafka+ELK 完成海量日志收集

    整体流程大概如下 服务器准备 在这先列出各服务器节点 方便同学们在下文中对照节点查看相应内容 SpringBoot项目准备 引入log4j2替换SpringBoot默认log demo项目结构如下 pom
  • ELK系列(三)、安装Logstash插件及打包离线安装包

    Logstash有input output filter codec 四种插件类型 支持的种类也很丰富 功能特别强大 选对正确的插件可以节省很多的资源占用和开发效率 生产环境一般都无法连接到公网 所以本篇就带大家如何在线安装 以及打包离线安
  • Kibana 导出csv

    过几秒就会出现下面这图 直接点击Download即可
  • Docker部署ELK(配置密码登录)及Elastalert企业微信告警配置

    ELK部署记录 部署Elasticsearch Kibana Cerebro 通过docker进行部署 可以避免很多缺少依赖的问题 推荐使用centos7环境进行部署 请提前安装好docker服务 docker compose服务 先新建一
  • ElasticSearch bulk批量插入数据

    环境 使用RestHighLevelClient进行bulk操作 代码如下 es 批量存数据的方法 1 创建es clent 2 创建bulk请求体 3 向bulk请求体中添加多个数据 4 发起rest请求 5 关闭client throw
  • ELK简介以及安装部署

    ELK近实时日志分析搜索系统 ELK简介 ELK 是 Elasticsearch Logstash Kibana 三大开源框架的首字母大写简称 市面上也被称为Elastic Stack 其中 Elasticsearch 是一个基于Lucen
  • 8.1.2-elasticsearch文本解析之自定义分词器及分词器匹配规则

    创建自定义analyzer 在具体的业务场景当中可能内置的analyzer并不能满足需求 这就需要能够自定义analyzer 前文已经说过analyzer由3部分组成 自定义analyzer就是通过配置以下三部分内容来实现的 序号 子构件
  • ELK 日志分析搭建

    目录 一 ELK概述 1 1 概述 1 1 1 Elasticsearch概述 1 1 2 Logstash概述 1 1 3 kibana概述 1 2 ELK解决处理的事务 1 3 ELK优点 二 ELK 搭建操作 2 1 实验配置环境 2
  • elasticsearch7.9 修改指定JDK

    错误 future versions of Elasticsearch will require Java 11 your Java version from usr local nlp java jdk1 8 0 162 jre does
  • Docker——搭建ELK

    安装Elasticsearch 1 拉取镜像 docker box home box docker pull elasticsearch 7 14 2 2 在宿主机准备配置文件 创建目录 docker box mkdir p server0
  • 8.2.3-elasticsearch内置分词器之keyword/pattern

    ES默认提供了八种内置的analyzer 针对不同的场景可以使用不同的analyzer 1 keyword analyzer 1 1 keyword类型及分词效果 keyword analyzer视字符串为一个整体不进行分词处理 测试key
  • 大数据课程M1——ELK的概述

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 了解ELK的定义 掌握ELK的使用 一 什么是ELK 1 简介 ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案 是三个产品的首字母缩写
  • 分布式日志收集(ELK)

    ELK简介 ELK Elasticsearch Logstash Kibana 是同一家公司开发的3个开源工具 可组合起来搭建海量日志分析平台 目前很多公司都在使用这种方式搭建日志分析平台进行大数据分析 参考 初识ES数据库 Logstas
  • ELK配置记录(filebeat+kafka+Logstash+Elasticsearch+Kibana)

    一 简介 elk日志平台 日志收集 分析和展示的解决方案 满足用户对 志的查询 排序 统计需求 elk架构 filebeat 采集 kafka Logstash 管道 Elasticsearch 存储 搜索 Kibana 日志应用 各组件功
  • elk之查询(单个或多个)type所有数据,条件查询,分页查询,排序

    java连接es 1 接口 查询 单个或多个 type所有数据 条件查询 分页查询 排序 param client param indexName param typeName public void searchAllStudent Tr
  • SpringBoot整合ELK教程

    SpringBoot整合ELK教程 1 基础概念 ELK 即 Elasticsearch Logstash Kibana 组合起来可以搭建线上日志系统 本文主要讲解使用 ELK 来收集测试框架产生的日志 Elasticsearch 用于存储

随机推荐

  • 优化算法——全局灵敏度分析算法(PAWN )(Matlab代码实现)

    欢迎来到本博客 本文目录如下 目录 1 概述 2 使基于SWAT 的高参数模型的 PAWN 和 Sobol 敏感性分析方法的比较 3 Matlab代码实现 1 概述 大量参数是复杂环境模型的主要问题 因为它限制了它们的应用 因此 旨在识别模
  • 华为ICT大赛实践赛备赛经验总结

    华为ICT大赛备赛经验总结 1 比赛形式 去年的省赛是个人赛形式 只有笔试 满分1000分 题目类型为 判断正误 单选 多选 省赛是考试的形式 最后取全校前三作为学校的代表队 然后和其他学校的代表队进行比较 分数最高的进入到国赛 国赛有实践
  • ES返回值数量超过10000条解决方式

    现象 ES默认返回数据量为10000条 当分页的from超过10000条的时候 es就会如下报错 Result window is too large from size must be less than or equal to 1000
  • 【JavaScript】关于手机中的触摸手势操作实现过程详解

    这里实现触摸手势操作的有四个基本方向 上 下 左 右 用javascript语言编写 可以参考下 笔者TA远方在一个文件名为gesture js写了 定义触摸操作中的所有手势 一共8个总方向 包括四个基本方向 还有一个点击 代码如下 con
  • 注解方式开发Servlet程序

    一 注解方式开发Servlet程序 package cn tedu servlet import javax servlet ServletException import javax servlet annotation WebServl
  • Spring MVC中如何使用forward进行请求转发呢?

    转自 Spring MVC中如何使用forward进行请求转发呢 下文讲述Spring MVC进行请求转发的2种方式简介说明 如下所示 Spring MVC种forward请求是一种服务器端请求方式 它无需通过客户端 可以提高系统的转发速度
  • linux sort uniq -c

    文档编辑 sort 功能说明 将文本文件内容加以排序 语 法 sort bcdfimMnr o lt 输出文件 gt t lt 分隔字符 gt lt 起始栏位 gt lt 结束栏位 gt help verison 文件 补充说明 sort可
  • Vue+element 首页业务实现

    接着上篇登录后 登录表单数据发送给服务器 验证成功后返回token口令 储存到浏览器会话窗口 方便登录过后的一些请求发送 统一封装的 axios 配置axios import axios from axios 请求的根路径 axios de
  • 京东苹果商品信息爬取(纯代码)

    from selenium import webdriver from selenium webdriver chrome service import Service from selenium webdriver common by i
  • 阿里云磁盘格式由MBR调整为GPT步骤示例

    阿里云磁盘容量大于2T时 需要将默认磁盘格式MBR 调整为GPT 且调整磁盘格式后 不可以使用磁盘快照回滚 来恢复磁盘里面的内容 磁盘快照也是原MBR格式的 oss扩容 直接升级到2T 磁盘扩容步骤示例 1 停止D盘的tomcat等服务 2
  • 正交矩阵

    UUT UTU I U U T U T U I
  • git format-patch

    转自 https blog csdn net wsclinux article details 53842418 1使用git format patch生成所需要的patch 当前分支所有超前master的提交 git format pat
  • docker安装postgresql 以及源码安装odoo12(全过程)

    通用命令 实时查看docker容器日志 docker container stop start nexus docker container stop start redis docker ps a 列出所有的容器 docker rm 容器
  • 国内达梦数据库相关函数-时间日期

    http blog itpub net 69995127 viewspace 2758308
  • 【Leetcode】比较版本号 c++

    题目描述 给你两个版本号 version1 和 version2 请你比较它们 版本号由一个或多个修订号组成 各修订号由一个 连接 每个修订号由 多位数字 组成 可能包含 前导零 每个版本号至少包含一个字符 修订号从左到右编号 下标从 0
  • vue2.0 element-ui中的el-select选择器无法显示选中的内容

    我使用的是element ui V2 2 3 代码如下 当我选择值得时候 el select选择器无法显示选中的内容 但是能触发change方法 并且能输出选择的值 select vue文件
  • Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7)

    Directx3D9学习之一 环境搭建与运行第一个程序环境配置 基于VS2012与win7 作者 lhqsine 一 搭建 DIRECTX 9 0 3D游戏开发编程基础 开发环境与第一个程序 1 下载directX库 vs2012以后的版本
  • (Mybatis学习笔记)Mybatis插件机制及源码分析

    Mybatis插件 1 Mybatis插件介绍 2 Mybatis插件原理 3 自定义Mybatis插件 4 源码分析 1 Mybatis插件介绍 在Mybatis中 它的四大组件 Executor StatementHandler Par
  • Linux 10个主流发行版本

    这里只表示做个记录 其实相关的介绍已经很多了 但是还是想怀缅一下青春 这10个Linux发行版来源于国外网站 最后给出链接 它列出了10个Linux发行版 包含一个FreeBSD Linux的胞兄弟 通常被认为是全球Linux用户最广泛使用
  • ELK日志分析--Filebeat

    ELK架构 Filebeat简介 Filebeat安装 Filebeat简单使用 专用日志搜集模块 案例模块 Nginx 模块 重读日志文件 使用Processors 处理器 过滤和增强数据 1 ELK架构 2 Filebeat简介 可以使