Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器

说明:

elasticsearch、kibana、logstash、filebeat 版本要一致,elasticsearch-head 方便通过浏览器查看elasticsearch 的状态和索引数据。

Centos:7.0.4

ElasticSearch:7.17.4

Kibana:7.17.4

Logstash:7.17.4

Filebeat:7.17.4

Easticsearch-head:5

工作原理:

通过 filebeat(轻量级数据收集引擎)收集日志后,推送给 Logstash (数据收集处理引擎)进行过滤、分析、丰富、统一格式等操作,将处理后的日志存储在 Elasticsearch (分布式搜索引擎)的索引中,最后由 Kibana(可视化化平台)搜索、展示存储在 Elasticsearch 中索引数据。

Docker如果想安装软件 , 必须先到 Docker 镜像仓库下载镜像。

Docker官方镜像

一、ElasticSearch

ElasticSearch:分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。

1.1、寻找ElasticSearch镜像

参考安装

1.2、下载ElasticSearch镜像

命令描述
docker pull elasticsearch下载最新版ElasticSearch镜像 (其实此命令就等同于 : docker pull elasticsearch:latest )
docker pull elasticsearch:xxx下载指定版本的ElasticSearch镜像 (xxx指具体版本号)
# 下载
docker pull elasticsearch:7.17.4
# 查看镜像
docker images

1.3、创建ElasticSearch的文件夹

# 创建Elasticsearch配置文件夹
mkdir -p /home/elasticsearch/config
# 创建Elasticsearch数据文件夹
mkdir -p /home/elasticsearch/data
# 创建Elasticsearch插件文件夹(如:ik)
mkdir -p /home/elasticsearch/plugins
# 写入配置文件
echo "http.host: 0.0.0.0">>/home/elasticsearch/config/elasticsearch.yml
# 给挂载目录添加权限
chmod -R 777 /home/elasticsearch/

# 修改elasticseach.yml文件,追加
http.cors.enabled: true 
http.cors.allow-origin: "*" 
xpack: 
 ml.enabled: false
 monitoring.enabled: false 
 security.enabled: false 
 watcher.enabled: false

1.4、创建ElasticSearch容器并运行

多行模式

-d:表示在后台运行容器;
-p:将容器的端口 9200(TCP 请求端口) 和 9300(HTTP 请求端口)映射到主机上对应的端口;
-e:设置环境变量;
-v:挂载目录;
--name:设置容器名称;


docker run --name elasticsearch -p 9200:9200 -p9300:9300 \
-e "discovery.type=single-node" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.17.4

单行模式

docker run --name elasticsearch -p 9200:9200 -p9300:9300 -e "discovery.type=single-node" -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/elasticsearch/data:/usr/share/elasticsearch/data -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.17.4

//我的安装命令
docker run --name elasticsearch -p 9200:9200  -p 9300:9300  -e "discovery.type=single-node"  -e ES_JAVA_OPTS="-Xms84m -Xmx512m"  -v /opt/module/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v /opt/module/es/data:/usr/share/elasticsearch/data  -v /opt/module/es/plugins:/usr/share/elasticsearch/plugins  -d elasticsearch:7.17.4

1.5、测试ElasticSearch的安装结果

虚拟机访问:http://localhost:9200/

宿主机访问:http://192.168.124.137:9200/

图片[1]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

到这里ElasticSearch就安装成功了

查看ElasticSearch的容器内部的ip,下面都是需要用到!!!

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' elasticsearch 
图片[2]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

Elasticsearch的ip为:172.17.0.4

二、Elasticsearch-head

2.1、运行 elasticsearch-head 容器

docker run -d  -p 9100:9100 --name elasticsearch-head mobz/elasticsearch-head:5
图片[3]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

访问:http://192.168.124.137:9100/

图片[4]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

2.2、修改 vendor.js 主要是能让数据浏览右边显示索引数据

图片[5]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
# 创建文件夹
mkdir -p /home/elasticsearch-head
# 进入文件夹下
cd /home/elasticsearch-head
# 拷贝 vendor.js 文件到宿主机上
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js ./
# 修改 vendor.js 文件内容
sed -i '/contentType:/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js
sed -i '/var inspectData = s.contentType/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js

2.3、再次运行Elasticsearch-head容器

