elk笔记10--filebeat使用

2023-11-07

1 filebeat 介绍

Filebeat 是一个用于转发和集中化日志数据的轻量级工具,它一般作为agent安装在服务器上。它监控日志文件和文件夹,收集日志事件,并转发到logstash、ES或者Kafka。
Filebeat的流程图如下,当filebeat运行后,其根据指定的log日志位置,启动一个或者多个input。 对于每一个定位跟踪的日志,filebeat都为启动一个独特的harvester(收割机), harvester会读取一条新日志内容,并将其发送到libbeat, libbeat收集一些列的事件,并将收集的日志发送到对应的output。
Filebeat

2 filebeat 使用案例

2.1 软件安装

  1. 下载filebeat bin文件,解压即可用
    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.0-linux-x86_64.tar.gz
    tar xzvf filebeat-7.8.0-linux-x86_64.tar.gz
  2. 通过deb包安装
    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.0-amd64.deb
    sudo dpkg -i filebeat-7.8.0-amd64.deb

2.2 采集数据到 kafka

  1. 配置yml
    # https://www.elastic.co/guide/en/beats/filebeat/index.html
    默认向elasticsearch写数据,需要将elasticsearch注释掉。
    - type: log
      enabled: true #此处必须为true否则不生效
      paths:
        - /var/log/syslog
    output.kafka:
      topic: 'syslog001'
      hosts: ["10.120.75.102:9092", "10.120.75.103:9092", "10.120.75.107:9092"]
      enabled: true
      codec.format:
        string: '%{[message]}'
      partition.round_robin:
        reachable_only: false
      required_acks: 1                
      compression: gzip
      max_message_bytes: 1000000 
    
  2. 创建对应topic:
    bin/kafka-topics.sh --create --zookeeper 10.120.75.102:2181 --replication-factor 1 --partitions 1 --topic syslog001
    Created topic syslog001.
  3. 创建对应rollover索引
    PUT /%3Csyslog001-%7Bnow%2Fd%7D-000001%3E
    {
      "aliases": {
      "syslog001_write": {}
      }
    }
    
  4. 启动filebeat:
    ./filebeat [-e] -c filebeat.yml &
    -e 可以省略
  5. kafka查看是否收到数据:
    $ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 [–from-beginning] --topic syslog001
    Jul 5 20:45:01 xg kernel: [5108113.014561] sadc[7456]: segfault at 1 ip 00007f7837f2051f sp 00007ffd072c92e8 error 4 in libc-2.24.so[7f7837e96000+195000]
    [–from-beginning]无该选项则消费最新的数据,有该选项则从头开始消费。
  6. 查看数据是否到es
    若配置了kafka采集数据的话,可以直接在es中查看数据是否到es,具体配置方法见:elk笔记5–logstash使用
    GET syslog001_write/_count 或者_serach 查看具体数据

2.3 采集数据到 es

  1. 配置yml
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/dmesg
    output.elasticsearch:
     # Array of hosts to connect to.
        hosts: ["http://10.120.75.102:9201","http://10.120.75.103:9201","http://10.120.75.107:9201"]
        indices:
          - index: "dmesg001_write"
    # setup 必有,否则会出错
    setup.template.name: "*" # 这里也可以更换为实际莫个模板
    setup.template.pattern: "dmesg001-*"
    
  2. 创建对应rollover索引
    PUT /%3Cdmesg001-%7Bnow%2Fd%7D-000001%3E
    {
      "aliases": {
      "dmesg001_write": {}
      }
    }
    
  3. 启动filebeat:
    ./filebeat [-e] -c filebeat.yml &
  4. 查看数据是否写到es
    GET dmesg001_write/_count 或者_serach 查看具体数据
    由于数据直接写到es,因此不需要第三方采集,可以直接在es中查看数据

3 使用技巧

3.1 filebeat 将日志按照类别发送到不同 kafka topic

有时候需要使用一个filebeat将不同类别的日志发送到不同的topic中,此时可以在inputs中添加fields: log_topic 字段,字段值设置为不同的topic名称即可,然后在 output中 通过topic: '%{[fields.log_topic]}'设置其对应topic,此时启动filebeat后,日志将发送到不通的topic中,以下分别发送到dmesg001和syslog001两个topic中。

filebeat.inputs:
- type: log
  # Change to true to enable this input configuration.
  enabled: true
  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/log/syslog
    #- c:\programdata\elasticsearch\logs\*
  fields:
    log_topic: syslog001
- type: log
  enabled: true
  paths:
    - /var/log/dmesg
  fields:
    log_topic: dmesg001

