ELK集群搭建(基础教程)

ELK集群搭建(基础教程)

目录:

服务器准备

集群内各台服务器安装Elasticsearch

安装部署Kafka(注:每个节点都配置,注意ip不同)

安装logstash工具

安装filebeat

ELK收集Nginx的json日志

ELK收集Nginx正常日志和错误日志

ELK收集Tomcat日志

ELK收集docker日志

配置filebeat收集单个docker日志

modules日志收集

使用redis作为缓存收集日志

使用Kafka做缓存收集日志

服务器准备

172.20.26.204   node01

172.20.26.207   node02

172.20.26.208   node03

操作系统版本:CentOS Linux release 7.9.2009 (Core)

#各台服务器安装基础工具软件,系统更新

yum install vim net-tools epel-release wget -y

yum update

#修改每台服务器的hostname

hostnamectl set-hostname node01    #172.20.26.204

hostnamectl set-hostname node02    #172.20.26.207

hostnamectl set-hostname node03    #172.20.26.208

分别在 172.20.26.204、172.20.26.207、172.20.26.208服务器上配置域名映射

[root@node01 ~]# vim /etc/hosts

[root@node02 ~]# vim /etc/hosts

[root@node03 ~]# vim /etc/hosts

172.20.26.204 node01 

172.20.26.207 node02 

172.20.26.208 node03

关闭selinux、firewalld防火墙

[root@bogon ~]# vim /etc/selinux/config

[root@bogon ~]# systemctl stop firewalld

[root@bogon ~]# systemctl disable firewalld

一、集群内各台机器安装Elasticsearch

1、下载Elasticsearch的安装包

官方地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

2、Elasticsearch安装(每台机器都执行)

#下载安装包存放在/data/software/目录

[root@node01 /]# mkdir -p /data/software && cd /data/software #创建并进入/data/software

[root@node02 /]# mkdir -p /data/software && cd /data/software #创建并进入/data/software

[root@node03 /]# mkdir -p /data/software && cd /data/software #创建并进入/data/software

wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-x86_64.rpm

linux开发java环境可能和elasticsearch java环境冲突,因为 elasticsearch 需要JDK才可以 ,所需需要指定elasticsearch的java环境,给它配置一个特定的java环境运行,下载JDK,然后解压即可。

Elasticsearch 和 JVM 兼容性版本查询地址如下:

https://www.elastic.co/cn/support/matrix#matrix_jvm

版本选择推荐及总结

1、ES 7.x 及之前版本,选择 Java 8

2、ES 8.x 及之后版本,选择 Java 17 或者 Java 18,建议 Java 17,因为对应版本的 Logstash 不支持 Java 18

3、Java 9、Java 10、Java 12 和 Java 13 均为短期版本,不推荐使用

4、M1(Arm) 系列 Mac 用户建议选择 ES 7.8.x 以上版本,因为考虑到 ELK 不同产品自身兼容性,7.8.x以上版本原生支持 Arm 原生 JDK

wget -c https://download.oracle.com/java/17/latest/jdk-17_linux-aarch64_bin.tar.gz

tar -zxf jdk-17_linux-aarch64_bin.tar.gz   #各服务器均需安装jdk

下载后可以拷贝到其他服务器的/data/software目录下

#安装

[root@node01 software]# rpm -ivh elasticsearch-8.9.0-x86_64.rpm

[root@node02 software]# rpm -ivh elasticsearch-8.9.0-x86_64.rpm

[root@node03 software]# rpm -ivh elasticsearch-8.9.0-x86_64.rpm

警告:elasticsearch-8.9.0-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY

准备中...                          ################################# [100%]

Creating elasticsearch group... OK

Creating elasticsearch user... OK

正在升级/安装...

   1:elasticsearch-0:8.9.0-1          ################################# [100%]

--------------------------- Security autoconfiguration information ------------------------------

Authentication and authorization are enabled.

TLS for the transport and HTTP layers is enabled and configured.

The generated password for the elastic built-in superuser is : 9gVL6ve8ARLwwJibai8Z

If this node should join an existing cluster, you can reconfigure this with

'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>'

after creating an enrollment token on your existing cluster.

You can complete the following actions at any time:

Reset the password of the elastic built-in superuser with

'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.

Generate an enrollment token for Kibana instances with

 '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.

Generate an enrollment token for Elasticsearch nodes with

'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.

-------------------------------------------------------------------------------------------------

### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd

 sudo systemctl daemon-reload

 sudo systemctl enable elasticsearch.service

### You can start elasticsearch service by executing

 sudo systemctl start elasticsearch.service

172.20.26.204服务器上的elasticsearch安装完成。其他节点同样操作即可

HOME: /usr/share/elasticsearch

配置:/etc/elasticsearch

日志:/var/log/elasticsearch/

数据:/data/elasticsearch

配置2:/etc/sysconfig/elasticsearch

#查看elasticsearch配置文件目录

[root@node01 software]# rpm -qc elasticsearch

/etc/elasticsearch/elasticsearch-plugins.example.yml

/etc/elasticsearch/elasticsearch.yml

/etc/elasticsearch/jvm.options

/etc/elasticsearch/log4j2.properties

/etc/elasticsearch/role_mapping.yml

/etc/elasticsearch/roles.yml

/etc/elasticsearch/users

/etc/elasticsearch/users_roles

/etc/sysconfig/elasticsearch

/usr/lib/sysctl.d/elasticsearch.conf

/usr/lib/systemd/system/elasticsearch.service

#修改 elasticsearch 下的bin/elasticsearch(各服务器均需操作

#在首行添加

#配置自己的jdk17

vim /usr/share/elasticsearch/bin/elasticsearch

