如何在Ubuntu 20.04上安装Elasticsearch,Logstash和Kibana(ELK Stack)
ELK Stack是功能齐全的数据分析平台,由三个开源工具Elasticsearch,Logstash和Kibana组成。 该堆栈可帮助您集中存储和管理日志,并具有分析日志的功能。
在这篇文章中,我们将看到如何在Ubuntu 20.04上安装ELK堆栈。
安装ELK堆栈
使用ELK堆栈进行日志监视
Beats –安装在客户端计算机上,它收集日志并将日志发送到Logstash。
Logstash –处理Beats发送的日志(安装在客户端计算机上)。
Elasticsearch –存储来自Logstash的日志和事件,并提供实时搜索日志的功能
Kibana –提供事件和日志的可视化。
安装Java
Elasticsearch需要机器上可用的OpenJDK或Oracle JDK。
在这里,对于此演示,我正在使用OpenJDK。 使用以下命令以及APT的wget和HTTPS支持包安装Java。
sudo apt update
sudo apt install -y openjdk-11-jdk wget apt-transport-https curl
检查Java版本。
java -version
输出:
openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
添加ELK存储库
ELK堆栈软件包在Elastic官方存储库中可用。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
安装和配置Elasticsearch
Elasticsearch是一个开源搜索引擎,它为实时分布式,支持多租户的全文本搜索引擎提供Web界面(HTTP)和无模式的JSON文档。
使用apt命令安装最新版本的Elasticsearch。
sudo apt update
sudo apt install -y elasticsearch-oss
启动并启用Elasticsearch服务。
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
等待一两分钟,然后运行以下命令以查看Elasticsearch的状态。
curl -X GET http://localhost:9200
输出:
{ "name" : "ubuntu.itzgeek.local", "cluster_name" : "elasticsearch", "cluster_uuid" : "AB9giOoWQo2nReENAICKig", "version" : { "number" : "7.7.1", "build_flavor" : "oss", "build_type" : "deb", "build_hash" : "ad56dce891c901a492bb1ee393f12dfff473a423", "build_date" : "2020-05-28T16:30:01.040088Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
上面的输出确认Elasticsearch正常运行。
安装和配置Logstash
Logstash是开源日志分析软件,可收集日志,解析并将其存储在Elasticsearch上以备将来使用。 借助可用的插件,它可以处理不同类型的事件,而无需额外的工作。
sudo apt install -y logstash-oss
Logstash配置包含三个插件,即输入,过滤器和输出。 您可以将所有插件的详细信息放在每个部分的单个文件或单独文件中,以.conf结尾。
在这里,我们将使用一个文件来放置所有三个插件。
在/etc/logstash/conf.d/目录下创建一个配置文件。
sudo nano /etc/logstash/conf.d/logstash.conf
在输入插件中,我们将配置Logstash以在端口5044上侦听来自客户端计算机上运行的代理(Beats)的传入日志。
input {
beats {
port => 5044
}
}
对于过滤器插件,我们将使用Grok解析syslog消息,然后再将其发送到Elasticsearch进行存储。
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
在输出插件中,我们将定义日志的存储位置,显然是Elasticsearch实例。
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
}
}
现在启动并启用Logstash服务。
须藤systemctl启动logstash
sudo systemctl启用logstash
Logstash日志:
sudo cat /var/log/logstash/logstash-plain.log
安装和配置Kibana
Kibana提供了对Elasticsearch实例上存储的数据的可视化。 使用apt命令安装Kibana。
sudo apt install -y kibana-oss
默认情况下,Kibana侦听localhost,这意味着您无法从外部计算机访问Kibana Web界面。 要从外部计算机访问Kibana,您需要将server.host设置为/etc/kibana/kibana.yml文件中的系统IP地址。
sudo nano /etc/kibana/kibana.yml
进行如下更改。
server.host: "192.168.0.10"
同样,在某些情况下,Elasticsearch和Kibana可能在不同的机器上运行。 在这种情况下,请使用Elasticsearch服务器的IP地址更新以下行。
elasticsearch.hosts: ["http://localhost:9200"]
在机器启动时启动并启用Kibana。
sudo systemctl start kibana
sudo systemctl enable kibana
安装Filebeat
Filebeat是在客户端计算机上运行的软件客户端,用于将日志发送到Logstash服务器进行解析(在我们的示例中)或直接发送到Elasticsearch进行存储。
我们将在配置文件中使用Logstash服务器的主机名。 因此,在客户端计算机上为Logstash服务器添加DNS记录或主机条目。
sudo nano /etc/hosts
进行如下输入。
192.168.0.10 server.itzgeek.local
为apt安装HTTPS支持。
sudo apt update
sudo apt install -y apt-transport-https
在系统上设置弹性存储库以进行Filebeat安装。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
使用以下命令安装Filebeat。
sudo apt update
sudo apt install -y filebeat
编辑filebeat配置文件/etc/filebeat/filebeat.yml,以将日志发送到Logstash服务器。
sudo nano /etc/filebeat/filebeat.yml
输入部分中的以下配置用于将系统日志(/ var / log / syslog)发送到Logstash服务器。
对于此演示,我已注释掉/var/log/*.log以避免将所有日志发送到Logstash服务器。
. . . #=========================== Filebeat inputs ============================= 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/syslog #- /var/log/*.log . . .
由于我们将日志发送到Logstash进行解析,因此请在输出部分注释掉output.elasticsearch:部分,并取消注释output.logstash:部分。
. . . #----------------------------- Logstash output -------------------------------- output.logstash: # The Logstash hosts hosts: ["server.itzgeek.local:5044"] . . .
启动Filebeat服务。
sudo systemctl start filebeat
Filebeat的日志:
sudo cat /var/log/syslog
访问ELK仪表板
通过转到以下URL访问Kibana Web界面。
http://您的IP地址:5601 /
要么
http://您的服务名称:5601
您将获得Kibana的主页。

Kibana的起始页
首次访问时,您需要创建filebeat索引。 去 管理 » 索引模式 » 创建索引模式。

索引模式
在索引模式框中键入以下内容。
filebeat-*
您应该看到filebeat索引,如下所示。 单击下一步。

创建索引模式
选择 @时间戳 然后单击创建索引模式。
@timestamp

时间过滤器字段名称
检出索引模式中的字段。

领域
单击左侧导航中的发现以查看来自客户端计算机的传入日志。

发现事件
结论
就这样。 我希望您已经学习了如何在Ubuntu 20.04上安装ELK堆栈。