output.kafka:
    # topic: 'syslog001'
  topic: '%{[fields.log_topic]}'
  hosts: ["10.120.75.102:9092", "10.120.75.103:9092", "10.120.75.107:9022"]
  enabled: true
  codec.format:
    string: '%{[message]}'
  partition.round_robin:
  reachable_only: false
  required_acks: 1                
  compression: gzip
  max_message_bytes: 1000000   

3.2 filebeat将日志按照类别发送到不同es index

对于多个不同类别的日志,若希望采集到不同的index中,则可以分别为每类日志创建一个- type: log, 并设置对应的fields.type,后面在output中通过fields.type 来判断属于哪个索引。
具体配置如下:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/dmesg
  fields: 
    type: 'dmesg001'
- type: log
  enabled: true
  paths:
    - /var/log/syslog
  fields:
    type: 'syslog001'

output.elasticsearch:
  hosts: ["http://localhost:9200"]
  indices:
    - index: "syslog001_write"
      when.contains:
        fields:
          type: 'syslog001'
    - index: "dmesg001_write"
      when.contains:
        fields:
          type: 'dmesg001'
          
setup.template.name: "base-settings"
setup.template.pattern: "*"

最终, 写入kibana的字段会多一个fields.type,syslog001-* 的全部为syslog001,dmesg001-* 的全部为dmesg001

4 说明

  1. 测试软件: elasticsearch版本为7.2.1, filebeat为7.8.0
  2. 参考文献: elastic 官网–filebeat/current/index
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elk笔记10--filebeat使用 的相关文章

  • 在 Cassandra 中按创建日期排序

    我在订购数据时遇到问题卡桑德拉 Database 这是我的表结构 CREATE TABLE posts id uuid created at timestamp comment enabled boolean content text en
  • SparkR 作业 100 分钟超时

    我编写了一个有点复杂的sparkR脚本并使用spark submit运行它 脚本基本上做的是逐行读取基于 hive impala parquet 的大表 并生成具有相同行数的新 parquet 文件 但似乎工作在大约 100 分钟后停止 这
  • 层次聚类大稀疏距离矩阵 R

    我试图在非常大的距离上执行 fastclust 但遇到了问题 我有一个非常大的 csv 文件 大约 9100 万行 因此 for 循环在 R 中花费太长时间 其中包含关键字 大约 50 000 个唯一关键字 之间的相似性 当我读入 data
  • Spark 提交 java.lang.IllegalArgumentException:无法从空字符串创建路径

    当我执行 Spark 提交时 我收到此错误 java lang IllegalArgumentException 无法从空字符串创建路径 我使用的是spark版本2 4 7 hadoop版本3 3 0 集成开发环境 JDK 8 首先我遇到了
  • Pandas 根据列的值有效地分块读取大型面板 CSV

    我有一个很大的 CSV 文件 磁盘上约 50 GB 但无法立即将其完全读入内存 数据集本身是面板数据 看起来像 ID Time Col 1 Col N 1 2000 1 1 1 2000 1 2 2 2000 1 1 我加载这些数据的想法是
  • 使用 HDFS 更改更新 Hive 外部表

    可以说 我从文件 myFile csv 位于 HDFS 中 创建了 Hive 外部表 myTable myFile csv 每天都会更改 那么我也有兴趣每天更新一次 myTable 是否有任何 HiveQL 查询告诉每天更新表 谢谢 P S
  • 如何使用 Pig 从列中解析 JSON 字符串

    我有 tsv 日志文件 其中一列由 json 字符串填充 我想用以下内容解析该列JsonLoader in a Pig脚本 我看到很多例子JsonLoader用于每行只有一个 json 字符串的情况 我还有其他专栏想要跳过 但我不知道该怎么
  • 在大型数据集上改变窗口大小的滚动平均值

    我想计算向量的滚动平均值 其中窗口随着向量中的每个条目而增长 基本上 我想要所有元素的平均值i th i 1 th i 2 th 依此类推 为了使它更清楚 我将提供一个示例和一个适用于较小数据集但不能很好扩展的解决方案 library zo
  • 如何在Hadoop中设置数据块大小?改变它有好处吗?

    如果我们可以更改 Hadoop 中的数据块大小 请告诉我如何操作 更改块大小是否有利 如果是 请告诉我为什么以及如何更改 如果没有 请告诉我为什么以及如何 您可以随时更改块大小 除非dfs blocksize参数在 hdfs site xm
  • 使用 clojure-csv.core 解析巨大的 csv 文件

    到目前为止我有 require clojure csv core as csv require clojure java io as io def csv file getFile clojure java io resource verb
  • oozie Sqoop 操作无法将数据导入到 hive

    我在执行 oozie sqoop 操作时遇到问题 在日志中我可以看到 sqoop 能够将数据导入到临时目录 然后 sqoop 创建 hive 脚本来导入数据 将临时数据导入配置单元时失败 在日志中我没有收到任何异常 下面是我正在使用的 sq
  • Google BigQuery 查询速度很慢

    我正在使用 Google BigQuery 并且正在从 PHP 执行一些简单的查询 例如 SELECT from emails WHERE email mail test com 我只是检查该电子邮件是否存在于表中 表 emails 目前为
  • 如何将 RDD 保存到 HDFS 中并稍后将其读回?

    我有一个 RDD 其元素类型为 Long String 由于某种原因 我想将整个 RDD 保存到 HDFS 中 然后在 Spark 程序中读回该 RDD 可以这样做吗 如果是这样 怎么办 有可能的 在RDD中你有saveAsObjectFi
  • 在nodejs中写入文件之前对数据流进行排序

    我有一个输入文件 可能包含最多 1M 条记录 每条记录如下所示 field 1 field 2 field3 n 我想读取这个输入文件并根据field3在将其写入另一个文件之前 这是我到目前为止所拥有的 var fs require fs
  • 了解 Azure 事件中心分区使用者模式

    Azure 事件中心使用分区使用者模式中描述的docs https learn microsoft com en us azure event hubs event hubs features 当涉及到现实世界场景时 我在理解该模型的消费者
  • 将旧日志从 filebeat 重新发送到logstash

    在此先感谢您的帮助 我想重新加载一些日志来自定义其他字段 我注意到 filebeat 配置中的注册表文件会跟踪已选择的文件 但是 如果我删除该文件中的内容 我将无法恢复旧日志 我还尝试更改注册表文件中源的时间戳 但没有成功 将旧日志从 fi
  • HRegionServer 显示“错误告诉主机我们已经启动”。显示套接字异常:参数无效

    我正在尝试在 3 台 centos 机器上创建一个 hbase 集群 Hadoop v 2 8 0 已启动并在我配置的 HBase v 1 2 5 上运行 Hbase 启动正常 它启动了 HMaster 和区域服务器 但仍然在区域服务器和
  • 检查 Spark 中矩阵每列中唯一值的数量

    我有一个 csv 文件当前存储为 Spark 中的数据框 scala gt df res11 org apache spark sql DataFrame 2013 03 25 12 49 36 000 string OES PSI603
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • Spark 有没有办法捕获执行器终止异常?

    在执行我的 Spark 程序期间 有时 其原因对我来说仍然是个谜 yarn 会杀死容器 执行器 并给出超出内存限制的消息 我的程序确实恢复了 但 Spark 通过生成一个新容器重新执行任务 但是 在我的程序中 任务还会在磁盘上创建一些中间文

