收集云服务器优惠信息
记录云服务器使用心得

RHEL系统安装Elasticsearch、Logstash和Kibana(ELK堆栈)详细教程

如果你现在或曾经负责检查和分析Linux中的系统日志,一般会知道如果同时监控多个服务,这项任务会变成一场噩梦。因为在过去,该任务大部分必须手动完成,每种日志类型都单独处理。

不过现在比较幸运的是,服务器端的Elasticsearch、Logstash和Kibana以及客户端的Filebeat相结合,使得这项曾经困难的任务如今看起来变得非常简单。前三个组件构成了所谓的ELK Stack(ELK 堆栈),其主要目的是同时从多个服务器收集日志(也称为集中式日志记录)。

一个内置的基于Java的Web界面使你能够快速浏览日志,以便更容易进行比较和故障排除。这些客户端日志由Filebeat发送到一个中央服务器,Filebeat可以被描述为一个日志传输代理。

测试环境配置

让我们看看所有这些部分是如何组合在一起,这里的测试环境将由以下机器组成:

中央服务器:RHEL系统,IP地址192.168.100.247
客户端计算机1:Fedora系统,IP地址192.168.100.133
客户端计算机2:Debian系统, IP地址192.168.0.134

请注意,ELK Stack(Elasticsearch、Logstash和Kibana)的RAM要求可能会根据数据量、查询复杂性和环境大小等因素而有所不同。

在RHEL上安装ELK Stack

我们首先在中央服务器(即RHEL 9系统)上安装ELK堆栈,相同的安装步骤也适用于基于RHEL发行版,例如Rocky Linux和​​Alma Linux。

这里简要解释一下每个组件的作用:

  • Elasticsearch存储客户端发送的日志。
  • Logstash处理这些日志。
  • Kibana提供了Web界面,可以帮助我们检查和分析日志。

在中央服务器上安装以下软件包。首先,我们将安装Java JDK版本21(撰写本文时为最新版本),它是ELK组件的依赖项。当然,你也可以访问Java下载页面,看看是否有可用的更新版本。

yum update
cd /opt
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm
rpm -Uvh jdk-21_linux-x64_bin.rpm

是时候检查安装是否成功完成了:

java -version


java version "21.0.2" 2024-03-6 LTS
Java(TM) SE Runtime Environment (build 21.0.2+13-LTS-58)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.2+13-LTS-58, mixed mode, sharing)

另外,要安装最新版本的Elasticsearch、Logstash和Kibana,必须手动创建存储库,具体安装步骤如下所述。

在RHEL中安装Elasticsearch

将Elasticsearch公共GPG密钥导入rpm包管理器,命令如下:

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

接下来将以下行插入存储库配置文件elasticsearch.repo当中:

具体目录为:/etc/yum.repos.d/elasticsearch.repo

[elasticsearch]
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=0
autorefresh=1
type=rpm-md

安装Elasticsearch包,命令如下:

yum install --enablerepo=elasticsearch elasticsearch

安装完成后,会提示启动并启用elasticsearch,如下图所示:

在Linux中安装Elasticsearch

启动并启用该服务,命令如下:

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

记得允许流量通过防火墙中的TCP端口9200:

firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent

现在使用curl命令检查Elasticsearch是否响应通过HTTP的简单请求:

curl -X GET http://localhost:9200

上述命令的输出应类似于:

验证Elasticsearch安装

确保完成上述步骤之后,然后继续Logstash。由于Logstash和Kibana共享Elasticsearch GPG密钥,因此无需在安装软件包之前重新导入它。

在RHEL中安装Logstash

将以下行插入存储库配置文件/etc/yum.repos.d/logstash.repo当中:

[logstash-8.x]
name=Elastic 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

安装Logstash包,命令如下:

yum install logstash

/etc/pki/tls/openssl.cnf 配置文件中的 [ v3_ca ] 部分下面的以下行添加一个基于ELK服务器IP地址的SSL证书:

[ v3_ca ]
subjectAltName = IP: 192.168.100.247

生成365天有效的自签名证书:

# cd /etc/pki/tls
# openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

配置Logstash输入、输出和过滤器文件。

输入:创建 /etc/logstash/conf.d/input.conf 文件,并将以下行插入其中。这对于Logstash“学习”如何处理来自客户端的beats是必要的。确保证书和密钥的路径与前面步骤中概述的路径匹配:

