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

devtools/2024/12/22 14:17:54/

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: Dockerfileimage: docker.elastic.co/beats/filebeat:7.10.0container_name: filebeatprivileged: trueenvironment:- TZ=Asia/Shanghairestart: 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:rwnetworks:- es-netnetworks: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: logid: java-app1enabled: truepaths:- /usr/share/filebeat/datalog/java-app1/*.log   #容器内的日志路径,我们通过volumes将容器外即你的宿主机的日志(想要采集的日志)映射进容器内fields:							#自定义预采集服务的各个字段env: testapplication: java-app1         log_type: app1_logignore_older: 168h						#只采集最新7天的日志multiline:									#通过识别时间戳进行多行合并,例如个别日志报错会出现数十行,其实都是一条日志,我们通过时间戳来合并他们pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'negate: truematch: after- type: logid: java-app2enabled: truepaths:- /usr/share/filebeat/datalog/java-app2/*.logfields:env: testapplication: java-app2log_type: app2_logignore_older: 168hmultiline:pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'negate: truematch: after- type: logid: java-app4enabled: truepaths:- /usr/share/filebeat/datalog/java-app4/*.logfields:env: testapplication: java-app4log_type: app4_logignore_older: 168hmultiline:pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'negate: truematch: afterprocessors:           #解析处理器,可以拆分日志,或者增加字段等- 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: Dockerfileimage: docker.elastic.co/beats/metricbeat:7.10.0container_name: metricbeatprivileged: truenetwork_mode: hostenvironment:- TZ=Asia/Shanghaivolumes:- /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:rwenvironment:- ELASTICSEARCH_HOSTS=http://172.23.165.185:9200,http://172.23.165.186:9200,http://172.23.165.187:9200restart: 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: falsesetup.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: 1index.codec: best_compressionlogging.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: javascriptid: "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: trueelasticsearch: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: systemperiod: 10smetricsets:- cpu- load- memory- network- process- process_summary- socket_summary#- entropy#- core#- diskio#- socket#- service#- usersprocess.include_top_n:by_cpu: 5      # include top 5 processes by CPUby_memory: 5   # include top 5 processes by memory- module: systemperiod: 1mmetricsets:- filesystem- fsstatprocessors:- drop_event.when.regexp:system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib|snap)($|/)'- module: systemperiod: 15mmetricsets:- 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.ppmy.cn/devtools/45358.html

相关文章

AI发展的探索与未来展望

随着科技的不断进步,人工智能(AI)技术已经成为当今社会最热门的话题之一。从简单的自动化任务到复杂的决策支持系统,AI技术正以前所未有的速度改变着我们的世界。本文将深入探讨AI技术的发展历程、当前应用、面临的挑战以及未来的…

Redis的非关系型数据库

第七天课堂笔记 今日目标 非关系型数据库(nosql【not only SQL】数据库) Redis的非关系型数据库 Redis的安装和配置 Redis常见数据类型 Redis特性 nosql数据库 not only sql数据库,非关系型数据库,往往采用类似于json来存储数…

【Qt】【模型视图架构】代理模型

文章目录 代理模型简单介绍QSortFilterProxyModel类简单介绍排序过滤子类化 代理模型简单介绍 代理模型的作用是可以将一个模型中的数据进行排序或者过滤,然后提供给视图进行显示。 如下所示,创建一个源模型、一个代理模型,界面上创建一个列…

网络编程基础知识

一、网络的相关概念 二、Ip 对于ipv4,是由4个字节(32位)表示,一个字节的范围是0~255,采用的是十进制表示ipv6的地址长度位128位,是ipv4的4倍,采用的是16进制表示查看ip地址:在命令行…

车载电子电器架构 —— 智能座舱技术范围(万字长文精讲)

车载电子电器架构 —— 智能座舱技术范围 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

电商api接口进行数据采集获取淘宝/天猫/京东/抖音多平台商品价格

在电商运营中,从品牌角度来看,品牌方通过电商数据采集API接口进行数据采集,获取多渠道商品价格信息的这一行为,能为品牌方带来诸多好处: 及时准确:API接口能为品牌提供实时数据,这意味着企业可…

计算机组成原理06:浮点数运算

浮点数加减运算 之前我们提到过&#xff0c;浮点数具有特定的表示形式。因此&#xff0c;在进行浮点数的加减运算之前&#xff0c;需要统一浮点数的表达方式。这里我们主要对浮点数表示中的尾数M进行处理&#xff0c;要求0≤M<1&#xff0c;统一格式如下&#xff1a; 正数…

基于IoTDB 平台的学习和研究

Apache IoTDB&#xff08;物联网数据库&#xff09;是一个针对物联网领域的高性能原生数据库&#xff0c;适用于数据管理和分析&#xff0c;并可在边缘计算和云端部署。由于它轻量级的架构、高性能和丰富的功能集&#xff0c;以及与Apache Hadoop、Spark和Flink的深度集成&…