一、简介
ELK是三个开源软件的缩写:Elasticsearch, Logstash 和 Kibana,这三个组件常用于日志收集和分析。
Logstash是一个日志收集和转发的工具,可以将不同源的日志统一收集、过滤、转发。
Elasticsearch是基于Lucene的搜索和分析引擎,可用于存储、搜索和分析大量的日志数据。它的特点是能够实时地对大量数据进行搜索和分析。
Kibana是一个日志分析的工具,它可以将Elasticsearch的数据以图表的形式展现出来,帮助分析者更好地理解日志中的信息。
简单来说:
Logstash:收集日志,过滤并转发给Elasticsearch。另外filebeat收集日志。
Elasticsearch:存储日志数据,并提供搜索和分析接口。
Kibana:查询和分析Elasticsearch中的日志数据,并提供友好的界面。
二、单机版部署
ES软件包下载地址
#下载ES安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-x86_64.rpm
#安装
rpm -ivh elasticsearch-7.17.5-x86_64.rpm
#修改配置文件
cat >>/etc/elasticsearch/elasticsearch.yml<<'EOF'
#ES监听地址 对外暴露服务的地址
network.host: 0.0.0.0
#ES集群的节点IP
discovery.seed_hosts: ["192.168.77.176"]
#master选举的节点
cluster.initial_master_nodes: ["192.168.77.176"]
EOF
#查看配置
egrep -v '^#|^$' /etc/elasticsearch/elasticsearch.yml
#启动ES
systemctl start elasticsearch
#检查端口 9200对外提供http服务的端口 9300对内提供tcp服务的端口
ss -tlunp | egrep "9300|9200"
#验证服务
curl 192.168.77.176:9200
#或浏览器访问
http://192.168.77.176:9200
#如果遇到集群的uuid为"_na_"情况时,可以执行如下操作:
systemctl stop elasticsearch
rm -rf /var/lib/elasticsearch/* /var/log/elasticsearch/* /tmp/*
systemctl start elasticsearch
curl 192.168.77.176:9200
三、集群部署
0.资源规划和目录规划
192.168.77.176 elk01 | centos7 2C8G100G | cluster.name cluster-es |
192.168.77.177 elk02 | centos7 2C8G100G | cluster.name cluster-es |
192.168.77.178 elk03 | centos7 2C8G100G | cluster.name cluster-es |
#数据目录
/es/data/es7
#日志目录
/es/logs/es7
#软件目录
/es/softwares/es7
1.RPM包方式部署集群
#三台都执行
#下载ES安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-x86_64.rpm
#安装
rpm -ivh elasticsearch-7.17.5-x86_64.rpm
#修改配置文件 elk01修改后复制到其他2台
cat >>/etc/elasticsearch/elasticsearch.yml<<'EOF'
#ES集群的名称
cluster.name: cluster-es
#ES监听地址 对外暴露服务的地址
network.host: 0.0.0.0
#ES集群的节点IP
discovery.seed_hosts: ["192.168.77.176","192.168.77.177","192.168.77.178"]
#master选举的节点
cluster.initial_master_nodes: ["192.168.77.176","192.168.77.177","192.168.77.178"]
EOF
#配置文件分发到其他2台节点
scp /etc/elasticsearch/elasticsearch.yml 192.168.77.177:/etc/elasticsearch/elasticsearch.yml
scp /etc/elasticsearch/elasticsearch.yml 192.168.77.178:/etc/elasticsearch/elasticsearch.yml
#所有节点启动ES服务
systemctl enable elasticsearch
systemctl start elasticsearch
#验证ES集群节点
curl 192.168.77.176:9200/_cat/nodes
2.二进制包部署集群
#所有节点
#配置hosts
cat >> /etc/hosts <<'EOF'
192.168.77.176 elk01
192.168.77.177 elk02
192.168.77.178 elk03
EOF
#关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
#修改文件描述符
cat >>/etc/security/limits.conf<<'EOF'
es soft nofile 65536
es hard nofile 65536
EOF
cat >>/etc/security/limits.d/20-nproc.conf<<'EOF'
es soft nofile 65536
es hard nofile 65536
* hard nproc 4096
EOF
#内核虚拟内存映射值
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
#重新加载 配置生效
sysctl -p
#elk01节点
#ssh免密登录
#elk01节点上生成密钥对
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q
#elk01配置所有集群节点的免密登录 交互输入yes和密码
for i in `seq -w 01 03`;do ssh-copy-id elk${i} ;done
#连接测试 elk01可免密登录elk01、elk02和elk03
ssh elk01
ssh elk02
ssh elk03
#所有节点
#下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-linux-x86_64.tar.gz
#创建用户
useradd -u 2000 es
#创建目录并授权
mkdir -pv /es/{data,logs,softwares}/es7
chown es:es -R /es/{softwares,data,logs}/es7/
#或 创建目录并授权
install -d /es/{data,logs,softwares}/es7 -o es -g es
#解压
tar xf elasticsearch-7.17.5-linux-x86_64.tar.gz -C /es/softwares/es7/
#修改配置文件
#查看当前配置文件
egrep -v "^#|^$" /es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml
#修改
cat >>/es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml<<'EOF'
#集群名字
cluster.name: cluster-es
#数据目录
path.data: /es/data/es7
#日志目录
path.logs: /es/logs/es7
#ES监听地址 对外暴露服务的地址
network.host: 0.0.0.0
#ES集群的节点IP
discovery.seed_hosts: ["elk01","elk02","elk03"]
#master选举的节点
cluster.initial_master_nodes: ["elk01","elk02","elk03"]
EOF
#验证当前配置文件
egrep -v "^#|^$" /es/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml
#se用户启动所有节点服务 稍等
su - es -c '/es/softwares/es7/elasticsearch-7.17.5/bin/elasticsearch -d'
#日志查看
tailf -n 100 /es/logs/es7/cluster-es.log
##检查端口 9200对外提供http服务的端口 9300对内提供tcp服务的端口
ss -tlunp | egrep "9300|9200"
#验证ES集群节点
curl 192.168.77.176:9200/_cat/nodes
#所有节点
#systemd管理es7
#停止ES服务
pkill java
#编写ES启动脚本
cat > /usr/lib/systemd/system/es7.service <<EOF
[Unit]
Description= es7
After=network.target
[Service]
Type=simple
ExecStart=/es/softwares/es7/elasticsearch-7.17.5/bin/elasticsearch
User=es
LimitNOFILE=131070
[Install]
WantedBy=multi-user.target
EOF
#重新加载
systemctl daemon-reload
#设置开机自启动
systemctl enable --now es7
#查看服务是否正常运行
systemctl status es7
##检查端口 9200对外提供http服务的端口 9300对内提供tcp服务的端口
ss -tlunp | egrep "9300|9200"
#验证ES集群节点
curl 192.168.77.176:9200/_cat/nodes
3.使用oracle JDK管理ES服务
下载jdk-8u351-linux-x64.tar.gz软件包
#所有节点
#下载jdk-8u351-linux-x64.tar.gz
#解压到/es/softwares/
tar xf jdk-8u351-linux-x64.tar.gz -C /es/softwares/
#配置环境变量
cat >>/etc/profile <<'EOF'
JAVA_HOME=/es/softwares/jdk1.8.0_351
PATH=${JAVA_HOME}/bin:$PATH
EOF
#环境变量生效
source /etc/profile
#版本验证
java -version
#停止ES服务
pkill java
#修改启动脚本
cat > /usr/lib/systemd/system/es7.service <<EOF
[Unit]
Description= es7
After=network.target
[Service]
Type=simple
Environment=JAVA_HOME=/es/softwares/jdk1.8.0_351
ExecStart=/es/softwares/es7/elasticsearch-7.17.5/bin/elasticsearch
User=es
LimitNOFILE=131070
LimitNPROC=8192
[Install]
WantedBy=multi-user.target
EOF
#重新加载并重启es7
systemctl daemon-reload
systemctl restart es7
#日志查看
tailf -n 100 /es/logs/es7/cluster-es.log
##检查端口 9200对外提供http服务的端口 9300对内提供tcp服务的端口
ss -tlunp | egrep "9300|9200"
#验证ES集群节点
curl 192.168.77.176:9200/_cat/nodes
#查看ES环境的堆(heap)内存大小 MaxHeapSize= 1073741824 (1024.0MB) 默认1GB
jps
jmap -heap 67464 | grep MaxHeapSize
#修改ES环境的堆(heap)内存大小
cat >>/es/softwares/es7/elasticsearch-7.17.5/config/jvm.options<<'EOF'
-Xms512m
-Xmx512m
EOF
#重启
systemctl restart es7
#验证ES环境的堆(heap)内存大小
jps
jmap -heap 67775 | grep MaxHeapSize