随机推荐

  • 使用wps转换文本中001、002章节名为第001章、第002章

    1 首先ctrl f打开查找和替换 2 点击弹窗中高级搜索 选中使用通配符 3 可先输入 lt 0 9 3 尝试是否可以查找出文本内章节名 可以找到的话进行下一步 4 切换到替换tab 替换为输入框内输入第 1章 之后点击底部全部替换 即可
  • 万向区块链肖风:元宇宙的十大经济规则

    本文为万向区块链董事长兼总经理肖风为华泰证券研究所科技及电子行业首席分析师黄乐平 万向区块链首席经济学家邹传伟联合撰写的 元宇宙经济学 所作序言 元宇宙是什么 按照我的理解 元宇宙是一个由分布式网络技术 分布式账本和分布式社会 商业构成的三
  • 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇

    上篇笔记主要介绍了与TIME WAIT相关的基础知识 本文则从实践出发 说明如何解决文章标题提出的问题 1 查看系统网络配置和当前TCP状态 在定位并处理应用程序出现的网络问题时 了解系统默认网络配置是非常必要的 以x86 64平台Linu
  • Python raise用法(超级详细,看了无师自通)

    当程序出现错误时 系统会自动引发异常 除此之外 Python 也允许程序自行引发异常 自行引发异常使用 raise 语句来完成 异常是一种很 主观 的说法 以下雨为例 假设大家约好明天去爬山郊游 如果第二天下雨了 这种情况会打破既定计划 就
  • 软件测试测试环境搭建很难?一天学会这份测试环境搭建教程

    如何搭建测试环境 这既是一道高频面试题 又是困扰很多小伙伴的难题 因为你在网上找到的大多数教程 乃至在一些培训机构的课程 都不会有详细的说明 你能找到的大多数项目 是在本机电脑环境搭建环境 或是别人已经搭建好的环境 你很难上手体验在服务器上
  • IntersectionObserver实现滚动加载

    加载模板及样式 template div class lazy more div
  • WebSocket :用WebSocket实现推送你必须考虑的几个问题

    目录 目录 WebSocket简介 项目背景硬件环境及客户端支持 本文研究内容 基于javaxwebsocket服务端代码源码后续补充git连接 客户端代码 问题探索 8月3日补充 中间线路断网情况 如何做到支持几千个client同时在线人
  • WebSocket集群解决方案,不用MQ

    首先不了解WebSocket的可以先看看这篇文章 以及传统的WebSocket方案是怎么做的 https www cnblogs com jeremylai7 p 16875115 html 这是用MQ解决的版本 那么这种方案存在什么问题呢
  • 使用nginx配置二级域名

    最近想把三个项目配在一个服务器上 于是想使用nginx配置二级域名实现 1 域名添加解析 我的是阿里云的域名 所以首先给自己的域名添加解析 打算使用 www codeliu com test1 codeliu com test2 codel
  • elementUI表格行的点击事件,点击表格,拿到当前行的数据

    1 绑定事件 2 定义事件 3 点击表格某行的时候 拿到数据 转载于 https www cnblogs com wuhefeng p 11316215 html
  • STM32 PID调节输出电压

    一 简介 关于PID调节的这里不做详解 就简单说下 其实就是先设定好一个期望 通过反馈系统返回输出值 然后判断这个输出实际输出的值 和我们的期望值的误差 然后PID算法根据这个误差 去调整我们的输出值 直到输出达到我们的期望值 那么我们为啥
  • 为什么程序员做外包会被瞧不起?

    二哥 有个事想询问下您的意见 您觉得应届生值得去外包吗 公司虽然挺大的 中xx 但待遇感觉挺低 马上要报到 挺纠结的 以上是读者小 K 给我发的私信 除此之外 还有个读者 down 也问我关于外包的事情 担心外包学不到技术 但很不幸的是年前
  • 11种概率分布,你了解几个?

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文转自 视学算法 了解常见的概率分布十分必要 它是概率统计的基石 这是昨天推送的 从概率统计到深度学习 四大技术路线图谱 都在这里 文章中的第一大技术路线图谱如下所示
  • 【mega-nerf】调包失败&pip install失败解决方案

    Problem 1 调包失败 在这样的层级架构里调包 输出无法找到 mega nerf 直接用 sys path append 没有作用 import sys print sys path sys path append home pape
  • Java实现Excel文件生成和下载功能

    7 行代码优雅地实现 Excel 文件生成 下载功能 欢迎关注博主公众号 小哈学Java 专注于分享Java领域干货文章 关注回复 资源 免费领取全网最热的Java架构师学习PDF 转载请注明出处 https www exception s
  • stm32F103C8T6控制DHT11

    stm32F103C8T6控制DHT11串口打印 stm32F103C8T6控制DHT11串口打印学习经验总结 本人借鉴了许多大佬们的资料 这是个人学习的见解 如发现错误之处 麻烦指导指导 借鉴链接 https blog csdn net
  • 移动端-表头固定的表格组件

    UI原型 HTML代码 div class scroll table box div class scroll table head table class tb1 thead tr th style width 3em 序号 th th
  • Java二维码登录流程实现(包含短地址生成,含部分代码)

    近年来 二维码的使用越来越风生水起 笔者最近手头也遇到了一个需要使用二维码扫码登录网站的活 所以研究了一下这一套机制 并用代码实现了整个流程 接下来就和大家聊聊二维码登录及的那些事儿 二维码原理 二维码是微信搞起来的 当年微信扫码二维码登录
  • Web前端页面由哪三大层构成

    结构层为页面的骨架 由 HTML 或 XHTML 标记语言创建 用于搭建文档的结构 HTML 用来定义网页的内容 例如标题 正文 图像等 表示层为页面的样式 由 CSS 层叠样式表 负责创建 用于设置文档的呈现效果 CSS 用来控制网页的外
  • elk笔记10--filebeat使用

    elk笔记10 filebeat使用 1 filebeat 介绍 2 filebeat 使用案例 2 1 软件安装 2 2 采集数据到 kafka 2 3 采集数据到 es 3 使用技巧 3 1 filebeat 将日志按照类别发送到不同