【ELK】Filebeat采集Docker容器日志

server/2024/12/22 22:43:02/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 介绍
    • filebeat是如何工作的
  • 使用
    • 部署filebeat


介绍

  • Filebeat 是一个用于转发和集中日志数据的轻量级传送器。

  • Filebeat 作为agent安装在服务器上,监视指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

  • Filebeat 的工作原理如下:当启动 Filebeat 时,它会启动一个或多个input查找指定的日志数据位置。对于 Filebeat 找到的每个日志,Filebeat 都会启动一个harvester。每个harvester都会读取单个日志以获取新内容,并将新日志数据发送到 libbeat,libbeat 会聚合事件并将聚合数据发送到您为 Filebeat 配置的输出。

    在这里插入图片描述

filebeat是如何工作的

Filebeat 由两个主要组件组成:inputharvester。这些组件协同工作来跟踪文件并将事件数据发送到指定的output

什么是harvester:

  1. harvester负责读取单个文件的内容。
  2. harvester逐行读取每个文件,并将内容发送到输出。
    每个文件启动一个harvester。
  3. harvester负责打开和关闭文件,这意味着harvester运行时文件描述符保持打开状态。

什么是input:

  1. input负责管理harvester并查找所有可供读取的源。

  2. 如果input类型为log,则input会查找驱动器上与定义的全局路径匹配的所有文件,并为每个文件启动harvester。每个input都在自己的 Go 协程中运行。

  3. 以下示例将 Filebeat 配置为从与指定 glob 模式匹配的所有日志文件中收集行:

    
    filebeat.inputs:
    - type: logpaths:- /var/log/*.log- /var/path2/*.log
    

不同的harvester goroutine采集到的日志数据都会发送至一个全局的队列queue中,filebeat默认启用的是基于内存的缓存队列。

每当队列中的数据缓存到一定的大小或者超过了定时的时间(默认1s),会被注册的client从队列中消费,发送至配置的后端。目前可以设置的client有kafka、elasticsearch、redis等。

使用

部署filebeat

  1. 上传压缩包

    在这里插入图片描述

  2. 解压

    tar xf filebeat-8.9.0.linux-amd64.tar.gz
    

    在这里插入图片描述

  3. 配置

    ## filebeat.yml
    # ============================== Filebeat input ==============================
    filebeat.inputs:
    - type: containerstream: allpaths: - /data/docker/containers/*/*.logformat: dockerfields:multiline:# 做多行日志聚合,此处是针对java的异常堆栈信息聚合(所有非年-月-日开头的日志会被聚合到最开始匹配到的那一行展示)type: patternpattern: '^\d+.\d+.\d+|^\d+.\w{3}.\d+'negate: truematch: after  processors:- add_docker_metadata:  # 添加当前主机的信息,包括 os、hostname、ip 等host: "unix:///var/run/docker.sock"- add_docker_metadata: ~  # 如果存在 Docker 环境,则自动添加容器、镜像的信息。默认将 labels 中的点 . 替换成下划线 _# ============================== Filebeat modules ==============================filebeat.config.modules:path: ${path.config}/modules.d/*.ymlreload.enabled: false#reload.period: 10s# ======================= Elasticsearch template setting =======================
    setup.template.settings:index.number_of_shards: 1
    output.elasticsearch:# Array of hosts to connect to.hosts: ["http://172.21.105.64:19200"]# Protocol - either `http` (default) or `https`.protocol: "http"# Authentication credentials - either API key or username/password.#api_key: "id:api_key"username: "elastic"password: "qianyue@2021#"ssl.verification_mode: "none"  
    
  4. 配置系统服务

    # cat /usr/lib/systemd/system/auto_agent_filebeat.service
    [Unit]
    Description=filebeat
    Wants=network-online.target
    After=network-online.target[Service]
    User=root
    WorkingDirectory=/home/auto-op-mgr/auto_agent/app/auto_agent_filebeat
    ExecStart=/home/auto-op-mgr/auto_agent/app/auto_agent_filebeat/filebeat -e --strict.perms=false  -c /home/auto-op-mgr/auto_agent/app/auto_agent_filebeat/filebeat.yml
    # 设置为掉线自动重启,进程强制杀掉后会自动重新启动
    Restart=always[Install]
    WantedBy=multi-user.target
    

http://www.ppmy.cn/server/152339.html

相关文章

【Mars3d】设置backgroundImage、map.scene.skyBox、backgroundImage来回切换

相关链接: http://mars3d.cn/editor-vue.html?keyex_1_2_1&idmap/other/backgroundImg 实现代码: export function show1() {map.setOptions({scene: {backgroundType: "image",backgroundImage: "url(//data.mars3d.cn/img/busin…

C# 从控制台应用程序入门

总目录 前言 从创建并运行第一个控制台应用程序,快速入门C#。 一、新建一个控制台应用程序 控制台应用程序是C# 入门时,学习基础语法的最佳应用程序。 打开VS2022,选择【创建新项目】 搜索【控制台】,选择控制台应用(.NET Framew…

深入理解STL list erase

1、list erase后&#xff0c;当前的迭代器失效&#xff0c;返回指向下一个节点的迭代器 #include<list> #include<iostream> #include<vector> using namespace std;int main() {list<int> ls;ls.push_back(1);ls.push_back(2);ls.push_back(3);list&…

STM32-笔记4-按键点亮led

1、复制03项目流水灯&#xff0c;重命名改成05项目&#xff0c;05-按键控制翻转灯的状态 在BSP文件夹里新建key文件夹&#xff0c;在该文件夹里面&#xff0c;新建两个key.c和key.h文件 2、打开工程文件-加载文件 在品和魔术棒里面把刚才新建的key文件夹里面的.c 和.h文件加载…

软件维护的实施

软件维护活动 (1) 维护机构 除了较大的软件开发公司外&#xff0c;通常在软件维护工作方面&#xff0c;不保持正式的维护机构。维护往往是在没有计划的情况下进行的。虽然不要求建立一个正式的维护机构&#xff0c;但是在开发部门&#xff0c;确立一个非正式的维护机构则是非常…

【Http,Netty,Socket,WebSocket的应用场景和区别】

Http&#xff0c;Netty&#xff0c;Socket&#xff0c;WebSocket的应用场景和区别 Http、Netty、Socket、WebSocket都是网络通信领域中的重要技术和工具&#xff0c;它们在应用场景和特性上有所区别。以下是对这四种技术和工具的应用场景及区别的详细分析&#xff1a; Http的…

docker如何学习与使用入门

学习和使用 Docker 的入门可以分为以下几个步骤。Docker 是一个功能强大的工具&#xff0c;通过容器化技术使得应用开发和部署更加高效、简便。以下是一个逐步的学习路径&#xff0c;帮助你从入门到熟练掌握 Docker。 1. 理解容器化的概念 在学习 Docker 之前&#xff0c;先了…

深度解析京东API接口:如何高效获取商品详情与SKU信息

在当下电商蓬勃发展的时代&#xff0c;如何高效地获取商品详情与SKU&#xff08;Stock Keeping Unit&#xff0c;库存单位&#xff09;信息成为了商家们进行电商运营、价格比较、库存管理及市场分析等活动的关键。京东API接口为此提供了强大的支持&#xff0c;使得开发者能够通…