Day 27 Filebeat with multiple module and ELK Dashboard

Day 27 Filebeat with multiple module and ELK Dashboard

前言

昨天我们昨天我们将Filebeat也作为一个Container启动,因此不管是网页系统的後端程序、Nginx以及蒐集Log的Filebeat我们都将它容器化,并且透过volume以及内部port让他彼此联系。另外因为我们的ELK是在云端上,因此不需要再开启ELK的服务,否则Elasticsearch以及Kibana可能都需要再开一个container。今天我们要来讲透过filebeat以及之前的建构,一次蒐集很多种的log。

Multiple Type Logs

今天我们要来思考一下,前面几天我们都是蒐集nginx的log,那我们如果今天我们想要除了nginx log外,也想知道目前container硬体健康状况,或是系统稳定度的部分,那我们除了nginx log外势必需要其他的log。

而需要其他log,我们难道是要多开几个filebeat的container去做蒐集吗?

其实filebeat的listen是可以设置多重的,意思是可以一次enable多个moudle,而透过enable多个module,filebeat就可以一次监听多个路径。

因此以我们这个服务为范例,我们只需要将filebeat的container设定多开几个模组,并且给予他设定档。

另外就是多设几个volume让你所想要蒐集的log,能够share到filebeat的container,如此一来就可以透过一个filebeat服务,一次监听多种log,进而上传到elastic cloud,并可以透过多个Dashboard监控。

Example

我们这次简单实作多加一个Syslog,而蒐集的对象就是flask的container。

flask Dockerfile

FROM python:3.7.2-stretch
WORKDIR /app
ADD . /app
RUN apt-get update
RUN apt-get -y install rsyslog
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
CMD ["uwsgi", "wsgi.ini"]

首先我们先让flask container中的debain系统,update apt以及安装rsyslog,这个是能够蒐集syslog的套件,而路径会是在/var/log/syslog

接着我们要在filebeat的container中设定syslog的部分

system.yml

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

- module: system
  # Syslog
  syslog:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    var.paths: ["/var/log/syslog*"]

  # Authorization logs
  auth:
    enabled: false

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

我们这边设定路径为 /var/log/syslog

filebeat Dockerfile

FROM docker.elastic.co/beats/filebeat:7.9.2
COPY filebeat.yml /usr/share/filebeat/filebeat.yml
USER root
RUN chown root:filebeat /usr/share/filebeat/filebeat.yml
USER filebeat
RUN filebeat modules enable nginx system
COPY nginx.yml /usr/share/filebeat/modules.d/nginx.yml
COPY system.yml /usr/share/filebeat/modules.d/system.yml

加入system.yml以及enable system module

最後就是同样要在compose下设置

version: '3.3'

services:

  flask:
    build: ./flask
    volumes:
      - "/c/Users/user/flask-nginx-elk-demo/syslog:/var/log/syslog"
    container_name: template_flask
    # restart: always
    environment:
      - APP_NAME=FlaskApp
    expose:
      - 8080


  nginx:
    build: ./nginx
    volumes:
      - "/c/Users/user/flask-nginx-elk-demo/nginx-logs:/var/log/nginx"
    container_name: template_nginx
    # restart: always
    ports:
      - "80:80"

    depends_on:
      - flask

  filebeat:
    build: ./filebeat
    volumes:
      - "/c/Users/user/flask-nginx-elk-demo/nginx-logs:/var/log/nginx"
      - "/c/Users/user/flask-nginx-elk-demo/syslog:/var/log/syslog"
    container_name: template_filebeat
    # restart: always

    depends_on:
      - nginx

将flask container以及filebeat加入volume

如此一来就可以同时蒐集两者,并且将这两者都导到本机备份


<<:  I Want To Know React - Context 语法

>>:  Day 27 实测透过隧道广播BGP

Day8. functional programming in Ruby - Block Part1

这篇文章会用不一样的观点来介绍Ruby and Rails,写过 Javascript 的读者们,相...

Day9 练习java-二维阵列

二维阵列通常是用来描述表格、座位表、计算两班成绩或是同一班两科成绩做比较...凡是描述二维空间的基本...

DigitalOcean VPS – Premium Droplets 主机测试和跑分,廉价和高效的网站主机

Cloudways 最近推出 DigitalOcean Premium Droplets 的新选择...

[Day - 10] - 运用FlywayDB自动化整合Spring JPA 的模式注解之旅

Abstract 在一套系统架构中,势必需要运用到资料库的存取概念,开发者势必都会选择一种ORM[S...

Guaranteed Results with Updated SASM PDF Questions

Passing Scrum SASM certification exam with minimum...