【EFK日志系统】docker一键部署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/

  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石子君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值