文章目录
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=C.UTF-8 \
-e LC_ALL=C.UTF-8 \
-v /dhx/elk8.4.3/elasticsearch/config:/usr/share/elasticsearch/config \
-v /dhx/elk8.4.3/elasticsearch/data:/usr/share/elasticsearch/data \
-v /dhx/elk8.4.3/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /dhx/elk8.4.3/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:8.4.3
修改配置/dhx/elk8.4.3/elasticsearch/config/elasticsearch.yml:
vi /dhx/elk8.4.3/elasticsearch/config/elasticsearch.yml
#根据自己的配置内容进行修改
cluster.name: "docker-cluster"
network.host: 0.0.0.0
#跨域设置
http.cors.enabled: true
http.cors.allow-origin: "*"
#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 16-12-2022 08:21:56
#
# --------------------------------------------------------------------------------
#****此处是否开启密码校验模式 true是开启密码校验模式,否则不用密码校验
xpack.security.enabled: false
#****启动会报错not all primary shards of [.geoip_databases] index are active at 则将该配置改为false
ingest.geoip.downloader.enabled: false
#添加这个配置以后在kibana中才会显示联机状态,否则会显示脱机状态
xpack.monitoring.collection.enabled: true
#xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
#xpack.security.http.ssl:
# enabled: true
# keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
#xpack.security.transport.ssl:
# enabled: true
# verification_mode: certificate
# keystore.path: certs/transport.p12
# truststore.path: certs/transport.p12
#----------------------- END SECURITY AUTO CONFIGURATION -------------------------
- 增加:
xpack.monitoring.collection.enabled: true
- 说明:添加这个配置以后在kibana中才会显示联机状态,否则会显示脱机状态
- 参考配置:
- 重启容器
docker restart elasticsearch
Elasticsearch8以上默认开启了X-Pack 安全功能
- 说明:请求Elasticsearch必须使用https
- 测试:https://ip:9200
- 用户名就是:elastic
- 密码在第一次启动时保存下来的信息中查找
- 然后看到这种信息说明启动成功了
自定义修改密码
# 重置下面两个密码,注意:需等待es启动
# docker exec -it elas