- ES配置
Elasticsearch简介
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Elasticsearch安装
去官网下载elasticsearch的安装包:elasticsearch-6.7.2.tar.gz
地址:https://www.elastic.co/cn/downloads/
(1)上传安装包至linux服务器
(2)解压安装包
[root@master1~]# tar -zxvf elasticsearch-6.7.2.tar.gz #解压安装包
Elasticsearch 配置
Elasticsearch主要有两个配置文件,elasticsearch.yml 文件用于配置集群节点等相关信息的,elasticsearch 文件则是配置服务本身相关的配置,例如某个配置文件的路径以及java的一些路径配置什么的。
开始配置集群节点, 切记:一定先关闭防火墙 主节点设置
在 192.168.1.100上编辑配置文件:这台服务器上面是主。 所以是master节点,不做数据节点
配置 node.master: true
#是否master节点 node.data: false #是否数据节点
[root@master1 ~]# vim /usr/elasticsearch/elasticsearch-6.7.2/config/elasticsearch.yml
cluster.name: master-slave #自定义集群名称
node.name: master-1 #节点名称
cluster.initial_master_nodes: master-1 #初始化节点 跟node.name一样
node.master: true #是否master节点
node.data: false #是否数据节点
network.host: 0.0.0.0 #监听地址(默认为0.0.0.0),也可以填写多个
http.port: 9200 #es集群提供外部访问的接口
transport.tcp.port: 9300 #es集群内部通信接口
bootstrap.memory_lock: true #避免es使用swap交换分区
discovery.seed_host: ["192.168.2.100", "192.168.2.101", "192.168.2.102", "192.168.2.103", "192.168.2.104"]
启动注意问题 : 1. 在 elasticsearch.yml 配置 node.name 的时候,启动报错,以下是配置和报错信息。
报错原因其实就是因为少了个空格!
这是因为 yml 文件写属性值的时候必须要空格 或者属性写错 也会报错
- memory locking requested for elasticsearch process but memory is not locked
elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true 官网的解释 是:发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。 所以最好限制住elasticsearch占用的内存情况,可选少用swap
-
修改文件/etc/elasticsearch/elasticsearch.yml,上面那个报错就是开启后产生的,如果开启还要修改其它系统配置文件 bootstrap.memory_lock: true
-
修改文件/etc/security/limits.conf,最后添加以下内容。
- soft nofile 65536
- hard nofile 65536
- soft nproc 32000
- hard nproc 32000
- hard memlock unlimited
- soft memlock unlimited
-
修改文件 /etc/systemd/system.conf ,分别修改以下内容。
- DefaultLimitNOFILE=65536
- DefaultLimitNPROC=32000
- DefaultLimitMEMLOCK=infinity 改好后重启下系统。再启动elasticsearch就没报错了 。
reboot -n : 保存数据后重启 ./elasticsearch -d :后台启动 3.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
elasticsearch用户拥有的内存权限太小,至少需要262144
由于ES构建基于lucene, 而lucene设计强大之处在于lucene能够很好的利用操作系统内存来缓存索引数据,以提供快速的查询性能。lucene的索引文件segements是存储在单文件中的,并且不可变,对于OS来说,能够很友好地将索引文件保持在cache中,以便快速访问;因此,我们很有必要将一半的物理内存留给lucene ; 另一半的物理内存留给ES(JVM heap )。所以, 在ES内存设置方面,可以遵循以下原则:
1.当机器内存小于64G时,遵循通用的原则,50%给ES,50%留给lucene。
2.当机器内存大于64G时,遵循以下原则:
a.如果主要的使用场景是全文检索, 那么建议给ES Heap分配 4~32G的内存即可;其它内存留给操作系统, 供lucene使用(segments cache), 以提供更快的查询性能。
b.如果主要的使用场景是聚合或排序, 并且大多数是numerics, dates, geo_points 以及not_analyzed的字符类型, 建议分配给ES Heap分配 4~32G的内存即可,其它内存留给操作系统,供lucene使用(doc values cache),提供快速的基于文档的聚类、排序性能。
c.如果使用场景是聚合或排序,并且都是基于analyzed 字符数据,这时需要更多的 heap size, 建议机器上运行多ES实例,每个实例保持不超过50%的ES heap设置(但不超过32G,堆内存设置32G以下时,JVM使用对象指标压缩技巧节省空间),50%以上留给lucene。
更多es性能调优参数,参考文档:https://www.jianshu.com/p/532b540d4c46
解决办法:
在/etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144 参考数据(4g/4194304 8g/8388608)
如果申请16G的内存,可适当将vm.max_map_count=4194304或8388608
执行sysctl -p 即可永久修改
从节点设置:
192.168.1.102 这台服务器上面是从节点服务器 所以是slave节点,
node.master: fasle
#是否master节点 node.data: true #是否数据节点
#配置明细
[root@node1 ~]# vim /usr/elasticsearch/elasticsearch-6.7.2/config/elasticsearch.yml
cluster.name: master-slave #自定义集群名称
node.name: node-1 #节点名称
node.master: false #是否master节点
node.data: true #是否数据节点
network.host: 0.0.0.0 #监听地址(默认为0.0.0.0),也可以填写多个
http.port: 9200 #es集群提供外部访问的接口
transport.tcp.port: 9300 #es集群内部通信接口
bootstrap.memory_lock: true #避免es使用swap交换分区
discovery.seed_host: ["192.168.2.100", "192.168.2.101", "192.168.2.102", "192.168.2.103", "192.168.2.104"]
discovery.zen.minimum_master_nodes: 3 ##为了避免脑裂,最少为 半数+1
查看集群状态
浏览器输入 http://10.2.4.72:9200/_cluster/health?pretty
ES设置分片
索引名/_settings(必须在创建索引的时候设置好分片数量) { "index": { "number_of_shards": 1 } }
ES 设置副本 (默认是1个副本,可以在创建索引后增加)
索引名/_settings { "index": { "number_of_replicas": 1 } }
- logstash配置
一.解压安装包
tar -zxvf logstash-7.8.0.tar.gz
二.Logstash配置
1.新建 .conf 后缀的文件,我的是logstash.conf
2.如图,修改logstash配置,input的部分要与filbeat中的端口一致 默认5044(随意),filter的部分针对不同的日志内容做不同的预处理或解析,output中对不同的日志输出到不同的es的索引中。图中的filetype就是下面的filebeat中新增的自定义字段;
3.图中红色字段部分的是输入数据到 指定es的ip以及读取日志后输出的日志时间格式
三.Logstash启动命令
nohup ./bin/logstash -f conf/logstash.conf & (后台启动)
- Filebeat配置
参考文档 blog.csdn.net/a464057216/…
一.解压安装包
tar -zxvf filebeat-7.8.0-linux-x86_64.tar.gz
二. 配置 filebeat.yml
上图表示可以配置多个日志的监控
上图表示filebeat 输出到指向的logstash . 端口号切记与配置的logstash一致
三.filebeat 启动命令
nohup ./filebeat -e -c filebeat.yml -d "Publish" & > nohup.out &(后台启动)
四. 注意
在当shell中执行nohup成功后,还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;如果在nohup执行成功后直接点关闭程序按钮关闭终端的话,这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown,起不到关掉终端后调用程序继续后台运行的作用。
基地exit退出用户
- kibana配置
一.解压安装包
tar -zxvf /home/wyk/kibana-7.7.0-linux-x86_64.tar.gz
二. 编辑conf
vim config/kibana.yml
#kibana.yml配置下面
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"] #ES所在的ip
#elasticsearch.username: "kibana" #如果ES有配置用户则这里需要配置用户密码
#elasticsearch.password: "123456"
三. 启动
chmod +x kibana 赋予执行权限
nohup ./kibana & 后台运行
四.访问
localhost:5061
验证数据
在Kibana中可以看到两个索引已经建出来了并同时写入了不同的日志内容: