feat: 新增elasticsearch、filebeat、kibana组合的日志系统
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
version: '3'
|
||||
|
||||
# 网桥 -> 方便相互通讯
|
||||
networks:
|
||||
efk:
|
||||
|
||||
services:
|
||||
elasticsearch:
|
||||
image: registry.cn-shanghai.aliyuncs.com/odboy/elasticsearch:7.14.1 # 原镜像`elasticsearch:7.14.1`
|
||||
container_name: efk_elasticsearch # 容器名为'efk_elasticsearch'
|
||||
restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
|
||||
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
|
||||
- "./elasticsearch/data:/usr/share/elasticsearch/data"
|
||||
- "./elasticsearch/logs:/usr/share/elasticsearch/logs"
|
||||
- "./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
|
||||
# - "./elasticsearch/config/jvm.options:/usr/share/elasticsearch/config/jvm.options"
|
||||
environment: # 设置环境变量,相当于docker run命令中的-e
|
||||
TZ: Asia/Shanghai
|
||||
LANG: en_US.UTF-8
|
||||
TAKE_FILE_OWNERSHIP: "true" # 权限
|
||||
discovery.type: single-node
|
||||
ES_JAVA_OPTS: "-Xmx512m -Xms512m"
|
||||
ELASTIC_PASSWORD: "123456" # elastic账号密码
|
||||
ports:
|
||||
- "9200:9200"
|
||||
- "9300:9300"
|
||||
networks:
|
||||
- efk
|
||||
|
||||
kibana:
|
||||
image: registry.cn-shanghai.aliyuncs.com/odboy/kibana:7.14 # 原镜像`kibana:7.14.1`
|
||||
container_name: efk_kibana
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- "./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml"
|
||||
ports:
|
||||
- "5601:5601"
|
||||
depends_on:
|
||||
- elasticsearch
|
||||
links:
|
||||
- elasticsearch
|
||||
networks:
|
||||
- efk
|
||||
|
||||
filebeat:
|
||||
image: registry.cn-shanghai.aliyuncs.com/odboy/elastic-filebeat:7.14.1 # 原镜像`elastic/filebeat:7.14.1`
|
||||
container_name: efk_filebeat
|
||||
restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
|
||||
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
|
||||
- "./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml"
|
||||
- "./filebeat/logs:/usr/share/filebeat/logs"
|
||||
- "./filebeat/my-log:/usr/share/filebeat/my-log"
|
||||
environment: # 设置环境变量,相当于docker run命令中的-e
|
||||
TZ: Asia/Shanghai
|
||||
LANG: en_US.UTF-8
|
||||
depends_on:
|
||||
- elasticsearch
|
||||
networks:
|
||||
- efk
|
||||
@@ -0,0 +1,10 @@
|
||||
cluster.name: "docker-cluster"
|
||||
network.host: 0.0.0.0
|
||||
http.port: 9200
|
||||
# 开启es跨域
|
||||
http.cors.enabled: true
|
||||
http.cors.allow-origin: "*"
|
||||
http.cors.allow-headers: Authorization
|
||||
# 开启安全控制
|
||||
xpack.security.enabled: true
|
||||
xpack.security.transport.ssl.enabled: true
|
||||
@@ -0,0 +1,77 @@
|
||||
## JVM configuration
|
||||
|
||||
################################################################
|
||||
## IMPORTANT: JVM heap size
|
||||
################################################################
|
||||
##
|
||||
## You should always set the min and max JVM heap
|
||||
## size to the same value. For example, to set
|
||||
## the heap to 4 GB, set:
|
||||
##
|
||||
## -Xms4g
|
||||
## -Xmx4g
|
||||
##
|
||||
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
|
||||
## for more information
|
||||
##
|
||||
################################################################
|
||||
|
||||
# Xms represents the initial size of total heap space
|
||||
# Xmx represents the maximum size of total heap space
|
||||
|
||||
-Xms1g
|
||||
-Xmx1g
|
||||
|
||||
################################################################
|
||||
## Expert settings
|
||||
################################################################
|
||||
##
|
||||
## All settings below this section are considered
|
||||
## expert settings. Don't tamper with them unless
|
||||
## you understand what you are doing
|
||||
##
|
||||
################################################################
|
||||
|
||||
## GC configuration
|
||||
8-13:-XX:+UseConcMarkSweepGC
|
||||
8-13:-XX:CMSInitiatingOccupancyFraction=75
|
||||
8-13:-XX:+UseCMSInitiatingOccupancyOnly
|
||||
|
||||
## G1GC Configuration
|
||||
# NOTE: G1 GC is only supported on JDK version 10 or later
|
||||
# to use G1GC, uncomment the next two lines and update the version on the
|
||||
# following three lines to your version of the JDK
|
||||
# 10-13:-XX:-UseConcMarkSweepGC
|
||||
# 10-13:-XX:-UseCMSInitiatingOccupancyOnly
|
||||
14-:-XX:+UseG1GC
|
||||
14-:-XX:G1ReservePercent=25
|
||||
14-:-XX:InitiatingHeapOccupancyPercent=30
|
||||
|
||||
## JVM temporary directory
|
||||
-Djava.io.tmpdir=${ES_TMPDIR}
|
||||
|
||||
## heap dumps
|
||||
|
||||
# generate a heap dump when an allocation from the Java heap fails
|
||||
# heap dumps are created in the working directory of the JVM
|
||||
-XX:+HeapDumpOnOutOfMemoryError
|
||||
|
||||
# specify an alternative path for heap dumps; ensure the directory exists and
|
||||
# has sufficient space
|
||||
-XX:HeapDumpPath=data
|
||||
|
||||
# specify an alternative path for JVM fatal error logs
|
||||
-XX:ErrorFile=logs/hs_err_pid%p.log
|
||||
|
||||
## JDK 8 GC logging
|
||||
8:-XX:+PrintGCDetails
|
||||
8:-XX:+PrintGCDateStamps
|
||||
8:-XX:+PrintTenuringDistribution
|
||||
8:-XX:+PrintGCApplicationStoppedTime
|
||||
8:-Xloggc:logs/gc.log
|
||||
8:-XX:+UseGCLogFileRotation
|
||||
8:-XX:NumberOfGCLogFiles=32
|
||||
8:-XX:GCLogFileSize=64m
|
||||
|
||||
# JDK 9+ GC logging
|
||||
9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
|
||||
@@ -0,0 +1,27 @@
|
||||
# 可参考 https://www.elastic.co/guide/en/beats/filebeat/7.14/filebeat-reference-yml.html
|
||||
|
||||
# 收集系统日志
|
||||
filebeat:
|
||||
inputs:
|
||||
- type: log
|
||||
enabled: true
|
||||
paths:
|
||||
- /usr/share/filebeat/my-log/demo*.log
|
||||
tags: [ "demo" ]
|
||||
# java多行日志合并
|
||||
multiline:
|
||||
pattern: '^\d{4}\-\d{2}\-\d{2}\s\d{2}:\d{2}:\d{2}' # 匹配的正则 不是以 2021-10-01 12:00:00 格式开头的将合并到上一行
|
||||
negate: true # 是否反向匹配
|
||||
match: after # 取值为 after 则放到上一行之后,取值为 before 则放到下一行之前
|
||||
timeout: 3s
|
||||
|
||||
|
||||
# 输出到elasticsearch
|
||||
output.elasticsearch:
|
||||
hosts: [ "elasticsearch:9200" ] # ES地址,可以有多个,用逗号","隔开
|
||||
username: "elastic" # ES用户名
|
||||
password: "123456" # ES密码
|
||||
indices:
|
||||
- index: "demo-%{+yyyy.MM.dd}" # 以日期为后缀,每天新建一个索引
|
||||
when.contains:
|
||||
tags: "demo"
|
||||
@@ -0,0 +1,3 @@
|
||||
docker-compose -f docker-compose.yml -p efk up -d
|
||||
# 当前目录下所有文件赋予权限(读、写、执行) -- 解决es启动报错问题...
|
||||
chmod -R 777 ./elasticsearch
|
||||
@@ -0,0 +1,14 @@
|
||||
#
|
||||
# ** THIS IS AN AUTO-GENERATED FILE **
|
||||
#
|
||||
|
||||
# Default Kibana configuration for docker target
|
||||
|
||||
server.name: kibana
|
||||
server.host: "0.0.0.0"
|
||||
server.publicBaseUrl: "http://kibana:5601" # 这里地址改为你访问kibana的地址,不能以 / 结尾
|
||||
elasticsearch.hosts: [ "http://elasticsearch:9200" ] # http://www.zhengqingya.com:9200 TODO 修改为自己的ip
|
||||
xpack.monitoring.ui.container.elasticsearch.enabled: true
|
||||
elasticsearch.username: "elastic" # es账号
|
||||
elasticsearch.password: "123456" # es密码
|
||||
i18n.locale: zh-CN # 中文
|
||||
@@ -0,0 +1,21 @@
|
||||
# EFK
|
||||
|
||||
`Elasticsearch` + `Filebeat` + `Kibana` 搭建日志监控系统
|
||||
|
||||
1. `Filebeat` 采集日志,相比Logstash更加轻量级和易部署,对系统资源开销更小,如果对于日志不需要进行过滤分析的,可以直接使用filebeat
|
||||
2. `Elasticsearch` 日志搜索
|
||||
3. `Kibana` 日志展示
|
||||
|
||||
### 安装部署
|
||||
```shell
|
||||
# 运行
|
||||
sh install.sh
|
||||
```
|
||||
|
||||
1. ES访问地址:[`ip地址:9200`](http://192.168.235.104:9200)
|
||||
默认账号密码:`elastic/123456`
|
||||
2. kibana访问地址:[`ip地址:5601`](http://192.168.235.104:5601)
|
||||
默认账号密码:`elastic/123456`
|
||||
|
||||
### 示例图
|
||||

|
||||
@@ -0,0 +1 @@
|
||||
docker-compose -f docker-compose.yml -p efk down
|
||||
Reference in New Issue
Block a user