ELK(Elasticsearch、Logstash和Kibana)
1、Elasticsearch
Elasticsearch是一个高度可扩展的全文搜索和分析引擎,基于Apache Lucence(事实上,Lucence也是百度所采用的搜索引擎)构建,能够对大容量的数据进行接近实时的存储、搜索和分析操作。
2、Logstash
Logstash是一个数据收集引擎,它可以动态的从各种数据源搜集数据,并对数据进行过滤、分析和统一格式等操作,并将输出结果存储到指定位置上。Logstash支持普通的日志文件和自定义Json格式的日志解析。
3、Kibana
Kibana是一个数据分析和可视化平台,通常与Elasticsearch配合使用,用于对其中的数据进行搜索、分析,并且以统计图标的形式展示。
Logstash收集数据库的数据让Elasticsearch执行新增,在Kibana上可视化操作数据
ElasticSearch搭建:
下载对应版本压缩包,创建文件夹解压(使用华为镜像搜索对应版本下载)
解压:tar -xzf elasticsearch-7.10.0-linux-x86_64.tar.gz
复制两份,也就是一个有三个节点的es集群。
elasticsearch.yml配置(每个节点都要)
#设置集群名称。一个节点只能加入一个集群中,默认的集群名称是 elasticsearch
cluster.name: search-7.10.0
#可以配置每个节点的名称。用来提供可读性高的 ES 实例名称,它默认名称是机器的 hostname,可以自定义
node.name: node-1
#数据存储路径
path.data: /data/elasticsearch/data
#日志存储路径
path.logs:/data/elasticsearch/logs
#设置访问的地址。默认仅绑定在回环地址 127.0.0.1 和 [::1]。如果需要从其他服务器上访问以及多态机器搭建集群,我们需要设定 ES 运行绑定的 Host,节点需要绑定非回环的地址。建议设置为主机的公网 IP 或 0.0.0.0
network.host: 0.0.0.0
#默认端口是 9200
http.port: 9200
#初始的候选 master 节点列表。初始主节点应通过其 node.name 标识,默认为其主机名。确保 cluster.initial_master_nodes 中的值与 node.name 完全匹配
cluster.initial_master_nodes:
#发现设置。有两种重要的发现和集群形成配置,以便集群中的节点能够彼此发现并且选择一个主节点
discovery.seed_hosts: ["172.xx.xx.xx:9301", "172.xx.xx.xx:9302"]
#REST 客户端通过 HTTP 将请求发送到您的 Elasticsearch 集群,但是接收到客户端请求的节点不能总是单独处理它,通常必须将其传递给其他节点以进行进一步处理。它使用传输网络层(transport networking layer)执行此操作。传输层用于集群中节点之间的所有内部通信,与远程集群节点的所有通信,以及 Elasticsearch Java API 中的 TransportClient。
#transport.port 绑定端口范围。默认为 9300-9400
transport.port: 9301
http.cors.enabled: true
http.cors.allow-origin: true
ik分词器:
在每个节点plugins目录下创建目录ik
执行命令:
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.0/elasticsearch-analysis-ik-7.10.0.zip
下载对应es需要的jdk
使用root用户 vim /etc/sysctl.conf,增加vm.max_map_count = 655360,保存退出。
执行sysctl -p
启动:
切换到非root用户
给非root用户授权:chown -R myuser:myuser /opt/elk
#节点1
./elasticsearch -p /tmp/elasticsearch_9200_pid -d
#节点2
./elasticsearch -p /tmp/elasticsearch_9201_pid -d
#节点3
./elasticsearch -p /tmp/elasticsearch_9202_pid -d
Logstash搭建
下载压缩包,创建文件夹解压
tar -zxvf logstash-7.10.0.tar.gz
在config目录下创建xxx.conf配置文件,Input连接数据库,output连接es
启动:-f 后面跟创建的conf配置文件路径
nohup bin/logstash -f yourconfpath > /dev/null 2>&1 &
Kibana搭建
下载压缩包,创建文件夹解压
进入kibana根目录下的config文件夹下,修改kibana.yml
server.port: 5601
server.host: "0.0.0.0"
i18n.locale: "zh-CN"
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
授权:chown -R xx /opt/elk/kibana
启动
nohup bin/kibana > /dev/null 2>&1 &
ES节点关闭
停用节点
kibana控制台执行代码
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._name" : "node-3"
}
}
这将导致Elasticsearch将该节点上的分片分配给其余节点,而不会将群集状态更改为黄色或红色(即使您的副本数设置为0)。重新分配所有分片后,您可以关闭节点并执行您需要执行的任何操作。 完成后,Elasticsearch将再剩余节点上再次重新平衡分片。
查看分片情况
kibana控制台执行代码
GET /_cat/shards?v&pretty&s=state:desc
查看分片是否已经重新平衡到剩余的节点上了