# 删除容器
docker rm -f elasticsearch-head
# 运行容器
docker run -d  -p 9100:9100 -v /home/elasticsearch-head/vendor.js:/usr/src/app/_site/vendor.js --name elasticsearch-head mobz/elasticsearch-head:5

2.4、测试Elasticsearch-head安装结果

图片[6]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

三、Kibana

Kibana:一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例。它提供了强大且易用的功能,例如直方图、线形图、饼图、热图和内置的地理空间支持。此外,它还提供了与 Elasticsearch 的紧密集成。

3.1、创建Kibana容器并运行

docker pull kibana:7.17.4
图片[7]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

3.2、Kibana配置文件

在服务器上新建配置文件,用于docker文件映射。所使用目录需对应新增。vi /home/kibana/kibana.yml

#Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://172.17.0.4:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true

3.3、运行Kibana容器

-d 表示在后台运行容器;
-p 5601:5601:将容器的 5601 端口映射到主机的 5601 端口上;
-v 目录挂载
--name kibana:设置容器名称;

docker run -d -p 5601:5601 \
-v /home/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--name kibana \
kibana:7.17.4

3.4、测试​Kibana安装结果

图片[8]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[9]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

到这里kibana就安装成功了

四、Logstash

Logstash:数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

4.1、获取Logstach的镜像

图片[10]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
docker pull logstash:7.17.4
图片[11]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

4.2、准备 logstash.yml、pipelines.yml 配置文件

# 创建文件夹
mkdir -p /home/logstash/config
# 创建 logstash.yml 文件
vi /home/logstash/config/logstash.yml

config:
  reload:
    automatic: true
    interval: 3s
xpack:
  management.enabled: false
  monitoring.enabled: false


# 创建 pipelines.yml 文件
vi /home/logstash/config/pipelines.yml

- pipeline.id: test
  path.config: "/usr/share/logstash/pipeline/logstash-filebeat.conf"

4.3、准备 logstash-filebeat.conf 配置文件


# 创建文件夹
mkdir -p /home/logstash/pipeline
# 创建 logstash.yml 文件
vi /home/logstash/pipeline/logstash-filebeat.conf

# 访问端口配置
input {
  beats {
    port => 5044
  }
}

# 过滤条件配置
#filter{
#  grok{
#    match => {
#    "message" => "%{COMBINEDAPACHELOG}"
#   }
#  }
#}

# 输出到ES配置
output {
  elasticsearch {
    hosts => ["http://172.17.0.4:9200"]	            
    index => "nginx_log"
  }
}

4.4、运行Logstash容器

docker run -d  -p 5044:5044 \
-v /home/logstash/pipeline:/usr/share/logstash/pipeline \
-v /home/logstash/config:/usr/share/logstash/config \
--name logstash logstash:7.17.4
//我的安装命令
sudo docker run -d -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 -v /mydata/logstash/pipeline/logstash-mall.conf:/usr/share/logstash/pipeline/logstash.conf --link elasticsearch:es --name logstash logstash:7.17.4
图片[12]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[13]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' logstash

Logstash的IP为:172.17.0.3

五、Filebeat

Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。

5.1、准备 filebeat.yml 配置文件

# 创建文件夹
mkdir -p /home/filebeat
# 创建 kibana.yml 配置文件
vi /home/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/access.log   #日志文件路径

output.logstash:
  hosts: ["172.17.0.3:5044"]  #logstash访问地址

5.2、运行filebeat容器

映射了 filebeat 配置文件和 nginx 日志,这样 nginx 日志有变化时映射过去的文件也会随之同步。

# /home/logs/access.log变化更新
docker run -d --name filebeat \
-v /home/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /home/logs/access.log:/var/log/access.log \
-d elastic/filebeat:7.17.4
图片[14]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

5.3、测试运行结果

图片[15]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

六、展示收集的数据

6.1、elasticsearch收集的数据

图片[16]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

6.2、kibana中展示数据

图片[17]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[18]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[19]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[20]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[21]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[22]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[23]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站
图片[24]-Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器-梦境学习站

—————————————-

作者昵称:Touch&

原文链接:https://blog.csdn.net/BThinker/article/details/125541817

作者主页:https://blog.csdn.net/BThinkerBThinker

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片