当前位置: 首页 > news >正文

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

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/

相关文章:

  • Transformer基础2:位置编码、attention、normalization、residule block
  • go语言同一包中的同一变量实现不同平台设置不同的默认值 //go:build 编译语法使用示例
  • taskENTER_CRITICAL()分析
  • 数据可视化:解析其在现代生活中的日益重要地位
  • 6个PPT素材模板网站,免费!
  • wine的使用 ubuntu入门之二十三
  • linux 查看 线程名, 线程数
  • 【C++】开源:RabbitMQ安装与配置使用(SimpleAmqpClient)
  • Python库之Scrapy-Redis的高级用法深度解析
  • 2023职称继续教育--新时代如何培养和造就未来科技创新领军人才
  • linux下can-utils的使用以及can接口的配置(以ubuntu20.04为例)
  • 为啥装了erlang,还报错erl: command not found?
  • STM32 HAL库USART的接收数据方法实现(STM32Cube_FW_F1_V1.8.5)
  • 使用last查看系统登录情况
  • 开源与闭源 AI 模型:发展路径的比较与前瞻
  • Google 是如何开发 Web 框架的
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 10个最佳ES6特性 ES7与ES8的特性
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Apache Pulsar 2.1 重磅发布
  • CentOS 7 防火墙操作
  • Centos6.8 使用rpm安装mysql5.7
  • Docker容器管理
  • java中的hashCode
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • markdown编辑器简评
  • mysql外键的使用
  • nodejs调试方法
  • Python学习之路16-使用API
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Tornado学习笔记(1)
  • Vue小说阅读器(仿追书神器)
  • XML已死 ?
  • 如何在 Tornado 中实现 Middleware
  • 一些关于Rust在2019年的思考
  • 应用生命周期终极 DevOps 工具包
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 转载:[译] 内容加速黑科技趣谈
  • 交换综合实验一
  • ![CDATA[ ]] 是什么东东
  • $nextTick的使用场景介绍
  • (4)事件处理——(7)简单事件(Simple events)
  • (42)STM32——LCD显示屏实验笔记
  • (二)linux使用docker容器运行mysql
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (四)c52学习之旅-流水LED灯
  • (小白学Java)Java简介和基本配置
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net反混淆脱壳工具de4dot的使用