ELK(分布式日志分析系统)包含ElasticSearch(可简称ES),Logstash,Kibana三个核心组件。
ElasticSearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能,对外提供REST和java api,可扩展性的分布式系统。
Logstash是一个用来搜集、分析、过滤日志的工具,几乎支持所有类型的日志,能够接收多种来源的日志,包括syslog、mq,并且能够输出到多种介质中,包括es,邮件等等。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户定制仪表板视图,还允许用户使用es语法进行操作。
# 建议拉取相同版本的ELK镜像
docker pull elasticsearch:7.8.0
docker pull logstash:7.8.0
docker pull kibana:7.8.0
# ElasticSearch-Head是一个用于查看ElasticSearch相关信息的管理界面
docker pull mobz/elasticsearch-head:5-alpine
# 在根目录创建docker文件夹并进入文件夹
mkdir /docker
cd /docker
# 下载IK插件文件(如果提示没有wget命令则先执行:`yum install -y wget`,再执行下载命令)
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip
# 可选项:wget下载过慢可先用浏览器将文件下载到本地再上传到Linux(如果提示没有rz命令则先执行:`yum install -y lrzsz`,再执行上传命令,选择elasticsearch-analysis-ik-7.8.0.zip文件)
rz
# 解压(如果提示没有unzip命令则先执行:`yum install -y unzip`,再执行下载命令)
unzip elasticsearch-analysis-ik-7.8.0.zip -d elasticsearch-analysis-ik
vi DockerFile
FROM elasticsearch:7.8.0
ADD elasticsearch-analysis-ik /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik
docker build -f DockerFile -t elasticsearch-ik:7.8.0 .
创建容器并启动:(如果引用的是自行创建的镜像elasticsearch-ik,引用的镜像名对应即可elasticsearch-ik:7.8.0)
? docker run -d -p 9200:9200 --name elasticsearch elasticsearch:7.8.0
查看实时日志:docker logs -f elasticsearch
,发现ES启动失败
错误处理:
ERROR: [2] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
错误[1]的解决方法:
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
错误[2]的解决方法:
docker run -d -p 9200:9200 -e "discovery.type=single-node" --name elasticsearch elasticsearch:7.8.0
docker ps
,及实时日志:docker logs -f elasticsearch
执行:curl localhost:9200
,显示如下即启动成功
[root@localhost docker]# curl localhost:9200
{
"name" : "9f832bbeb44a",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "8GAjHyQEToO6PMl8dDoemQ",
"version" : {
"number" : "7.8.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
"build_date" : "2020-06-14T19:35:50.234439Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Java HotSpot(TM) 64-Bit Server VM warning: INFO:
os::commit_memory(0x0000000085330000, 2060255232, 0) failed;
error=’Cannot allocate memory’ (errno=12)
这是由于elasticsearch:tag 默认分配 jvm 空间太大,内存不足以分配导致。
解决方法就是修改jvm空间分配:
find /var/lib/ -name jvm.options
vi /var/lib/docker/overlay2/1ff5019ead459b4d090b4a72e95e3cc17dc7a8432ce0051e470a3c99ac35c4a6/diff/usr/share/elasticsearch/config/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms512m
-Xmx512m
################################################################
## Expert settings
################################################################
docker run -d -p 9200:9200 -e "http.cors.enabled=true" -e "http.cors.allow-origin=*" -e "discovery.type=single-node" --name elasticsearch elasticsearch:7.8.0
博客参考:https://www.jianshu.com/p/a0bd70301eec
原文:https://www.cnblogs.com/new-life/p/13390731.html