如何在 RHEL 8 / CentOS 8 上安装 ELK Stack_elasticsearch

ELK”是三个开源项目的首字母缩写:Elasticsearch、Logstash 和 Kibana。以下是堆栈中每个工具的简短说明。

  • Elasticsearch:这是一个开源的、分布式的、基于 RESTful 的基于 JSON 的搜索引擎。它具有可扩展性、易于使用且灵活
  • Logstash :这是一个服务器端数据处理管道,它同时从多个来源提取数据,对其进行转换,然后将其发送到像 Elasticsearch 这样的“存储”。
  • Kibana 允许用户在 Elasticsearch 中使用图表和图形可视化数据。

第 1 步:在 RHEL 8 / CentOS 8 上安装 Java

由于 Elasticsearch 依赖于 Java,因此您需要先在系统上安装它,然后才能在 RHEL 8 上安装 Elasticsearch 6 或 5。

安装 OpenJDK 11

OpenJDK 是 Java 平台标准版的免费开源实现,根据 GNU 通用公共许可证第 2 版获得许可。

sudo yum -y install java-11-openjdk java-11-openjdk-devel

安装 OpenJDK 11 后,通过检查版本来确认它正常工作。

$ java -version
openjdk version "11.0.18-ea" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS, mixed mode, sharing)


$ which java
/usr/bin/java

设置 Java 环境变量

sudo tee /etc/profile.d/java11.sh <<EOF
export JAVA_HOME=\$(dirname \$(dirname \$(readlink \$(readlink \$(which javac)))))
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
EOF

获取文件以在不注销的情况下开始使用它。

source /etc/profile.d/java11.sh

安装 Java SE 开发工具包 11 (JDK 11)

下载最新版本的 JDK 11。

file jdk-11.0.20_linux-x64_bin.rpm

然后使用命令安装软件包rpm

$ sudo rpm -Uvh jdk-11.*_linux-x64_bin.rpm
warning: jdk-11.0.20_linux-x64_bin.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk-*-ga         ################################# [100%]

确认已安装 Java 版本

$ java -version
java version "11.0.15.1" 2022-04-22 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.15.1+2-LTS-10)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.15.1+2-LTS-10, mixed mode)

测试 Java 安装

编写要测试的 Hello World Java 代码。

cat > hello_world.java <<EOF
public class helloworld {
  public static void main(String[] args) {
    System.out.println("Hello Java World!");
  }
}
EOF

运行代码。

$ java hello_world.java
Hello Java World!

选择带有替代方案的 Java 版本

如果安装了其他版本的 JDK,请按如下方式设置默认 Java。

sudo alternatives --list
sudo alternatives --config java

选择要用作默认的 Java 版本。

如何在 RHEL 8 / CentOS 8 上安装 ELK Stack_elasticsearch_02

这会将系统 java 二进制文件切换到选定的 Java。也对 javac 做同样的事情,因为并且是独立管理的。javajavac

sudo alternatives --config javac

第 2 步:将 ELK 存储库添加到 RHEL 8/CentOS 8

安装 Java 后,将 ELK 堆栈存储库添加到 RHEL 8。请以 root 用户身份运行以下命令:

对于 Elasticsearch 7.x

cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

对于 Elasticsearch 6.x。

cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

对于 Elasticsearch 5.x。

cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

添加 repo 后,导入 GPG 密钥:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

清除并更新 YUM 包索引。

sudo yum clean all
sudo yum makecache

第 3 步:安装和配置 Elasticsearch

Elasticsearch 存储库已准备就绪,可供使用。您可以使用以下命令安装 Elasticsearch:

sudo yum -y install elasticsearch

确认软件包安装。

