【EFK日志系统】docker一键部署filebeat、metricbeat

news2024/11/20 14:24:11

docker一键部署filebeat、metricbeat

  • filebeat部署
    • 创建配置文件
    • 一键启动
    • 修改配置文件
    • 查验信息
  • metricbeat部署
    • 创建配置文件
    • 一键启动
    • 修改配置文件
    • 查验信息


上两篇文章写了搭建部署es集群和部署kibana

这篇写一键部署filebeat和metricbeat收集工具

规划服务器是
es01:172.23.165.185
es02:172.23.165.186
es03:172.23.165.187

每一台服务器都要部署metricbeat,用来收集系统日志,监控系统cpu、内存和流量等等,至于filebeat是否要部署取决于你的服务器上是否有应用服务、是否有服务日志需要收集,有则部署


本次filebeat、metricbeat部署在172.23.165.185,如果在其他的服务器,请修改内存映射数量、创建网络等。参考第一个
docker一键部署EFK系统(elasticsearch filebeat kibana metricbeat es-head)
【EFK日志系统】docker一键部署kibana、es-head
【EFK日志系统】docker一键部署filebeat、metricbeat
【EFK日志系统】在kibana操作索引模板、生命周期、管道等

filebeat部署

在es、kibana同级目录创建filebeat和metricbeat

mkdir {filebeat,metricbeat}

创建配置文件

1.创建docker-compose.yml文件

version: '3'
services: 
  filebeat:
    build:
      context: .
      dockerfile: Dockerfile
    image: docker.elastic.co/beats/filebeat:7.10.0
    container_name: filebeat
    privileged: true
    environment:
      - TZ=Asia/Shanghai
    restart: always
#    volumes:
#      - ./filebeat.yml:/usr/share/filebeat/filebeat.yml:rw
#      - ./data:/usr/share/filebeat/data:rw
#      - ./logs:/usr/share/filebeat/logs:rw
#      - ./modules.d:/usr/share/filebeat/modules.d:rw
    networks:
      - es-net

networks:
  es-net:
    external: true

2.创建Dockerfile

FROM docker.elastic.co/beats/filebeat:7.10.0

#COPY ./filebeat.yml /usr/share/filebeat/

一键启动

创建完文件后执行

docker-compose up -d

查看该容器是否正常启动

docker ps

启动正常执行

docker cp -a filebeat:/usr/share/filebeat/data .
docker cp -a filebeat:/usr/share/filebeat/logs .
docker cp -a filebeat:/usr/share/filebeat/modules.d .
docker cp -a filebeat:/usr/share/filebeat/filebeat.yml .

修改配置文件

1.取消docker-compose.yml的注释部分

即卷映射部分注释打开

2.取消Dockerfile的注释部分

即COPY ./filebeat.yml /usr/share/filebeat/

3.编写filebeat.yml
刚刚我们将filebeat.yml复制出来了,在本级目录编写修改

setup.template.enabled: false          #关闭自动加载默认索引模板
setup.ilm.enabled: false  			#关闭默认生命周期
setup.template.overwrite: true       #打开同名覆盖强写
setup.template.name: "application-logs"          #这是你的索引模板名称,下一篇文章创建
setup.template.pattern: "application-logs-*"

logging.level: info
logging.selectors: ["*"]