export JAVA_HOME=/data/software/jdk-17.0.8

export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断

if [ -x "$JAVA_HOME/bin/java" ]; then

        JAVA="/data/software/jdk-17.0.8 /bin/java"

else

为后面es集群设置,每个节点操作如下:

#编辑elasticsearch.yml配置文件

vim /etc/elasticsearch/elasticsearch.yml

grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml

cluster.name: es_cluster     #集群名称,各节点要一致

node.name: node01            #节点名称,同一个集群内所有节点的节点名称不能重复     

path.data: /data/elasticsearch      #将es的数据存在该目录,注意创建该目录

path.logs: /var/log/elasticsearch  #日志目录,会创建以集群名称的一个日志目录   eg:es-app.log

bootstrap.memory_lock: true                                          #内存锁定

network.host: 0.0.0.0                                          #绑定监听地址

http.port: 9200                                                           #默认端口号

discovery.seed_hosts: ["172.20.26.204", "172.20.26.207","172.20.26.208"]

cluster.initial_master_nodes: ["node01","node02","node03"]

xpack.security.enabled: false

xpack.security.enrollment.enabled: true

xpack.security.http.ssl:

xpack.security.transport.ssl:

http.host: 0.0.0.0

transport.host: 0.0.0.0

 

vim /etc/systemd/system.conf  #每个节点操作一遍

DefaultLimitNOFILE=65536

DefaultLimitNPROC=32000

DefaultLimitMEMLOCK=infinity

保存, 重启系统

#创建es数据存储目录

[root@node01 software]# mkdir -p /data/elasticsearch

[root@node02 software]# mkdir -p /data/elasticsearch

[root@node03 software]# mkdir -p /data/elasticsearch

# 创建证书目录

[root@node01 software]#mkdir -p /etc/elasticsearch/certs

[root@node01 bin]# vim /etc/elasticsearch/jvm.options

#去掉以下注释并顶格,各个节点均需操作

-Xms2g  #默认是4g,可以根据自己情况适当调整大小,例如,1g、2g

-Xmx2g  #默认是4g,可以根据自己情况适当调整大小,例如,1g、2g

#es因为安全问题拒绝使用root用户启动(各节点均需操作

解决方法:

1.添加用户组es、创建用户es并设置密码

groupadd es

useradd es -g es -p 1qaz2wsx    # -g 指定组 -p 设置密码为1qaz2wsx

2.添加目录拥有权限

更改 elasticsearch文件夹及内部文件的所属用户及组为es,如果是编译安装或者是二进制安装的话,可能只有一个目录。

[root@node01 ~]# find / -name elasticsearch

/etc/sysconfig/elasticsearch

/etc/elasticsearch

/var/lib/elasticsearch

/var/log/elasticsearch

/usr/share/elasticsearch

/usr/share/elasticsearch/bin/elasticsearch

/data/elasticsearch

# -R 处理指定目录以及其子目录下的所有文件权限赋予es用户及es组

chown es:es -R /etc/sysconfig/elasticsearch /etc/elasticsearch /var/lib/elasticsearch /var/log/elasticsearch /usr/share/elasticsearch /data/elasticsearch

解决Elasticsearch集群开启账户密码安全配置自相矛盾的坑

  1. 生成CA证书

在第一台服务器节点 node01 设置集群多节点通信密钥,使用 elasticsearch-certutil 工具为您的集群生成 CA。

[root@node01 ~]# cd /usr/share/elasticsearch/bin/

[root@node01 bin]# ./elasticsearch-certutil ca

a.出现提示时,接受默认文件名,即 elastic-stack-ca.p12。此文件包含 CA 的公共证书和用于为每个节点签署证书的私钥。

b.输入 CA 的密码。如果不部署到生产环境,您可以选择将密码留空,这里输入的密码为1qaz2wsx

2、配置CA证书

用 ca 证书签发节点证书,为集群中的节点生成证书和私钥。包括在上一步中生成的 elastic-stack-ca.p12 输出文件。

[root@node01 bin]# ./elasticsearch-certutil cert --ca elastic-stack-ca.p12

根据提示

a.输入您的 CA 的密码,请按 Enter。

b.为证书创建密码并接受默认文件名。创建的密码为1qaz2wsx

输出文件是一个名为 elastic-certificates.p12 的密钥库。此文件包含节点证书、节点密钥和 CA 证书。

将生成的证书文件移动到证书目录中(/etc/elasticsearch/certs)

[root@node01 bin]# mv /usr/share/elasticsearch/elastic-certificates.p12 /etc/elasticsearch/certs/

3、复制证书到集群

在集群中的每个节点上,将 elastic-certificates.p12 文件复制到 证书目录中/etc/elasticsearch/certs

[root@node01 certs]# scp elastic-certificates.p12 root@172.20.26.207:/etc/elasticsearch/certs/

[root@node01 certs]# scp elastic-certificates.p12 root@172.20.26.208:/etc/elasticsearch/certs/

[root@node01 certs]# chown es:es -R /etc/elasticsearch  #各个节点再次给/etc/elasticsearch 赋权给es用户和组

4、修改配置文件(需要注意的是:格式一定要对齐,否则会报错)

vim /etc/elasticsearch/elasticsearch.yml    #各个节点打开配置文件进行修改

a.基本集群配置,不启用安全也需要的配置

cluster.name: es_cluster  #每个节点一致

node.name: node01  #每个节点不同

b.安全配置

由于在群集的每个节点上使用相同的Elastic-Certificate.p12文件,因此将验证模式设置为证书:

xpack.security.transport.ssl.enabled: true

xpack.security.transport.ssl.verification_mode: certificate

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lqcbj_IT老混混

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值