文章目录
- ELK简介
- 二、版本说明
- 三、安装部署
- 3.1 创建docker网络
- 3.2 Elasticsearch
- 拉取docker镜像,版本:8.4.3
- 第一次执行docker脚本
- 可以看到控制台的信息,找到这个信息并保存下来
- 创建Elasticsearch挂载目录
- 给创建的文件夹授权
- 将容器内的文件复制到主机上
- 删除容器
- 修改docker脚本,增加-v挂载目录和-d参数
- 修改配置/dhx/elk8.4.3/elasticsearch/config/elasticsearch.yml:
- Elasticsearch8以上默认开启了X-Pack 安全功能
- 自定义修改密码
- 3.3 Kibana
- 拉取镜像,版本:8.4.3
- 第一次执行docker启动脚本
- 创建kibana挂载目录
- 给创建的文件授权
- 将容器内的文件复制到主机上
- 修改配置文件/dhx/elk8.4.3/kibana/config/kibana.yml:
- 删除容器
- 修改docker启动脚本,增加挂载目录
- 查看kibana日志
- 打开浏览器http://ip:5601,使用elastic用户的密码进行认证
- 输入token以后会看到一个验证码框,验证码从kibana的日志中获取
- 输入用户名:elastic,密码:第一次启动elasticsearch保存的密码
- 3.4 Logstash
- 拉取镜像,版本:8.4.3
- 第一次执行docker启动脚本
- 创建logstash挂载目录
- 给创建的文件授权
- 将容器内的文件复制到主机上
- 将/dhx/elk8.4.3/elasticsearch/config/certs复制到/dhx/elk8.4.3/logstash/config/certs
- 修改配置/dhx/elk8.4.3/logstash/config/logstash.yml
- 修改配置/dhx/elk8.4.3/logstash/pipeline/logstash.conf
- 删除容器
- 修改docker启动命令,加上-v挂载目录
- 查看效果
- 3.5 filebeat
- 拉取镜像,版本:8.4.3
- 第一次执行docker启动脚本
- 创建filebeat挂载目录
- 给创建的文件授权
- 将容器内的文件复制到主机上
- 修改配置/dhx/elk8.4.3/filebeat/filebeat.yml
- 删除容器
- 修改docker启动脚本,增加-v挂载目录
- 配置完成
- 3.6 使用Kafka作为中间件
- 第一步 搭建zookeeper环境
- 第二步 启动ZooKeeper容器
- 第三步 添加ZooKeeper配置文件
- 第四步:进入容器内部,验证容器状态
- 第五步 创建kafka环境
- 第三步 验证kafka是否可以使用
- 注意
- 第五步 修改配置/dhx/elk8.4.3/filebeat/filebeat.yml
- 第六步 修改配置/dhx/elk8.4.3/logstash/pipeline/logstash.conf
ELK简介
之前我们已经使用过软件进行过安装了,不知道的可以看我之前写的文章ELK日志系统搭建完整详细步骤
- ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其他专门由于收集数据的轻量型数据采集器Beats。
- Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。在elasticsearch中,所有节点的数据是均等的。
- Logstash :数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。
- Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。
- Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。
二、版本说明
- Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。
ELK常见的几种架构:
- Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。
- Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。
- Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如Kafka) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。
本次安装ELK根据自身需求选择了Elasticsearch + Logstash + filebeat + Kibana架构
三、安装部署
3.1 创建docker网络
docker network create -d bridge elastic
3.2 Elasticsearch
拉取docker镜像,版本:8.4.3
docker pull elasticsearch:8.4.3
第一次执行docker脚本
docker run -it \-p 9200:9200 \-p 9300:9300 \--name elasticsearch \--net elastic \-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \-e "discovery.type=single-node" \-e LANG=C.UTF-8 \-e LC_ALL=C.UTF-8 \elasticsearch:8.4.3
注意第一次执行脚本不要加
-d
这个参数,否则看不到服务首次运行时生成的随机密码和随机enrollment token
可以看到控制台的信息,找到这个信息并保存下来
创建Elasticsearch挂载目录
mkdir -p /dhx/elk8.4.3/elasticsearch
给创建的文件夹授权
chmod -R 777 /dhx/elk8.4.3/elasticsearch
将容器内的文件复制到主机上
docker cp elasticsearch:/usr/share/elasticsearch/config /dhx/elk8.4.3/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/data /dhx/elk8.4.3/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/plugins /dhx/elk8.4.3/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/logs /dhx/elk8.4.3/elasticsearch/
删除容器
docker rm -f elasticsearch
修改docker脚本,增加-v挂载目录和-d参数
docker run -it \-d \-p 9200:9200 \-p 9300:9300 \--name elasticsearch \--net elastic \-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \-e "discovery.type=single-node" \-e LANG