如何在 CentOS 8 上安装 Elastic Stack(Elasticsearch、Logstash 和 Kibana)
本教程适用于这些操作系统版本
- 中央操作系统 8
- 中央操作系统 7
在此页
- 第 1 步 - 添加弹性存储库
- 第 2 步 - 安装和配置 Elasticsearch
- 第 3 步 - 安装和配置 Kibana 仪表板
- 第 4 步 - 将 Nginx 设置为 Kibana 的反向代理
- 第 5 步 - 安装和配置 Logstash
- 第 6 步 - 在客户端上安装 Filebeat
- - 在 CentOS 8 上安装 Filebeat
- - 在 Ubuntu 18.04 上安装 Filebeat
- - 配置 Filebeat
Elasticsearch 是一个基于 Lucene 的开源搜索引擎,用 Java 开发。它通过 HTTP 仪表板 Web 界面 (Kibana) 提供分布式和多租户全文搜索引擎。使用 JSON 文档方案查询、检索和存储数据。 Elasticsearch 是一个可扩展的搜索引擎,可用于搜索各种文本文档,包括日志文件。 Elasticsearch 是 Elastic Stack 或 ELK Stack 的核心。
Logstash 是一种用于管理事件和日志的开源工具。它为数据收集提供实时流水线。 Logstash 会收集你的日志数据,将数据转换成 JSON 文档,存储在 Elasticsearch 中。
Kibana 是 Elasticsearch 的开源数据可视化工具。 Kibana 提供了一个漂亮的仪表板 Web 界面。它允许您管理和可视化来自 Elasticsearch 的数据。它不仅美观,而且功能强大。
在本教程中,我们将逐步向您展示在 CentOS 8 服务器上安装和配置 Elastic Stack。我们将安装和设置 Elasticsearch、Logstash 和 Kibana。然后在客户端Ubuntu和CentOS系统上设置Beats filebeat。
先决条件
- CentOS 8 64 位,4GB RAM - elk-master
- CentOS 8 64 位,1 GB RAM - client01
- Ubuntu 18.04 64 位,1GB RAM - client02
我们将要做什么:
- 将 Elastic Repository 添加到 CentOS 8 服务器
- 安装和配置 Elasticsearch
- 安装和配置 Kibana 仪表板
- 将 Nginx 设置为 Kibana 的反向代理
- 安装和配置 Logstash
- 安装和配置 Filebeat
- 测试
第 1 步 - 添加弹性存储库
首先,我们要将 Elasticsearch 密钥和存储库添加到 CentOS 8 服务器。借助 elastic.co 提供的 elasticsearch 存储库,我们能够安装 Elastic 产品,包括 Elasticsearch、Logstash、Kibana 和 Beats。
使用以下命令将弹性密钥添加到系统中。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
之后,进入 /etc/yum.repos.d 目录并创建一个新的存储库文件 elasticsearch.repo。
cd /etc/yum.repos.d/
vim elasticsearch.repo粘贴下面的 elasticsearch 存储库。
[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保存并关闭。
现在使用下面的 dnf 命令检查系统上所有可用的存储库。
dnf repolist
并且您将获得已添加到 CentOS 8 服务器的 elasticsearch 存储库。
因此,您可以安装 Elastic 产品,例如 Elasticsearch、Logstash 和 Kibana 等。
第 2 步 - 安装和配置 Elasticsearch
在此步骤中,我们将安装和配置 Elasticsearch。
使用下面的 dnf 命令安装 Elasticsearch 包。
sudo dnf install elasticsearch -y
安装完成后,进入 /etc/elasticsearch 目录,使用 vim 编辑器编辑配置文件 elasticsearch.yml。
cd /etc/elasticsearch/
vim elasticsearch.yml取消注释以下行并更改每行的值,如下所示。
network.host: 127.0.0.1
http.port: 9200保存并关闭。
可选:
您可以通过编辑 JVM 配置文件 jvm.options 来调整 elasticsearch,并根据您拥有的内存量设置堆大小。
使用 vim 编辑器编辑 JVM 配置 jvm.options。
vim jvm.options
通过 Xms 和 Xmx 配置更改最小/最大堆大小,如下所示。
-Xms512m
-Xmx512m保存并关闭。
接下来,重新加载 systemd 管理器配置并将 elasticsearch 服务添加到启动时间。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch然后启动elasticsearch服务。
sudo systemctl start elasticsearch
结果,elasticsearch 在 CentOS 8 服务器上的默认端口 9200 的本地 IP 地址 127.0.0.1 后面启动并运行。
您可以使用下面的 curl 命令检查 elasticsearch。
curl -XGET 'http://127.0.0.1:9200/?pretty'
以下是您将获得的结果。
第 3 步 - 安装和配置 Kibana 仪表板
安装elasticsearch后,我们将在CentOS 8服务器上安装和配置Kibana Dashboard。
使用下面的 dnf 命令安装 Kibana 仪表板。
sudo dnf install kibana
安装完成后,进入/etc/kibana目录,编辑配置文件kibana.yml。
cd /etc/kibana/
vim kibana.yml取消注释并更改一些行配置,如下所示。
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"保存并关闭。
接下来将kibana服务添加到系统引导中,启动kibana服务。
sudo systemctl enable kibana
sudo systemctl start kibanaKibana 服务已经在 CentOS 8 服务器上启动并运行,使用以下命令检查它。
systemctl status kibana
netstat -plntu你会得到如下结果。
因此,Kibana 服务启动并运行默认 TCP 端口 5601。
第 4 步 - 将 Nginx 设置为 Kibana 的反向代理
在此步骤中,我们将安装 Nginx Web 服务器并将其设置为 Kibana 仪表板的反向代理。
使用下面的 dnf 命令安装 Nginx 和 httpd-tools。
sudo dnf install nginx httpd-tools
安装完成后,进入/etc/nginx/conf.d目录,新建配置文件kibana.conf。
cd /etc/nginx/conf.d/
vim kibana.conf粘贴以下配置。
server {
listen 80;
server_name elk.hakase-labs.io;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass http://127.0.0.1:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}保存并关闭。
接下来,我们需要创建用于保护 Kibana 访问的基本身份验证。将 hakase 用户更改为您自己的用户并运行 htpasspwd 命令,如下所示。
sudo htpasswd -c /etc/nginx/.kibana-user hakase
TYPE YOUR PASSWORD输入您的密码并测试 nginx 配置。
nginx -t
确保没有错误。
现在将nginx服务添加到系统引导中,启动nginx服务。
systemctl enable nginx
systemctl start nginx至此,作为Kibana Dashboard反向代理的Nginx安装配置就完成了。
第 5 步 - 安装和配置 Logstash
在此步骤中,我们将安装和配置日志传送器 logstash。我们将安装 logstash,设置输入节拍,使用名为 grok 的 logstash 插件设置系统日志过滤,然后设置到 elasticsearch 的输出。
使用下面的 dnf 命令安装 logstash。
sudo dnf install logstash
安装完成后,进入 /etc/logstash 目录并使用 vim 编辑器编辑 JVM 配置文件 jvm.options。
cd /etc/logstash/
vim jvm.options通过 Xms 和 Xmx 配置更改最小/最大堆大小,如下所示。
-Xms512m
-Xmx512m保存并关闭。
接下来,转到 /etc/logstash/conf.d 目录并为 beats 输入创建名为 input-beat.conf 的配置文件。
cd /etc/logstash/conf.d/
vim input-beat.conf粘贴以下配置。
input {
beats {
port => 5044
}
}保存并关闭。
现在创建 syslog-filter.conf 配置文件。
vim syslog-filter.conf
粘贴以下配置。
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}保存并关闭。
然后为 elasticsearch output-elasticsearch.conf 创建输出配置。
vim output-elasticsearch.conf
粘贴以下配置。
output {
elasticsearch { hosts => ["127.0.0.1:9200"]
hosts => "127.0.0.1:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}保存并关闭。
接下来将logstash服务添加到系统引导中,启动logstash服务。
systemctl enable logstash
systemctl start logstashlogstash 服务已启动并正在运行,使用以下命令进行检查。
systemctl status logstash
netstat -plntu你会得到如下结果。
结果,logstash 日志发送器在默认 TCP 端口 5044 的 CentOS 8 服务器上启动并运行。基本的 Elastic Stack 安装已经完成,准备好发送和监控我们的日志到 Elastic (ELK Stack)服务器。
第 6 步 - 在客户端上安装 Filebeat
在这一步中,我们将向您展示如何在 Ubuntu 和 CentOS 系统上设置 filebeat。我们将安装一个 filebeat 并配置为将日志从两个服务器发送到弹性服务器上的 Logstash。
- 在 CentOS 8 上安装 Filebeat
使用以下命令将elasticsearch key添加到CentOS 8系统。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
现在转到 /etc/yum.repos.d 目录并使用 vim 编辑器创建 elasticsearch.repo 文件。
cd /etc/yum.repos.d/
vim 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保存并关闭。
现在使用下面的 dnf 命令安装 filebeat。
sudo dnf install filebeat
等待 filebeat 安装完成。
- 在 Ubuntu 18.04 上安装 Filebeat
首先,安装 apt-transport-https 包。
sudo apt install apt-transport-https
之后,使用以下命令添加 elasticsearch 密钥和存储库。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list现在更新所有存储库并使用下面的 apt 命令将 filebeat 安装到 ubuntu 系统。
sudo apt update
sudo apt install filebeat等待 filebeat 安装完成。
- 配置文件拍
filebeat 配置位于 /etc/filebeat 目录。进入filebeat目录,编辑filebeat.yml配置文件。
cd /etc/filebeat/
vim filebeat.yml现在禁用默认的 elasticsearch 输出,如下所示。
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["127.0.0.1:9200"]然后启用 logstash 输出并指定 logstash 主机 IP 地址。
output.logstash:
# The Logstash hosts
hosts: ["10.5.5.25:5044"]保存并关闭。
接下来,我们需要启用 filebeat 模块。运行下面的 filebeat 命令以获取 filebeat 模块列表。
filebeat modules list
使用以下命令启用系统模块。
filebeat modules enable system
filebeat 系统模块已通过配置文件 modules.d/system.yml 启用。
使用 vim 编辑器编辑系统模块配置。
cd /etc/filebeat/
vim modules.d/system.yml取消注释 syslog 文件和 ssh 授权文件的路径。
对于 CentOS 系统:
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/messages"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/secure"]对于 Ubuntu 系统:
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/syslog"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/auth.log"]保存并关闭。
现在将filebeat服务添加到系统引导并启动该服务。
systemctl enable filebeat
systemctl start filebeatfilebeat 服务已启动并运行,您可以使用以下命令进行检查。
systemctl status filebeat
您将看到如下结果。
以下是 CentOS 8 服务器的结果。
以下是来自 Ubuntu Server 18.04。
至此,elastic stack服务器IP地址10.5.5.12上的filebeat和logstash服务的连接已经建立。
第 7 步 - 测试
打开 Web 浏览器并在地址栏中输入 Elastic Stack 安装域名。
现在使用您创建的基本身份验证帐户登录 Kibana 仪表板。
您将获得如下所示的 Kibana 仪表板。
现在连接到 filebeat 连接到 logstash 后自动创建的 elasticsearch 索引数据。单击连接到您的 Elasticsearch 索引链接。
创建 filebeat-* 索引模式并单击 Next step 按钮。
对于过滤器名称,选择@timestamp 过滤器并单击Create index pattern。
并且filebeat-*索引模式已经创建,点击左侧的Discover菜单。
您将从 filebeat 客户端获取日志数据,如下所示。
CentOS 8 系统日志。
登录Ubuntu系统。
因此,filebeat 系统模块上定义的日志数据已被传送到 Elastic Stack 服务器。
至此Elastic Stack 在CentOS 8 上的安装配置已经成功完成。
参考
- https://www.elastic.co/guide/index.html