二、Filebeat

这篇具有很好参考价值的文章主要介绍了二、Filebeat。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

二、Filebeat

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

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

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

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

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

1. Filebeat安装

# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.13.2-linux-x86_64.tar.gz
# tar xzvf filebeat-7.13.2-linux-x86_64.tar.gz  -C /usr/local/
# mv /usr/local/filebeat-7.13.2-linux-x86_64  /usr/local/filebeat

Filebeat启动管理

1.前台运行

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

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

2.后台运行

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

使用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

另一种写法:

# vim /usr/local/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]
ExecStart=/usr/local/filebeat/filebeat  -c /usr/local/filebeat/filebeat.yml
Restart=always

[Install]
WantedBy=multi-usr.target

# systemctl daemon-reload
# systemctl start filebeat
# systemctl stop filebeat

2. Filebeat简单使用

准备测试数据

# 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" "-"

配置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
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

运行观察输出

# /usr/local/filebeat/filebeat   -c /usr/local/filebeat/filebeat.yml
{
  "@timestamp": "2021-06-23T12:19:42.365Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.13.2"
  },
  "ecs": {
    "version": "1.8.0"
  },
  "host": {
    "architecture": "x86_64",
    "os": {
      "type": "linux",
      "platform": "centos",
      "version": "8",
      "family": "redhat",
      "name": "CentOS Stream",
      "kernel": "4.18.0-294.el8.x86_64"
    },
    "id": "3d840c2596ce432e97b53dc4c13238d4",
    "containerized": false,
    "ip": [
      "192.168.19.100",
      "fe80::20c:29ff:fe94:e2e1"
    ],
    "mac": [
      "00:0c:29:94:e2:e1",
      "52:54:00:42:a0:5f",
      "52:54:00:42:a0:5f"
    ],
    "name": "filebeat",
    "hostname": "filebeat"
  },
  "log": {
    "offset": 0,
    "file": {
      "path": "/tmp/access.log"
    }
  },
  "message": "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\" \"-\"",
  "input": {
    "type": "log"
  },
  "agent": {
    "ephemeral_id": "576ab73f-c1ce-45eb-9fde-1e6652b997ef",
    "id": "eccd15f4-43d5-445d-bc88-08433419b771",
    "name": "filebeat",
    "type": "filebeat",
    "version": "7.13.2",
    "hostname": "filebeat"
  }
}

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

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

Filebeat进程日志

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

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

# ================================== Logging ===================================

# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
#logging.level: debug
path.logs: /var/log/   #添加此行即可

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

3. 专用日志搜集模块

查看可启用的模块列表

# /usr/local/filebeat/filebeat modules list
Enabled:

Disabled:
activemq
apache
auditd
aws
...
...

模块配置文件存储位置

[root@filebeat modules.d]# pwd
/usr/local/filebeat/modules.d

[root@filebeat modules.d]# ls
activemq.yml.disabled       f5.yml.disabled                misp.yml.disabled             
..
..

禁用模块

/usr/local/filebeat/filebeat modules disable 模块名

​ 例如:

# 方式一:
/usr/local/filebeat/filebeat modules enable nginx
# 方式二:指定filebeat.yml文件路径
/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml  modules enable nginx

启用模块

/usr/local/filebeat/filebeat modules enable 模块名

4. 示例模块-Nginx模块

准备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/"

启用 nginx 模块

./filebeat modules enable  nginx

# 方式二:指定filebeat.yml文件路径
/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml  modules enable nginx

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

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

vim /usr/local/filebeat/modules.d/nginx.yml
- module: nginx
  access:
    enabled: true
  error:
    enabled: true

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

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

情景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*"    

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

  • /var/log/nginx/access.log
  • /tmp/accesslog

测试:调用模块进行测试:./filebeat -e

配置output

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

output类型:

  • console 终端屏幕
  • elasticsearch 存放日志,并提供查询
  • logstash 进一步对日志数据进行处理
  • kafka 消息队列

完整output列表Filebeat 的官方文档。

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

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

注意:注释掉其他的 output

输出到 console

输出完整 JSON 数据

output.console:
  pretty: true

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

./filebeat

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

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

其他输出目标:

输出到 elasticsearch

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

更多关于 Elasticsearch 的配置参考官方文档

输出到 logstash

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

5. 重读日志文件

有时候处于实验目的,可能需要重新读取日志文件,这个时候需要删除安装目录下的 data 文件夹,重新运行 filebeat 即可。
二、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

[root@qq filebeat]# ps -ef |grep 'filebea[t]'
root      9156     1  1 1月26 ?       08:50:04 ./filebeat
[root@qq filebeat]#

6. 使用Processors(处理器)过滤和增强数据(扩展部分)

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

  • 减少导出字段的数量
  • 使用其他元数据增强事件
  • 执行其他处理和解码

工作方式

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

去重日志中的某些行

配置位置在 filebeat.yml 文件中

删除所有以 DBG: 开头的行

processors:
  - drop_event:
      when:
        regexp:
          message: "^DBG:"  # message为自定义字段
# 在/var/log/access.log中添加内容 “ABC”
echo ABC >> /var/log/access.log 

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

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

输出效果如下图所示:
二、Filebeat

从事件中删除某些字段

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

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

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

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

下面的配置示例是删除顶级字段 input 和 顶级字段 ecs 中的 version 字段。

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

删除之前⬇️

{
  ...
  "input": {
    "type": "log"
  },
  ...
  "ecs": {
    "version": "1.5.0"
  },
  ...
}

删除之后⬇️

{
  ...
  "ecs": {},
  ...
}

