赞
踩
随着企业业务的不断增长,日志管理成为了系统运维中不可或缺的一部分。ELK(Elasticsearch、Logstash、Kibana)作为一套开源的日志管理系统,以其高效、灵活、可扩展的特性,成为了众多企业的首选。本文将详细介绍如何搭建一套完整的ELK日志管理系统。
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。
类型/版本 | 6.x | 7.x | 8.x | 建议 |
---|---|---|---|---|
Licence | Apache 2.0 | 7.0~7.10 Apache 2.07.11++ SSPL | SSPL | 建议选择更友好的Apache2.0版本,SSPL协议对于想要让ES做为PAAS对外提供服务的话,将会面临es厂商的限制 |
云厂商支持程度 | 腾讯、阿里云均支持,华为不支持 | 腾讯云最高版 7.10.x阿里云7.10.x,7.16.x华为云7.6.x,7.10.x | 均不支持 | 各云厂商也主要在推广7.x版本,稳定性及占用率更高 |
发版时间 | 2016 | 2019 | 2021 | 建议选择7.x版本,经历将近4年,稳定性已经经过验证,6.x和8.x一个太老一个太新 |
特性差异 | / | 集群配置简化,master选举进行了优化,能够避免集群脑裂Q问题;索引创建只 已经去除了type,更加简化;索引查询算法升级,查询性能有优化;提供安全策略;Kibana更轻量化,更易用; | ES API进行了升级方便后续升级使用更加安全,es默认开启了一些安全功能;新的搜索API特性比如支持NLP等; | 7.x基本也能满足目前需求,稳定性也更有保障 |
SpringBoot兼容 | 2.1~2.2版本对6.x支持 | 2.3~2.7版本对7.x支持 | / | 看框架选择 |
博主这里使用 7.x 版本中的 7.10.1版本做演示
docker pull elasticsearch:7.10.1
find /var/lib/docker/overlay2/ -name jvm.options
修改jvm配置,根据服务器配置修改合适大小
-Xms2g 改为 -Xms1g
-Xmx2g 改为 -Xmx1g
这是一个设置内核参数的语法,vm.max_map_count 是内核参数的名称。它用于控制单个进程能够拥有的虚拟内存区域(即映射区域)的最大数量。
Elasticsearch使用了大量的内存映射文件来存储数据索引和缓存。为了保证Elasticsearch正常运行,在某些操作系统中需要增加 vm.max_map_count 的值。
通过将该参数设置为较大的值(例如262144),可以确保操作系统能够提供足够的虚拟内存区域供Elasticsearch使用,从而避免潜在的性能问题或错误。
vim /etc/sysctl.conf
保存退出,查看配置是否生效
sysctl -p
mkdir -p data config plugins
[fd@localhost es]$ mkdir -p data config
[fd@localhost es]$ ll
总用量 8.0K
drwxr-xr-x. 2 fd fd 4.0K 6月 14 21:15 config
drwxr-xr-x. 2 fd fd 4.0K 6月 14 21:15 data
docker run -d \
--restart=always \
--name elasticsearch \
--network elk-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /home/fd/dockerApp/es/data:/usr/share/elasticsearch/data \
-v /home/fd/dockerApp/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
elasticsearch:7.10.1
命令解释:
-e “cluster.name=es-docker-cluster”:设置集群名称
-e “http.host=0.0.0.0”:监听的地址,可以外网访问
-e “ES_JAVA_OPTS=-Xms512m -Xmx512m”:分配内存大小
-e “discovery.type=single-node”:单节点模式
-v /home/fd/dockerApp/es/data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
-v es-logs:/usr/local/elasticsearch7.12.1/logs:挂载逻辑卷,绑定es的日志目录
-v /home/fd/dockerApp/es/plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
–privileged:授予逻辑卷访问权
–network elk-net :加入一个名为elk-net的网络中
-p 9200:9200:端口映射配置
容器运行后,复制配置文件到服务器
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml ./config/elasticsearch.yml
修改elasticsearch.yml配置
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# 关闭密码校验
xpack.security.enabled: false
# 是否支持跨域,默认为false
http.cors.enabled: true
# 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"
关闭密码验证
文件最后添加xpack.security.enabled: false关闭 密码安全验证
设置跨域访问
当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。