昨天我们昨天我们将Filebeat也作为一个Container启动,因此不管是网页系统的後端程序、Nginx以及蒐集Log的Filebeat我们都将它容器化,并且透过volume以及内部port让他彼此联系。另外因为我们的ELK是在云端上,因此不需要再开启ELK的服务,否则Elasticsearch以及Kibana可能都需要再开一个container。今天我们要来讲透过filebeat以及之前的建构,一次蒐集很多种的log。
今天我们要来思考一下,前面几天我们都是蒐集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监控。
我们这次简单实作多加一个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 语法
这篇文章会用不一样的观点来介绍Ruby and Rails,写过 Javascript 的读者们,相...
二维阵列通常是用来描述表格、座位表、计算两班成绩或是同一班两科成绩做比较...凡是描述二维空间的基本...
Cloudways 最近推出 DigitalOcean Premium Droplets 的新选择...
Abstract 在一套系统架构中,势必需要运用到资料库的存取概念,开发者势必都会选择一种ORM[S...
Passing Scrum SASM certification exam with minimum...