elds: [“field1”, “field2”, …]
ignore_missing: false


以上配置,将删除字段: `field1` 和 `field2`

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


⚠️ 注意: 事件中的 `"@timestamp` 和 `type` 字段是无法删除的。

下面的配置示例是删除顶级字段 `input` 和 顶级字段 `ecs` 中的 `version` 字段。

  • drop_fields:
    fields: [‘input’, “ecs.version”]

**删除之前**⬇️

{

“input”: {
“type”: “log”
},

“ecs”: {
“version”: “1.5.0”
},

}


**删除之后**⬇️

{

“ecs”: {},

}文章来源地址https://www.toymoban.com/news/detail-401987.html


官方完整的处理器列表:[**点我查看目前支持的所以处理器列表**](https://www.elastic.co/guide/en/beats/filebeat/current/defining-processors.html)

到了这里,关于二、Filebeat的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 部署Filebeat收集日志并转发到Elasticsearch

    Filebeat用于日志收集和传输,相比Logstash更加轻量级和易部署,对系统资源开销更小,如果对于日志不需要进行过滤分析的,可以直接使用filebeat。 这样就可以实现动态收集日志的功能了,但是这样有一点风险,logstash采集本地log4j产生的日志,然后输入进es里,如果吞吐量太大

    2024年02月16日
    浏览(30)
  • linux安装filebeat并收集日志到elasticsearch

    通过filebeat收集服务器上各个应用的日志到elasticsearch,通过tags区分不同的应用创建不同的索引保存日志。 https://www.elastic.co/cn/downloads/past-releases#filebeat 1:下载并解压(以7.9.3版本为例) 2:修改配置文件filebeat.yml filebeat.inputs: - type: log   enabled: true   paths:     - /logs/app1*.log  

    2024年02月01日
    浏览(39)
  • 部署ELK+Kafka+Filebeat日志收集分析系统

    ELK是三个软件的统称,即Elasticsearch、Logstash和Kibana三个开源软件的缩写。这三款软件都是开源软件,通常配合使用,并且都先后归于Elastic.co企业名下,故被简称为ELK协议栈。ELK主要用于部署在企业架构中,收集多台设备上多个服务的日志信息,并将其统一整合后提供给用户。

    2024年02月16日
    浏览(29)
  • ELK (一)部署ELK+Filebeat日志收集分析系统

    说明:此安装流程只适用于8.0.0以下的版本 1.1 下载ElasticSearch的wget指令: 1.2 解压安装包到指定目录 指定解压缩到 /usr/local 目录下 1.3 修改配置文件 (1)elasticsearch.yml 分别创建 path.data、path.logs 对应的 data、logs文件夹。 详细配置: (2)limits.conf 末尾追加以下内容: (3)s

    2024年02月08日
    浏览(36)
  • k8s-EFK (filebeat)日志收集

    使用elasticsearch+filebeat+kibana收集pod指定目录日志,filebeat用于收集日志,es用于存储,kibana用于展示。本例以收集部署于k8s内的nginx日志为例子。 1、部署es+kibana 2.创建filebeat配置文件(基于elasticsearch存储) 3、创建nginx-filebeat Sidecar(基于elasticsearch的配置) 4.kibana创建索引,查

    2024年02月15日
    浏览(32)
  • 搭建EFK(Elasticsearch+Filebeat+Kibana)日志收集系统[windows]

    EFK简介 Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。 FileBeats 是数据采集的得力工具。将 Beats 和您的容器一起置于服务器上,或者将 Beats 作为函数加以部署,然

    2024年02月08日
    浏览(44)
  • 【Elastic (ELK) Stack 实战教程】06、Filebeat 日志收集实践(下)

    目录 一、Filebeat 收集 Nginx 日志实践 1.1 为什么收集 Nginx 日志 1.2 Nginx 日志收集架构图 1.3 Nginx 日志收集实践 1.3.1 安装 Nginx  1.3.2 配置 filebeat 1.3.3 kibana 展示 1.4 Nginx json 日志收集实践 1.4.1 收集问题 1.4.2 解决方案 1.4.3 配置 json 1.4.4 配置 Filebeat 1.4.5 Kibana 展示 1.5 Nginx 多个日志收

    2024年02月01日
    浏览(32)
  • docker搭建Elk+Kafka+Filebeat分布式日志收集系统

    目录 一、介绍 二、集群环境 三、ES集群 四、Kibana  五、Logstash 六、Zookeeper 七、Kafka 八、Filebeat 八、Nginx (一)架构图  (二)组件介绍 1.Elasticsearch 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于

    2024年02月04日
    浏览(40)
  • filebeat+kafka+logstash+elasticsearch+kibana实现日志收集解决方案

    前言:我们使用nginx来模拟产生日志的服务,通过filebeat收集,交给kafka进行消息队列,再用logstash消费kafka集群中的数据,交给elasticsearch+kibana监控 服务器环境: 192.168.2.1:elasticsearch 192.168.2.2:filebeat+nginx 192.168.2.3:kafka 192.168.2.4:logstash elasticseatch+filebeat+kafka+logsstash(6.60)清

    2024年02月03日
    浏览(41)
  • Linux搭建ELK日志收集系统构建:Filebeat+Redis+Logstash+Elasticse

    一、ELK概述: ELK是一组开源软件的简称,其包括Elasticsearch、Logstash 和 Kibana。ELK最近几年发展迅速,已经成为目前最流行的集中式日志解决方案。 Elasticsearch: 能对大容量的数据进行接近实时的存储,搜索和分析操作。 本项目中主要通过Elasticsearch存储所有获取的日志。 Logst

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包