input {
  beats {
	port => 5044
	ssl => true
	ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
	ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

输出:/etc/logstash/conf.d/output.conf配置文件中插入以下行:

output {
  elasticsearch {
	hosts => ["localhost:9200"]
	sniffing => true
	manage_template => false
	index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
	document_type => "%{[@metadata][type]}"
  }
}

过滤: /etc/logstash/conf.d/filter.conf) 配置文件插入以下行。为了简单起见,我们将记录系统日志消息:

filter {
if [type] == "syslog" {
	grok {
  	match => { "message" => "%{SYSLOGLINE}" }
	}

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

启动并启用logstash,命令如下:

systemctl daemon-reload
systemctl start logstash
systemctl enable logstash

最后配置防火墙以允许Logstash从客户端获取日志(TCP端口5044):

firewall-cmd --add-port=5044/tcp
firewall-cmd --add-port=5044/tcp --permanent
在RHEL中安装Kibana

将以下行插入存储库配置文件/etc/yum.repos.d/kibana.repo当中:

[kibana-8.x]
name=Kibana 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

然后安装Kibana包,命令如下:

yum install kibana

启动并启用Kibana,命令如下:

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana

确保你可以从另一台计算机访问Kibana的Web界面(允许TCP端口5601上的流量):

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

启动Kibana以验证你是否可以访问Web界面:

http://localhost:5601
或者
http://IP.com:5601

Kibana仪表板

在客户端机器上安装Filebeat

接下来将介绍如何对客户端1执行此操作(随后对客户端2重复此操作,请自行更改路径以便适用于你的发行版系统)。

使用scp命令将SSL证书从服务器复制到客户端:

scp /etc/pki/tls/certs/logstash-forwarder.crt root@192.168.100.133:/etc/pki/tls/certs/

将Elasticsearch公共GPG密钥导入到客户端计算机上的rpm包管理器:

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

在基于RHEL的发行版中为Filebeat ( /etc/yum.repos.d/filebeat.repo)创建存储库 :

[elastic-8.x]
name=Elastic 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

配置源以在基于Debian的发行版上安装Filebeat :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

安装Filebeat包,命令如下:

yum install filebeat [在RHEL和基于其的发行版上] 
apt install filebeat [在Debian及其衍生版本上]

启动并启用Filebeat:

systemctl start filebeat
systemctl enable filebeat

配置Filebeat

这里需要注意的是,Filebeat配置存储在YAML文件中,需要严格缩进。在编辑/etc/filebeat/filebeat.yml时,请注意以下几点:

  • 在paths下,指示哪些日志文件应“传送”到ELK服务器。
  • 在prospectors下:
input_type: log
document_type: syslog
  • 在output下:
    • 取消注释以logstash开头的行。
    • 指示你的ELK服务器的IP地址以及Logstash在主机中侦听的端口。
    • 确保证书的路径指向你在上面的步骤中(Logstash部分)中创建的实际文件。

上述步骤如下图所示:

在客户端服务器中配置Filebeat

保存更改,然后在客户端上重新启动Filebeat :

systemctl restart filebeat

一旦我们在客户端上完成了上述步骤,进行执行下面的步骤。

测试Filebeat

为了验证客户端的日志是否能够成功发送和接收,在ELK服务器上运行以下命令:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

输出应类似于下面这样(注意来自客户端1和客户端2的/var/log/messages和/var/log/secure的消息正在被接收):

测试Filebeat

否则,请检查Filebeat配置文件是否有错误。

# journalctl -xe

尝试重新启动Filebeat 后,会将你指向有问题的行。

测试Kibana

在我们验证日志由客户端发送并在服务器上成功接收后。现在在Kibana中要做的第一件事是配置索引模式并将其设置为默认值。你可以将索引描述为关系数据库上下文中的完整数据库。我们将使用filebeat-*(或者你可以使用官方文档中解释的更精确的搜索条件)。

在“Index name or pattern”字段中输入filebeat-*,然后点击创建:

测试Kibana

请注意,稍后你将被允许输入更精细的搜索条件。接下来,点击绿色矩形内部的星星图标,将其配置为默认的索引模式:

配置默认Kibana索引模式

最后,在“Discover”菜单中,你将找到几个要添加到日志可视化报告中的字段。只需将鼠标悬停在它们上方并单击“Add”即可:

添加日志可视化报告

结果将显示在屏幕的中央区域,如上所示。请随意尝试(在日志报告中添加和删除字段)以熟悉Kibana。默认情况下,Kibana将显示过去15分钟内处理的记录(参见右上角),但你可以通过选择另一个时间范围来更改该行为:

Kibana日志报告

概括

在本文中,小编简单解释了如何设置ELK堆栈来收集两个客户端(Fedora和Debian机器)发送的系统日志。现在你可以参考官方Elasticsearch文档,并找到有关如何使用此设置更有效地检查和分析日志的更多详细信息。

赞(0)
网站声明:本文内容由趣云笔记原创,部分资源收集于网络,如有侵权请联系企鹅:2472781824删除。
文章名称:《RHEL系统安装Elasticsearch、Logstash和Kibana(ELK堆栈)详细教程》
文章链接:https://www.ecscoupon.com/4564.html
本站资源仅供个人学习交流,未经允许不得转载,更不允许用于商业用途。如需转载,请注明来源,感谢理解!