更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在RHEL 8/CentOS 8上安装Elastic Stack 8(ELK 8)的方法

在RHEL 8/CentOS 8上安装Elastic Stack 8(ELK 8)的方法

更新时间:2023-02-01 09:50:51浏览次数:444+次

本文介绍如何在RHEL 8/CentOS Stream 8系统上安装Elastic Stack 8(ELK 8)的方法。

简介

ELK堆栈由3个主要的开源组件组成:Elasticsearch、Logstash和Kibana协同工作,允许用户收集、分析和可视化日志。ELK堆栈中每个组件的作用解释如下:

Elasticsearch–这是Elastic软件的核心。Elasticsearch是一个搜索和分析引擎。在ELK堆栈中,它用于存储来自Logstash的传入日志,并提供实时搜索日志的功能

Logstash–此包收集数据,同时转换来自多个源的日志并将其发送到存储。

Kibana–Kibana是可视化数据的图形工具。它用于生成图表和图形,以了解数据库中的原始数据。

ELK堆栈可与Beats一起用于日志收集。Beats可以定义为轻量级数据托运人,允许多个数据源/索引,并将其发送到Logstash或Elasticsearch。包括:

Metricbeat–它从系统和服务中收集指标,包括CPU、内存使用和负载,以及网络数据和过程数据中的其他数据统计,然后直接发送到Logstash或Elasticsearch。

Auditbeat–用于收集Linux审计框架数据并监控文件完整性,然后直接发送到Logstash或Elasticsearch。

Filebeat–它的目的是转发和文件,通常采用.log集中日志或.json格式。

Heartbeat–用于主动探测以确定服务是否可用。

Packetbeat–它支持应用程序和较低级别协议、数据库和密钥值存储的网络协议集合,包括HTTP、DNS、Flows、DHCPv4、MySQL和TLS。它有助于识别可疑的网络活动。

Winlogbeat–用于管理Windows事件日志。

具体操作步骤如下

1、在RHEL 8/CentOS Stream 8上安装Java

Elasticsearch需要在系统上安装Java 8、11。如果已经安装了Java,则可以跳过此步骤。否则,使用以下命令安装Java 8:

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

安装后,验证Java版本:

$ java -version

openjdk version "11.0.15"

OpenJDK Runtime Environment 18.9 (build 11.0.15+9-LTS)

OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+9-LTS, mixed mode, sharing)

2、在RHEL 8/CentOS Stream 8上添加Elastic Stack 8.x存储库

Elastic Stack 8和Beats可以从Elastic stack 8.x官方存储库下载,可以使用以下命令将其添加到系统中:

首先,导入存储库的GPG密钥签名:

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

现在,在RHEL 8/CentOS Stream 8上添加Elastic Stack 8.x存储库:

cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-8.x]

name=Elasticsearch repository for 8.x packages

baseurl=https://artifacts.elastic.co/packages/8.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

EOF

添加后,更新YUM包索引:

sudo yum clean all

sudo yum makecache

3、在RHEL 8/CentOS 8上安装和配置Elasticsearch 8

我们将使用以下命令从添加的存储库安装最新版本的Elasticsearch:

sudo yum install elasticsearch

通过编辑以下YAML文件来配置Elasticsearch:

sudo vi /etc/elasticsearch/elasticsearch.yml

在文件中,进行以下调整:

# Path to directory where to store the data (separate multiple locations by comma):

#

path.data: /var/lib/elasticsearch

#

# Path to log files:

#

path.logs: /var/log/elasticsearch

#

# ---------------------------------- Network -----------------------------------

#

# Set the bind address to a specific IP (IPv4 or IPv6):

#

network.host: 0.0.0.0

. . .

# ----------------------------------

# Enable security features

xpack.security.enabled: false

xpack.security.enrollment.enabled: false

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents

xpack.security.http.ssl:

  enabled: false

  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes

xpack.security.transport.ssl:

  enabled: false

如果您为Elasticsearch设置了自定义数据路径,则需要禁用SELinux或将其设置为许可模式,以便访问该路径:

sudo setenforce 0

通过设置内存限制来配置JVM选项:

$ sudo vi /etc/elasticsearch/jvm.options

-Xms1g

-Xmx1g

如果系统内存不足,请将其配置为使用最少的内存:

-Xms256m

-Xmx512m

使用以下命令启动并启用Elasticsearch 8:

sudo systemctl start elasticsearch

sudo systemctl enable elasticsearch

验证Elasticsearch是否响应查询:

$ curl -X GET localhost:9200

