Docker安装 ELK环境
一、自定义网络
保证同一网络下的容器 (ElasticSearch、Logstash、Kibana)相互访问。
- 创建自定义网络elk
docker network create elk
- 查看已有网络
docker network ls
Docker自带3种网络模式 bridge、host、none
- 删除已有网络
docker network rm elk
二、ELK 部署
1、ElasticSerach 部署
- 创建目录
mkdir -p /opt/elasticsearch/{config,data}
chmod 777 /opt/elasticsearch/{config,data}
- 拉取镜像
docker pull elasticsearch:7.14.1
- 配置文件
创建配置文件elasticsearch.yml
vi /opt/elasticsearch/config/elasticsearch.yml
添加配置信息
# 允许通过本机所有IP访问
http.host: 0.0.0.0
# 是否支持跨域,默认为false
http.cors.enabled: true
http.cors.allow-origin: "*"
- 创建和启动容器
docker run -d --name elasticsearch --net elk --restart always --privileged=true \
-p 9200:9200 -p 9300:9300 \
-e "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" \
-e "discovery.type=single-node" \
-v /opt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \
elasticsearch:7.14.1
JVM堆内存大小设置 128M 时,安装 IK 分词器的时候会报错,建议堆内存设置至少 256M。
- 安装IK分词器
访问 https://github.com/medcl/elasticsearch-analysis-ik/releases
https://github.com/medcl/elasticsearch-analysis-ik/releases 查找与 ElasticSearch 版本对应的分词器,复制其完整下载地址。
docker exec -it elasticsearch /bin/sh
cd bin/
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.1/elasticsearch-analysis-ik-7.14.1.zip
查看已安装的IK分词器
elasticsearch-plugin list
重启 ElasticSearch
docker restart elasticsearch
如果想删除分词器执行以下命令:
elasticsearch-plugin remove analysis-ik
2、Kibana 部署
- 拉取镜像
docker pull kibana:7.14.1
- 创建和启动容器
docker run -d --name kibana --net elk --restart always -p 5601:5601 kibana:7.14.1
访问 http://xxxxxxx:5601 ,可以看到Kibana界面
3、Logstash 部署
- 拉取镜像
docker pull logstash:7.14.1
- 创建目录
mkdir -p /opt/logstash/{config,data,pipeline}
chmod 777 /opt/logstash/{config,data,pipeline}
- 配置文件
- 设置JVM堆内存大小
vi /opt/logstash/config/jvm.options
添加配置信息
-Xmx128m
-Xms128m
- Logstash配置
vi /opt/logstash/config/logstash.yml
添加配置信息
# 允许通过本机所有IP访问
http.host: "0.0.0.0"
# 指定使用管道ID
xpack.management.pipeline.id: ["main"]
- 管道ID和配置文件路径映射
vi /opt/logstash/config/pipelines.yml
添加管道ID和管道配置文件目录映射,注意符号 - 前后都要有空格(巨坑)
- pipeline.id: main
path.config: "/usr/share/logstash/pipeline"
- 管道配置
添加 有来商城 微服务应用日志管道配置,在上面指定了管道配置容器目录 /usr/share/logstash/pipeline , 后面启动 Logstash 时会将其挂载至宿主机目录 /opt/logstash/pipeline,接下来只要在宿主机目录下添加管道配置文件 youlai-log.config 就可以被 Logstash 自动加载生效。
vi /opt/logstash/pipeline/youlai-log.config
添加完整内容如下
input {
beats {
port => 5044
client_inactivity_timeout => 36000
}
}
filter {
mutate {
remove_field => ["@version"]
remove_field => ["tags"]
}
}
output {
if [appname] == "youlai-admin" {
elasticsearch {
hosts => "http://elasticsearch:9200"
index => "youlai-admin-log"
}
}else if [appname] == "youlai-auth" {
elasticsearch {
hosts => "http://elasticsearch:9200"
index => "youlai-auth-log"
}
}
stdout {}
}
可以看到在 output 里根据 appname 生成的不同索引库,其中 appname 是 filebeat 自定义字段,目的区分多应用日志,自定义字段在 Filebeat部署的时候定义。
- 创建和启动容器
docker run -d --name logstash --net elk --restart always \
-p 5044:5044 -p 9600:9600 \
-v /opt/logstash/config:/usr/share/logstash/config \
-v /opt/logstash/data:/usr/share/logstash/data \
-v /opt/logstash/pipeline:/usr/share/logstash/pipeline \
logstash:7.14.1
4、Filebeat 部署
- 拉取镜像
docker pull elastic/filebeat:7.14.1
- 目录创建
mkdir -p /opt/filebeat/config
chmod 777 /opt/filebeat/config
- 配置文件
添加 filebeat.yml 配置文件
vi /opt/filebeat/config/filebeat.yml
添加如下配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /logs/youlai-admin/log.log
fields:
appname: youlai-admin # 自定义字段,提供给 Logstash 用于区分日志来源
fields_under_root: true # 开启自定义字段
- type: log
enabled: true
paths:
- /logs/youlai-auth/log.log
fields:
appname: youlai-auth
fields_under_root: true
processors:
- drop_fields:
fields: ["log","input","host","agent","ecs"] # 过滤不需要的字段
output.logstash:
hosts: ['47.104.214.204:5044']
- /logs/youlai-admin/log.log 是应用 youlai-admin 输出的日志文件路径
- 47.104.214.204 是部署 Logstash 服务器的IP地址
- 容器创建和启动
docker run -d --name filebeat --restart=always \
--log-driver json-file \
--log-opt max-size=100m \
--log-opt max-file=2 \
-v /logs:/logs \
-v /opt/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
elastic/filebeat:7.14.1
转:https://www.cnblogs.com/haoxianrui/p/15336249.html https://www.cnblogs.com/haoxianrui/p/15336249.html
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 奇怪的阿峰
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果