私有部署ELK,搭建自己的日志中心(二)-- filebeat的介绍与安装

一、背景

在搭建ELK系统之前,你有必要去了解下,为何大家在agent端普遍青睐filebeat,而把logstash放置于更加靠后端。
轻量级的filebeat,作为agent角色,是安装在每台虚拟机上。

filebeat的学习分为两大部分:

  • 安装(二进制或docker)
  • 配置文件filebeat.yml

二、filebeat的安装

本文主要介绍docker安装方式,对于其二进制安装,请参考其他文章。这类资料比较多。
https://www.elastic.co/cn/beats/filebeat 这是它的官网地址。

下面是它的docker-compose安装:

version: "3"
services:
  filebeat:
    container_name: filebeat
    image: elastic/filebeat:7.9.3
    restart: always
    user: root
    volumes:
      - ./filebeat/logs:/usr/share/filebeat/logs
      - ./filebeat/data:/usr/share/filebeat/data
      - ./filebeat/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml

私有部署ELK,搭建自己的日志中心(二)-- filebeat的介绍与安装_第1张图片
建议做持久化的时候,使用相对路径,便于不同机器上的部署。

三、配置

vi filebeat/conf/filebeat.yml

filebeat.inputs:
  - type: log
    enabled: true
    backoff: "1s"
    tail_files: false
    paths:
      - /usr/share/filebeat/logs/*.log
    multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
    multiline.negate: true
    multiline.match: after
    document_type: jvm

output.logstash:
  enabled: true
  hosts: ["logstash:5044"]

1、inputs

官网文档地址:https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-options.html

  • 多行的开头匹配规则
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  • log日志文件的路径
    paths:
      - /usr/share/filebeat/logs/*.log

注意:如果你是docker安装filebeat的话,需要把宿主机上的路径挂载到容器。
那么,采集宿主机上的相对路径./filebeat/logs/下的所有.log文件。

    volumes:
      - ./filebeat/logs:/usr/share/filebeat/logs

本文踩过的坑就是:filebeat.yml配置的paths路径,忘记了挂载到容器外,这样的话,filebeat始终读取不到log日志。

观察filebeat容器的日志,自然就采集不到最新的log日志,后台一直在打印下面的日志:

2023-12-27T06:55:04.273Z INFO [monitoring] log/log.go:153 Total non-zero metrics {“monitoring”: {“metrics”: {“beat”:{“cpu”:{“system”:{“ticks”:8670,“time”:{“ms”:8678}},“total”:{“ticks”:16000,“time”:{“ms”:16016},“value”:16000},“user”:{“ticks”:7330,“time”:{“ms”:7338}}},“handles”:{“limit”:{“hard”:1048576,“soft”:1048576},“open”:8},“info”:{“ephemeral_id”:“87e71d20-5d3d-452f-a51e-cc2f47612d45”,“uptime”:{“ms”:16309343}},“memstats”:{“gc_next”:15193216,“memory_alloc”:8772880,“memory_total”:212097656,“rss”:46182400},“runtime”:{“goroutines”:10}},“filebeat”:{“events”:{“added”:1,“done”:1},“harvester”:{“open_files”:0,“running”:0}},“libbeat”:{“config”:{“module”:{“running”:0}},“output”:{“type”:“kafka”},“pipeline”:{“clients”:0,“events”:{“active”:0,“filtered”:1,“total”:1}}},“registrar”:{“states”:{“current”:1,“update”:1},“writes”:{“success”:1,“total”:1}},“system”:{“cpu”:{“cores”:8},“load”:{“1”:0.27,“15”:0.35,“5”:0.3,“norm”:{“1”:0.0338,“15”:0.0438,“5”:0.0375}}}}}}

所以我后面在./filebeat/logs新建sample.log日志文件,此时filebeat才能采集到日志。

2、output

官网文档地址:https://www.elastic.co/guide/en/beats/filebeat/current/logstash-output.html

  • 测试输出
output.file:
  path: "/tmp"
  filename: "test_filebeat.txt"

3、模块

filebeat内置有多种模块(auditd、Apache、NGINX、System、MySQL 等等),可针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。
它可以将数据直接发送给Elasticsearch;或者通过Logstash,在Kibana中可视化数据之前,在Logstash中进一步处理和增强数据。

官方文档比较简单,https://www.elastic.co/guide/en/beats/filebeat/current/advanced-settings.html

4、处理

这块比较丰富,你可以进行限流、替换、重命名、丢弃等操作。

详请参考:https://www.elastic.co/guide/en/beats/filebeat/current/filtering-and-enhancing-data.html

四、总结

因为在整个日志中心,我们有logstash组件,所以filebeat不承担多少处理的工作。
filebeat仅采集,配置的时候比较简单,没有用到过多的复杂语句。

下文将讲述logstash。

你可能感兴趣的:(elk,运维,jvm,云原生,java)