$ rpm -qi elasticsearch 
 Name        : elasticsearch
 Epoch       : 0
 Version     : 6.5.4
 Release     : 1
 Architecture: noarch
 Install Date: Wed 02 Jan 2019 02:12:22 PM EAT
 Group       : Application/Internet
 Size        : 167695796
 License     : Elastic License
 Signature   : RSA/SHA512, Tue 18 Dec 2018 01:18:33 AM EAT, Key ID d27d666cd88e42b4
 Source RPM  : elasticsearch-6.5.4-1-src.rpm
 Build Date  : Tue 18 Dec 2018 12:21:58 AM EAT
 Build Host  : packer-virtualbox-iso-1542822913
 Relocations : /usr 
 Packager    : Elasticsearch
 Vendor      : Elasticsearch
 URL         : https://www.elastic.co/
 Summary     : Elasticsearch is a distributed RESTful search engine built for the cloud. Reference documentation can be found at https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html and the 'Elasticsearch: The Definitive Guide' book can be found at https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
 Description :
 Elasticsearch subproject :distribution:packages

您可以通过编辑文件来设置 JVM 选项,例如内存限制:/etc/elasticsearch/jvm.options

以下示例设置总堆空间的初始/最大大小

-Xms1g
-Xmx1g

如果您的系统内存较少,您可以将其配置为使用小兆字节的 RAM。

-Xms256m
-Xmx512m

启动并启用 elasticsearch 服务:

$ sudo systemctl enable --now elasticsearch.service 
 Synchronizing state of elasticsearch.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
 Executing: /usr/lib/systemd/systemd-sysv-install enable elasticsearch
 Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.

测试以验证它是否正常工作:

$ curl http://127.0.0.1:9200 
 {
   "name" : "bBzN5Kg",
   "cluster_name" : "elasticsearch",
   "cluster_uuid" : "LKyqXXSvRvCpX9QAwKlP2Q",
   "version" : {
     "number" : "6.5.4",
     "build_flavor" : "default",
     "build_type" : "rpm",
     "build_hash" : "d2ef93d",
     "build_date" : "2018-12-17T21:17:40.758843Z",
     "build_snapshot" : false,
     "lucene_version" : "7.5.0",
     "minimum_wire_compatibility_version" : "5.6.0",
     "minimum_index_compatibility_version" : "5.0.0"
   },
   "tagline" : "You Know, for Search"
 }

创建测试索引:

$ curl -X PUT "http://127.0.0.1:9200/mytest_index"
{"acknowledged":true,"shards_acknowledged":true,"index":"mytest_index"}

第 4 步:安装和配置 Kibana

从添加的 Elasticsearch 存储库下载并安装 Kibana。

sudo yum -y install kibana

安装成功后,配置 Kibana:

$ sudo vim /etc/kibana/kibana.yml
 server.host: "0.0.0.0"
 server.name: "kibana.example.com"
 elasticsearch.url: "http://localhost:9200"

根据需要更改其他设置,然后启动 kibana 服务:

sudo systemctl enable --now kibana

打开 Kibana Dashboard 的访问 http://ip-address:5601

如何在 RHEL 8 / CentOS 8 上安装 ELK Stack_kibana_03

如果您有活动的防火墙服务,请允许 TCP 端口5601

sudo firewall-cmd --add-port=5601/tcp --permanent
sudo firewall-cmd --reload

第 5 步:安装和配置 Logstash

最后一个安装是针对 Logstash 的。它将充当客户端系统的集中式日志服务器,该客户端系统运行像 filebeat 这样的代理。

sudo yum -y install logstash

Logstash 自定义配置可以放在/etc/logstash/conf.d/目录下。 查看 Logstash 配置手册了解更多详情。

第 6 步:安装其他 ELK 工具

其他可以安装的 ELK 工具包括:

  • Filebeat:用于日志的轻量级运输程序。它通过提供一种轻量级的方式来转发和集中日志和文件,帮助您使简单的事情变得简单
  • Metricbeat:从您的系统和服务中收集指标。从 CPU 到内存,从 Redis 到 NGINX 等等,Metricbeat 是一种发送系统和服务统计数据的轻量级方式。
  • Packetbeat:用于网络数据的轻量级传输器
  • Heartbeat:用于正常运行时间监控的轻量级运输箱。它可以帮助您通过主动探测来监视服务的可用性
  • Auditbeat:轻量级运输程序,可帮助您审核系统上用户和进程的活动

这些工具可以使用各自的名称与 包管理器一起安装。下面的示例将安装所有 ELK 插件工具。yum

sudo yum install filebeat auditbeat metricbeat packetbeat heartbeat-elastic