ELK日志系统搭建系列(二)Linux中Docker安装Elasticsearch


前言

Elastic Stack(也称为 ELK Stack)可用于各种用例 — 从可观测性到安全性,从企业搜索到业务分析。ELK简单来说,可以完成对于海量日志数据的汇总、搜索、查询以及可视化,可以快速定位和分析问题。
1.Elasticsearch(简称es)部署简单且具有极佳的横向可扩展性,即能作为大型分布式集群,也可运行在单机上作为轻量级搜索引擎使用。Elasticsearch的分片机制和副本机制保障了数据的完整性又实现了数据库本身的高效与高可用性。Elasticsearch检索功能丰富,提供了全文检索、同义词处理、相关度排名、复杂数据分析等功能;
2.Logstash在数据收集方面适用性非常广,它可以从日志文件、数据库、服务器、消息队列等等各个系统组件中收集数据,是最使用于日志收集的组件。通过Logstash这一个组件就可以搜集研学各端的iis日志、mysql慢查询日志、log日志、数据库存储的业务日志并把这些日志进行转换过滤后存储到 Elasticsearch中;
3.Kibana可以对存储在 Elasticsearch中的日志以图形化的形式进行展现,并且提供非常丰富的过滤接口,让用户能够通过过滤快速定位问题。ELK可以通过类似配置的语言,快速筛选数据 - 完美的展示功能,可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致 - 分布式功能,能够解决大型集群运维工作很多问题,包括监控、预警、日志收集解析等。

一、安装版本

Linux环境中Docker的安装请参考我之前的文章:ELK日志系统搭建系列(一)Centos安装Docker
ElasticSearch安装版本:7.1.0
选用此版本原因:es7.0.0以后可以使用xpack 插件的免费版,使用xpack插件可以给es进行加密,保证数据的安全性。

二、安装步骤

1.创建配置文件&数据映射目录

#在根目录下创建文件
mkdir /var/lib/elasticsearch
mkdir /elk
mkdir /elk/elasticsearch/

2.创建配置文件

vi /elk/elasticsearch/elasticsearch.yml
#配置文件内容
network.host: 0.0.0.0
http.port: 9200
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true    
http.cors.allow-origin: "*"

3. 添加相关用户

groupadd -g 1000 elasticsearch
useradd -u 1000 -g elasticsearch  -s /sbin/nologin -c "es user" elasticsearch
chown -R 1000:1000 /var/lib/elasticsearch/

4.启动docker es镜像

#es启动命令
docker run -it -d --name es -p 9200:9200 -p 9300:9300 \
-v /etc/localtime:/etc/localtime \
-v /etc/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /var/lib/elasticsearch/data:/usr/share/elasticsearch/data \
-v /var/lib/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.1.0

5.校验是否安装成功

#执行命令检测安装是否成功
curl http://127.0.0.1:9200/

出现下图所示格式内容,表示elasticsearch安装成功
在这里插入图片描述

三、安装中遇到过的问题

1.curl: (56) Recv failure: Connection reset by peer

解决方案:
修改elasticsearch.yml文件内容如下:

network.host: 0.0.0.0
http.port: 9200
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true    
http.cors.allow-origin: "*"

注意:这是elasticsearch.yml文件最简单的配置内容,要建集群还得配置其他信息

2.问题如下图所示

在这里插入图片描述
解决方案:

sudo sysctl -w vm.max_map_count=262144


在这里插入图片描述

四、es集群配置文件说明

例子1:
#集群名称,同一个集群的集群名称必须一致
cluster.name: ES-Cluster

#节点名
node.name: node-44

#设置一台机子能运行的节点数目,一般采用默认的1即可,因为我们一般也只在一台机子上部署一个节点。
node.max_local_storage_nodes:3

#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
#指绑定这台机器的任何一个ip
network.host: 0.0.0.0

#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,
#值必须是个真实的ip地址 
network.publish_host: 10.80.64.44

#设置对外服务的http端口,默认为9200
http.port: 9200

#设置节点之间交互的tcp端口,默认是9300
transport.tcp.port: 9300

#是否允许跨域REST请求
http.cors.enabled: true

#允许 REST 请求来自何处
http.cors.allow-origin: "*"

#配置数据存储路径
path.data: /var/lib/elasticsearch

#配置日志存储路径
path.logs: /var/log/elasticsearch

#节点角色设置
node.master: true

#配置是否可以作为数据节点
node.data: true

#有成为主节点资格的节点列表
discovery.seed_hosts: ["10.80.64.44","10.80.64.71","10.80.64.73"]
cluster.initial_master_nodes: ["node-44","node-71","node-73"]

#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1)
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 2

#因为要破解xpack,所以我们先关闭xpack安全功能
xpack.security.enabled: false 
xpack.security.transport.ssl.enabled: false

五、备注

参考资料:
https://blog.csdn.net/xc_zhou/article/details/80950753
Elasticsearch中文版详解
https://es.xiaoleilu.com/index.html
https://blog.csdn.net/lauyiran/article/details/86509833

猜你喜欢

转载自blog.csdn.net/qq_29775797/article/details/113143996