filebeat.inputs:

  - type: log
    id: java-app1
    enabled: true
    paths:
      - /usr/share/filebeat/datalog/java-app1/*.log   #容器内的日志路径,我们通过volumes将容器外即你的宿主机的日志(想要采集的日志)映射进容器内
    fields:							#自定义预采集服务的各个字段
      env: test
      application: java-app1         
      log_type: app1_log
    ignore_older: 168h						#只采集最新7天的日志
    multiline:									#通过识别时间戳进行多行合并,例如个别日志报错会出现数十行,其实都是一条日志,我们通过时间戳来合并他们
      pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'
      negate: true
      match: after


  - type: log
    id: java-app2
    enabled: true
    paths:
      - /usr/share/filebeat/datalog/java-app2/*.log
    fields:
      env: test
      application: java-app2
      log_type: app2_log
    ignore_older: 168h
    multiline:
      pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'
      negate: true
      match: after

  - type: log
    id: java-app4
    enabled: true
    paths:
      - /usr/share/filebeat/datalog/java-app4/*.log
    fields:
      env: test
      application: java-app4
      log_type: app4_log
    ignore_older: 168h
    multiline:
      pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'
      negate: true
      match: after

processors:           #解析处理器,可以拆分日志,或者增加字段等
  - add_fields:
      target: 'host'
      fields:
        ip: '172.23.165.185'

output.elasticsearch:
  hosts: [ "http://172.23.165.185:9200", "http://172.23.165.186:9200", "http://172.23.165.187:9200" ]
  username: "elastic"
  password: "你的密码"
  index: "application-logs-%{[fields.env]}-%{[fields.application]}-%{+yyyy.MM.dd}"			#自定义index名称,在kibana便于查找
  pipeline: "remove_specific_fields_pipeline"		#管道,阻挡无用字段传输,比如我只需要host.ip,但是除了ip给我传输其他的一大堆,就需要管道拦截(当然不科学哈哈哈)
setup.kibana:
  host: "http://172.23.165.185:5601"
  username: "elastic"
  password: "你的密码"

而后在docker-compose.yml修改镜像迭代启动

查验信息

1.查看是否收到索引信息
终端输入:curl -u elastic:密码 -X GET “http://172.23.165.185:9200/_cat/indices?v&pretty”
2.浏览器输入:http://172.23.165.185:9200/_cat/indices?v&pretty

在这里插入图片描述

也可以登录es-head查看具体的索引信息
172.23.165.185:9100

在界面输入框输入url:
http://elastic:密码@172.23.165.185:9200/

metricbeat部署

创建配置文件

1.创建docker-compose.yml文件

version: '3'
services:
  metricbeat:
    build:
      context: .
      dockerfile: Dockerfile
    image: docker.elastic.co/beats/metricbeat:7.10.0
    container_name: metricbeat
    privileged: true
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
      - /proc:/hostfs/proc:ro
      - /:/hostfs:ro
#      - ./metricbeat.yml:/usr/share/metricbeat/metricbeat.yml:rw
#      - ./data:/usr/share/metricbeat/data:rw
#      - ./logs:/usr/share/metricbeat/logs:rw
#      - ./modules.d:/usr/share/metricbeat/modules.d:rw
    environment:
      - ELASTICSEARCH_HOSTS=http://172.23.165.185:9200,http://172.23.165.186:9200,http://172.23.165.187:9200
    restart: always
#    networks:
#      - es-net

#networks:
#  es-net:
#    external: true

2.创建Dockerfile文件

FROM docker.elastic.co/beats/metricbeat:7.10.0

#COPY metricbeat.yml /usr/share/metricbeat/metricbeat.yml

一键启动

创建完文件后执行

docker-compose up -d

查看该容器是否正常启动

docker ps

启动正常后执行

docker -a cp metricbeat:/usr/share/metricbeat/data .
docker -a cp metricbeat:/usr/share/metricbeat/logs .
docker -a cp metricbeat:/usr/share/metricbeat/modules.d .
docker cp -a metricbeat:/usr/share/metricbeat/metricbeat.yml .

修改配置文件

1.取消docker-compose.yml的注释部分

即卷映射部分注释打开

2.取消Dockerfile的注释部分

即COPY metricbeat.yml /usr/share/metricbeat/metricbeat.yml

3.编写metricbeat.yml
刚刚我们将metricbeat.yml复制出来了,在本级目录编写修改

# metricbeat.yml
metricbeat.config.modules:
  path: /usr/share/metricbeat/modules.d/system.yml            #采用默认采集模板
  reload.enabled: false

setup.template.enabled: false
setup.ilm.enabled: false
setup.template.overwrite: true
setup.template.name: "system"			#索引模板名称
setup.template.pattern: "system-*"
setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression

logging.level: info
logging.selectors: ["*"]

setup.kibana:
  host: "http://172.23.165.185:5601"
  username: "elastic"
  password: "密码"

output.elasticsearch:
  hosts: ["http://172.23.165.185:9200", "http://172.23.165.186:9200", "http://172.23.165.187:9200"]
  username: "elastic"
  password: "密码"
  index: "system-monitor-test-172.23.165.185-%{+yyyy.MM.dd}"

processors:			#这个部分可以自定义
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - script:					#这个是过滤docker的ip,我们只采集宿主机的
      lang: javascript
      id: "retain-first-ip"
      source: >
        function process(event) {
          var ip = event.Get("host.ip");
          if (ip && ip.length > 0) {
            event.Put("host.ip", [ip[0]]);
          }
        }
  - drop_fields:					#这个是过滤这两个字段的,因为他们很占篇幅
      fields: ["host.mac", "host.os"]
  - add_fields:				#这个是添加字段,比如测试、生产环境
      target: ''
      fields:
        env: 'test'



monitoring:
  enabled: true
  elasticsearch:
    hosts: ["http://172.23.165.185:9200", "http://172.23.165.186:9200", "http://172.23.165.187:9200"]
    username: "elastic"
    password: "密码"

4.编写system.yml(在metricbeat的modules.d)

给这个解除system.yml.disabled

# Module: system
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.10/metricbeat-module-system.html

- module: system
  period: 10s
  metricsets:
    - cpu
    - load
    - memory
    - network
    - process
    - process_summary
    - socket_summary
    #- entropy
    #- core
    #- diskio
    #- socket
    #- service
    #- users
  process.include_top_n:
    by_cpu: 5      # include top 5 processes by CPU
    by_memory: 5   # include top 5 processes by memory

- module: system
  period: 1m
  metricsets:
    - filesystem
    - fsstat
  processors:
  - drop_event.when.regexp:
      system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib|snap)($|/)'

- module: system
  period: 15m
  metricsets:
    - uptime

#- module: system
#  period: 5m
#  metricsets:
#    - raid
#  raid.mount_point: '/'

查验信息

1.查看是否收到索引信息
终端输入:curl -u elastic:密码 -X GET “http://172.23.165.185:9200/_cat/indices?v&pretty”
2.浏览器输入:http://172.23.165.185:9200/_cat/indices?v&pretty

在这里插入图片描述

也可以登录es-head查看具体的索引信息
172.23.165.185:9100

在界面输入框输入url:
http://elastic:密码@172.23.165.185:9200/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1791429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS(二十四)——Harmonyos通用事件之触摸事件

1.触摸事件。 触摸事件是HarmonyOS通用事件的一种事件之一,当手指在组件上按下、滑动、抬起时触发。 名称是否冒泡功能描述onTouch(event: (event?: TouchEvent) > void)是手指触摸动作触发该回调,event返回值见下面TouchEvent介绍。 2. TouchEve…

开源VS闭源:大模型之争,究竟谁更胜一筹?

随着人工智能技术的快速发展,大模型作为其中的核心组件,已经引起了业界的广泛关注。在大模型的研发过程中,开源与闭源成为了两个备受争议的话题。究竟开源与闭源谁更好?本文将从多个角度进行深入分析,为大家揭示真相。…

【Python数据预处理系列】Pandas 数据操作实战:掌握 .loc[] 方法进行高效数据选取

文章将详细介绍.loc[]方法的各种使用场景,帮助读者深入理解并掌握这一核心功能。 在Pandas库中,.loc[]方法是一种强大而灵活的数据选取工具。本文将通过详细的步骤和示例,手把手教您如何利用这一工具进行高效的数据操作。 首先,我…

社区待就业人员信息管理系统的设计

管理员账户功能包括:系统首页,个人中心,工作岗位管理,基础数据管理,预约面试管理,就业信息管理,公告信息管理 社区工作账户功能包括:系统首页,个人中心,用户…

【Visual Studio 2022 部署 .net core website】

部署网站 AdminPortal.csproj false Website File Nameappsettings.jsonAdminPortal.deps.jsonAdminPortal.runtimeconfig.json–web.configAPI.runtimeconfig.json

基于聚类与统计检验深度挖掘电商用户行为

1.项目背景 在当今竞争激烈的电商市场中,了解用户的行为和需求对于制定成功的市场策略至关重要,本项目通过建立RFM模型、K-Means聚类模型,将1000个用户进行划分,针对不同类的用户,提出不同的营销策略,最后通过统计检验来探究影响用户消费行为的因素和影响用户上网行为的…

GIt快速入门(一文学会使用Git)

GIt快速入门 文章目录 GIt快速入门一、为什么要学习Git二、Git的安装1.安装Git2.下载GUI 三、Git的概念1、版本控制2、集中式控制3、分布式控制4、多人协作开发1.并行开发2.分支管理3.冲突解决4.代码审查5.分布式特性 四、Git客户端操作1.界面介绍2.提交操作3.创建分支4.合并分…

【QT5】<总览三> QT常用控件

文章目录 前言 一、QWidget---界面 二、QPushButton---按钮 三、QRadioButton---单选按钮 四、QCheckBox---多选、三选按钮 五、margin&padding---边距控制 六、QHBoxLayout---水平布局 七、QVBoxLayout---垂直布局 八、QGridLayout---网格布局 九、QSplitter---…

【简单讲解TalkingData的数据统计】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

基于51单片机的智能晾衣架设计资料

第三章:硬件单元电路 经过上述分析明确了本次设计的主要目标,为了实现晾衣自身能够完成对外界数据的采集与分析,集成控制环节我们采用了ATMEL公司生产的AT89C52单片机,与市面上的其他嵌入式控制单元相比较在体积与功耗方面都相当出色。此次设计主要突破在于设计合理的控制电…

Go微服务: 基于rocketmq:5.2.0搭建RocketMQ环境,以及示例参考

概述 参考最新官方文档:https://rocketmq.apache.org/zh/docs/quickStart/03quickstartWithDockercompose以及:https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard综合以上两个文档来搭建环境 搭建RocketMQ环境 1 ) 基于 docker-c…

Springboot框架开发与实用篇之热部署 2024详解

开发与实用 手动启动热部署 热部署(Hot Deployment)指的是在应用程序正在运行的情况下,对其进行更新或修改并将这些变更应用到正在运行的应用程序中的过程。通常情况下,传统的部署方式需要停止应用程序、部署更新,然…

Prompt 指南之零样本与少样本提示,超详细解析!

前言 我将在本文中为你带来另外 2 种提示技术,它们分别是: 零样本提示(Zero-shot Prompting)少样本提示(Few-shot Prompting) shot 即代表示例 这两种技术利用 LLM 的强大预训练知识,通过最小…

【MyBatis】零基础从入门到进阶(源码级深入详解)

1 MyBatis概述 1.1 框架 ● 在⽂献中看到的framework被翻译为框架 ● Java常⽤框架: ○ SSM三⼤框架:Spring SpringMVC MyBatis ○ SpringBoot ○ SpringCloud ○ 等。。 ● 框架其实就是对通用代码的封装,提前写好了⼀堆通用…

上位机图像处理和嵌入式模块部署(f407 mcu中的单独上位机烧录方法)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们说过,stm32有三种烧录方法,一种是st-link v2,一种是dap,一种是j-link。不过我们在实际操作…

LLaMA-Factory实战推理

LLaMA-Factory官网:https://github.com/hiyouga/LLaMA-Factory 安装环境 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310按照llama-factory要求的标准格式组织数据集&#xff…

【UML用户指南】-01-UML基本元素的介绍(一)

目录 1、UML的词汇表 2、UML的4种事物 2.1、结构事物 1)类 2)接口 3)协作 4)用例(use case) 5)主动类(active class) 6)构件(component&a…

计算机组成原理一轮

目录 一、计算机系统概论 组成 概念 二、计算机的运算方法 二进制和八进制、二进制和八进制间的转换 任意进制数转换为十进制数 十进制转二进制 移码 定点数的移位运算 定点数的加减运算 定点数的乘除运算 相乘 相除 溢出的判别方法 采用一位符号位 采用双符号…

LabVIEW调用第三方硬件DLL常见问题及开发流程

在LabVIEW中调用第三方硬件DLL时,除了技术问题,还涉及开发流程、资料获取及与厂家的沟通协调。常见问题包括函数接口不兼容、数据类型转换错误、内存管理问题、线程安全性等。解决这些问题需确保函数声明准确、数据类型匹配、正确的内存管理及线程保护。…

vue3学习(七)

前言 接上一篇学习笔记,今天主要是分享上次学习完了,还没来得及记录,趁今天晚上换换脑子的时间记录下。 今天主要是记录的vuex文件的拆分,因为毕竟如果只在一个index.js文件写,文件会随着业务的复杂性上升&…