在RHEL 8/CentOS 8上安装Elastic Stack 8(ELK 8)的方法
本文介绍如何在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了。