赞
踩
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 中索引数据。
ElasticSearch:分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。
参考安装
命令 | 描述 |
---|---|
docker pull elasticsearch | 下载最新版ElasticSearch镜像 (其实此命令就等同于 : docker pull elasticsearch:latest ) |
docker pull elasticsearch:xxx | 下载指定版本的ElasticSearch镜像 (xxx指具体版本号) |
- # 下载
- docker pull elasticsearch:7.17.4
- # 查看镜像
- docker images
- # 创建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

多行模式
- -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
虚拟机访问:http://localhost:9200/
宿主机访问:http://192.168.124.137:9200/
到这里ElasticSearch就安装成功了
查看ElasticSearch的容器内部的ip,下面都是需要用到!!!
- docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' elasticsearch
Elasticsearch的ip为:172.17.0.4
docker run -d -p 9100:9100 --name elasticsearch-head mobz/elasticsearch-head:5
访问:http://192.168.124.137:9100/
- # 创建文件夹
- 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
- # 删除容器
- 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
Kibana:一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例。它提供了强大且易用的功能,例如直方图、线形图、饼图、热图和内置的地理空间支持。此外,它还提供了与 Elasticsearch 的紧密集成。
docker pull kibana:7.17.4
在服务器上新建配置文件,用于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
- -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
到这里kibana就安装成功了
Logstash:数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。
docker pull logstash:7.17.4
- # 创建文件夹
- 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"

-
- # 创建文件夹
- 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"
- }
- }

- 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
- docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' logstash
Logstash的IP为:172.17.0.3
Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。
- # 创建文件夹
- 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访问地址
映射了 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。