设置主机名
[root@es1 ~]# hostnamectl set-hostname es1.example.local
主机名
[root@es1 ~]# hostname
es1.example.local
创建目录
[root@es1 ~]# mkdir /data/elk -p
[root@es2 ~]# mkdir /data/elk -p
[root@es3 ~]# mkdir /data/elk -p
每台都要查看磁盘
[root@es1 ~]# fdisk -l
格式化
[root@es1 ~]# mkfs.ext4 /dev/sdb
查看磁盘
[root@es1 ~]# lsblk -f
sdb ext4 058fe63a-ae02-4aae-9295-38eeae9ce98b
临时挂载
[root@es1 ~]# mount /dev/sdb /data/elk/
查看挂载
[root@es1 ~]# df -Th
/dev/sdb ext4 490G 53M 488G 1% /data/elk
永久挂载
[root@es1 ~]# echo "/dev/sdb /data/elk/ ext4 defaults 0 0" >> /etc/fstab
验证
[root@es1 ~]# umount /data/elk
[root@es1 ~]# mount -a
[root@es1 ~]# df -Th
安装es
注意:es依赖jdk,可以下载官方的es包中包含jdk就无须下载jdk
使用dpkg安装
[root@es1 src]# dpkg -i elasticsearch-7.12.1-amd64.deb
拷贝到其他机器
[root@es1 src]# scp elasticsearch-7.12.1-amd64.deb 172.31.2.102:/usr/local/src
[root@es1 src]# scp elasticsearch-7.12.1-amd64.deb 172.31.2.103:/usr/local/src
修改配置文件
[root@es1 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-long
node.name: elk-node1
path.data: /data/elk/data
path.logs: /data/elk/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["172.31.2.101", "172.31.2.102",'172.31.2.103']
cluster.initial_master_nodes: ["172.31.2.101", "172.31.2.102",'172.31.2.103']
action.destructive_requires_name: true
gateway.recover_after_nodes: 2
配置文件详解
cluster.name: ELK-Cluster #ELK 的集群名称,名称相同即属于是同一个集群
node.name: elk-node1 #当前节点在集群内的节点名称,与 host1 不能相同
path.data: /elk/data #ES 数据保存目录
path.logs: /elk/logs #ES 日志保存目
bootstrap.memory_lock: true #服务启动的时候锁定足够的内存,防止数据写入swap
network.host: 0.0.0.0 #监听 IP
http.port: 9200 #监听端口
#集群中 node 节点发现列表
discovery.seed_hosts: ["172.31.2.101","172.31.2.102","172.31.2.103" #集群初始化那些节点可以被选举为 master
cluster.initial_master_nodes: ["172.31.2.101","172.31.2.102","172.31.2.103"]
#2.x 5.x 6.x 配置节点发现列表
discovery.zen.ping.unicast.hosts: ["192.168.15.11", "192.168.15.12"]
#一个集群中的 N 个节点启动后,才允许进行数据恢复处理,默认是 1
gateway.recover_after_nodes: 2
# 设置是否可以通过正则或者_all 删除或者关闭索引库,默认 true 表示必须需要
显式指定索引库名称,生产环境建议设置为 true,删除索引库的时候必须指定,
否则可能会误删索引库中的索引库。
action.destructive_requires_name: true
修改内存限制,并同步配置文件:
内存锁定的配置参数:
https://discuss.elastic.co/t/memory-lock-not-working/70576
修改内存
[root@es1 ~]# vim /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g
最小和最大内存限制,为什么最小和最大设置一样大?
https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
官方配置文档最大建议 30G 以内。
修改授权
[root@es1 ~]# chown elasticsearch.elasticsearch /data/elk/ -R
改启动文件
[root@es1 ~]# vim /usr/lib/systemd/system/elasticsearch.service
User=elasticsearch
Group=elasticsearch
LimitMEMLOCK=infinity
重新加载
[root@es1 ~]# systemctl daemon-reload
重新启动
[root@es1 ~]# systemctl restart elasticsearch
查看端口
[root@es1 ~]# ss -tanl
LISTEN 0 128 *:9200 *:*
LISTEN 0 128 *:9300 *:*
登录浏览器查看:http://172.31.2.101:9200/
安装 elasticsearch 插件之 head:
插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发
爱好者提供的插件,可以实现对 elasticsearch 集群的状态监控与管理配置等功能。
浏览器安装 elasticsearch 插件:
https://chrome.google.com/webstore/category/extensions?hl=zh-CN
搜索:elasticsearch head
ELK脚本批量删除index索引
删除多少天的
DATE=`date -d "5 days ago" +%Y.%m.%d`
删除的文件名
完整脚本
[root@es01 ~]# cat es-delete.sh
#!/bin/bash
DATE=`date -d "5 days ago" +%Y.%m.%d`
# 放index索引名称
NAME="
XXXX
XXXX
XXXX
"
for i in ${NAME};do
FILE_NAME=${i}-${DATE}
# 删除index索引名
curl -XDELETE http://ip:9200/${FILE_NAME}
done
手动测试
[root@es01 ~]# curl -XDELETE http://ip:9200/xxx-xxx-index索引