{

  "name" : "localhost.localdomain",

  "cluster_name" : "elasticsearch",

  "cluster_uuid" : "_yNoaSr4SeShhkRNDkDC6A",

  "version" : {

    "number" : "8.1.0",

    "build_flavor" : "default",

    "build_type" : "rpm",

    "build_hash" : "3700f7679f7d95e36da0b43762189bab189bc53a",

    "build_date" : "2023-01-30T14:20:00.690422633Z",

    "build_snapshot" : false,

    "lucene_version" : "9.0.0",

    "minimum_wire_compatibility_version" : "7.17.0",

    "minimum_index_compatibility_version" : "7.0.0"

  },

  "tagline" : "You Know, for Search"

}

4、在RHEL 8/CentOS Stream 8上安装和配置Logstash

使用以下命令在RHEL 8/CentOS Stream 8上安装Logstash:

sudo yum -y install logstash

安装后,您需要通过在/etc/logstash/conf.d/处创建配置来配置Logstash。该文件将包含3个部分,即输入、过滤器和输出。所有这三个部分可以存在于一个或三个不同的文件中:

sudo vi /etc/logstash/conf.d/beats.conf

在本文中,我们将在一个文件中包含以下三个部分:

input {

  beats {

    port => 5044

  }

}

filter {

  if [type] == "syslog" {

     grok {

        match => { "message" => "%{SYSLOGLINE}" }

  }

     date {

        match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]

     }

  }

}

output {

  elasticsearch {

    hosts => ["192.168.205.8:9200"]

    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"

  }

}

启动并启用Logstash:

sudo systemctl start logstash

sudo systemctl enable logstash

5、在RHEL 8/CentOS 8上安装和配置Kibana

现在我们要在ELK堆栈中安装可视化工具Kibana。使用以下命令安装Kibana:

sudo yum -y install kibana

安装后,配置Kibana:

sudo vi /etc/kibana/kibana.yml

在打开的文件中,进行以下调整:

#第11行:取消注释和更改(全部侦听)

server.host: "0.0.0.0"

#第32行:取消注释和更改(指定自己的主机名)

server.name: "node1"

#第43行:取消注释并根据需要进行更改

#设置弹性搜索和Kibana是否在不同的主机上运行

elasticsearch.hosts: ["http://192.168.205.8:9200"]

启动并启用Kibana:

sudo systemctl enable --now kibana

允许端口5601和5044通过防火墙:

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

sudo firewall-cmd --add-port=5044/tcp --permanent

sudo firewall-cmd --reload

6、在RHEL 8/CentOS 8上安装和配置Filebeat

此时,Kibana仪表板在端口5601上可用。我们希望安装和配置Filebeat以帮助收集日志并将其发送到Logstash,后者将其转换为Elasticsearch易于理解的格式。Filebeat可以安装在要从中收集日志的同一台或客户端计算机上。

使用以下命令在RHEL 8/CentOS Stream 8上安装Filebeat:

sudo dnf -y install filebeat

安装后,继续并将其配置为将日志发送到Logstash,如下所示:

sudo vi /etc/filebeat/filebeat.yml

在打开的文件中,进行以下配置:

#-------------------------- Elasticsearch output ------------------------------

#output.elasticsearch:

  # Array of hosts to connect to.

  #hosts: ["localhost:9200"]

.....

#----------------------------- Logstash output --------------------------------

output.logstash:

  # The Logstash hosts

  hosts: ["192.168.205.8:5044"]

....

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so

# you can use different inputs for various configurations.

# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.

  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.

  paths:

    - /var/log/messages

    #- c:\programdata\elasticsearch\logs\*

启动并启用Filebeat:

sudo systemctl enable --now filebeat

7、访问Kibana Web界面

可以使用URL访问Kibana web界面,地址格式为http://IP_Address:5601,如下图:

\

现在,在客户机上启用Filebeat模块。首先列出模块:

$ sudo filebeat modules list

Enabled:

Disabled:

activemq

apache

auditd

aws

awsfargate

azure

barracuda

bluecoat

cef

checkpoint

cisco

coredns

....

现在启用所需的模块。日志存储如下:

$ sudo filebeat modules enable logstash

Enabled logstash

启用后,将索引模板加载到Elasticsearch,将仪表板加载到Kibana,如下所示:

$ sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['192.168.205.8:9200'] -E setup.kibana.host=192.168.205.8:5601

Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.

Index setup finished.

Loading dashboards (Kibana must be running and reachable)

Loaded dashboards

Loaded Ingest pipelines

现在,在discover下的Kibana界面上,您将获得如下所示的Filebeat:

\

您还可以使用所需的图表/图形来可视化数据:

\

至此,在RHEL 8/CentOS Stream 8上的Elastic Stack 8(ELK 8)设置全部完成。现在,我们可以收集日志并将其发送到Logstash或Elasticsearch了。