在Ubuntu 20.04上安装ELK Stack

欢迎来到我们的指南,了解如何在Ubuntu 20.04上安装ELK Stack。 麋鹿,目前称为Elastic Stack,是开源项目的缩写,包括:

  • 弹性搜索:搜索和分析引擎
  • 基巴纳:一种数据可视化和仪表板工具,使您能够分析Elasticsearch上存储的数据。
  • Logstash:服务器端数据处理管道,可同时从多个源中提取数据,进行转换,然后将其存储在诸如Elasticsearch之类的搜索分析引擎上
  • 节拍 另一方面,日志发送器从不同的端点收集日志,并将其发送到Logstash或直接发送到Elasticsearch。

在Ubuntu 20.04上安装ELK Stack

Elastic Stack的安装遵循特定的顺序。以下是安装Elastic Stack组件的顺序;

  • 安装Elasticsearch
  • 安装Kibana
  • 安装Logstash
  • 安装节拍

运行系统更新

在开始安装之前,请确保系统软件包是最新的。

在Ubuntu 20.04上安装Elasticsearch

您可以从Elastic仓库中自动安装Elasticsearch,也可以下载Elasticsearch DEB二进制软件包并进行安装。但是,为了简化所有Elastic Stack组件的安装,我们将创建Elastic Stack仓库;

导入弹性堆栈PGP存储库签名密钥

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch --no-check-certificate | sudo apt-key add -

安装Elasticsearch;

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

更新软件包缓存并安装Elasticsearch;

apt update
apt install elasticsearch

在Ubuntu 20.04上配置Elasticsearch

我们将仅对本教程进行一些配置更改。首先,我们将ES配置为侦听特定的接口IP,以允许外部访问。 Elasticsearch在听 本地主机 默认。

vim /etc/elasticsearch/elasticsearch.yml

您可以选择更改默认群集名称;

...
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application
cluster.name: kifarunix-demo
...

取消注释并更改值 network.host 以及 http.port 网络设置部分下的行。

# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
#network.host: 192.168.0.1
network.host: 10.10.9.9
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation

由于我们正在运行单个节点Elasticsearch,因此通过添加以下行在配置中指定相同的名称, discovery.type: single-node 在“发现设置”部分下。

...
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
...
...
#cluster.initial_master_nodes: ["node-1", "node-2"]
# This is for Single Node Elastic stack
discovery.type: single-node
...

保存并退出配置。

接下来,将JVM堆大小配置为不超过内存大小的一半。在这种情况下,我们的测试服务器具有2G RAM,并且最大和最小大小的堆大小均设置为512M。

vim /etc/elasticsearch/jvm.options
...
################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms512m
-Xmx512m
...

这些只是我们将在ES上进行的几项更改。

运行Elasticsearch

启动并使Elasticsearch在系统启动时运行;

systemctl enable --now elasticsearch

检查状态;

systemctl status elasticsearch

您也可以使用curl命令验证ES状态。相应地更换IP。

curl http://10.10.9.9:9200

如果得到这样的输出,那么一切都很好。

{
  "name" : "ubuntu20",
  "cluster_name" : "kifarunix-demo",
  "cluster_uuid" : "3RY1LTvyTD2Bie74xGw6Vg",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

在Ubuntu 20.04上安装Kibana

由于我们已经设置了弹性存储库,因此只需运行以下命令即可安装Kibana;

apt install kibana

Kibana将继续 本地主机:5601 默认。要允许外部访问,请编辑配置文件并替换其中的值 server.host 与接口IP。

vim /etc/kibana/kibana.yml
# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601

...
# To allow connections from remote users, set this parameter to a non-loopback address.
#server.host: "localhost"
server.host: "10.10.9.9"

设置Elasticsearch URL

...
# The URLs of the Elasticsearch instances to use for all your queries.
#elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.hosts: ["http://10.10.9.9:9200"]

如果需要通过与Nginx代理来保护Kibana的安全,可以通过以下链接查看如何保护我们的Kibana;

使用SSL配置Nginx到代理Kibana

运行基巴纳

安装完成后,启动并启用Kibana以在系统启动时运行。

systemctl enable --now kibana

访问Kibana仪表板

您现在可以使用网址从浏览器访问Kibana, http://:5601

如果UFW正在运行,请打开Kibana端口。

ufw allow 5601/tcp

进入Kibana界面后,在欢迎页面上,系统会提示您是否开始使用Kibana示例数据,因为我们的集群中还没有任何数据。

在Ubuntu 20.04上安装Elastic(ELK)堆栈

在Ubuntu 20.04上安装Logstash

Logstash需要Java 8或Java 11.您可以使用Oracle官方发行版或OpenJDK等开源发行版。安装OpenJDK 11;

apt install openjdk-11-jdk -y
java --version
openjdk 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)

由于我们已经有弹性存储库,因此通过运行以下命令来安装Logstash;

apt install logstash

安装完成后,将Logstash配置为处理要从远程主机收集的所有数据。请点击以下链接,了解如何配置Logstash。

如何配置Logstash数据处理管道

在Ubuntu 20.04上安装Filebeat

Filebeat是一种轻量级的托运人,用于收集,转发和集中事件日志数据。它作为代理程序安装在要从中收集日志的服务器上。它可以将其收集的日志转发到Elasticsearch或Logstash进行索引。

从Elastic repos安装Filebeat;

apt install filebeat

安装完成后,请按照下面的链接配置Filebeat进行数据收集。

在Ubuntu上配置Filebeat日志发送程序

验证Elasticsearch Index数据接收

将Filebeat配置为将身份验证日志发送到Logstash进行处理后,可以验证是否有任何数据已写入定义的索引。例如,在以上链接中提供的示例设置中,我们将SSH身份验证事件发送到 ssh_auth-YYYY.MM 指数。这可以通过查询ES索引的状态来验证。

curl -XGET http://10.10.9.9:9200/_cat/indices?v
health status index                            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_task_manager_1           BkfUXSstQdGhcOAD9EyhvQ   1   0          2            0     31.9kb         31.9kb
green  open   .apm-agent-configuration         duVPmKSWQj6k_hGzezyheg   1   0          0            0       283b           283b
green  open   ilm-history-1-000001             pvdSCTQDQXWwlzdlEY1ykg   1   0         18            0     25.3kb         25.3kb
green  open   .kibana_1                        aU6EZ-c4RTGQOsH7coOUqg   1   0          8            0     22.7kb         22.7kb
yellow open   ssh_auth-2020.05                 xVQyHuz2SWCEFMQFKYWVDA   1   1        186            0    248.5kb        248.5kb

从输出中,您可以看到我们的SSH索引包含数据。有关健康色状态,请参阅以下内容 集群健康API

要确认在Kibana上的数据接收,请导航至Web浏览器上的Kibana仪表板并创建索引。点击 管理选项卡(在左侧面板上)> Kibana>索引模式>创建索引模式。输入通配符作为索引名称。

在Ubuntu 20.04上安装Elastic(ELK)堆栈

单击下一步,然后选择时间戳记作为时间过滤器。

在Ubuntu 20.04上安装Elastic(ELK)堆栈

然后点击 创建索引模式 创建索引模式。

查看有关Kibana的数据

完成此操作后,您现在可以通过单击左窗格上的发现选项卡在Kibana上查看事件数据。相应地扩展您的时间范围。

在Ubuntu 20.04上安装ELK Stack

要过滤刚刚用Logstash处理的SSH事件,请添加在Logstash grok过滤器模式中定义的字段;

在Ubuntu 20.04上安装ELK Stack

然后你去。现在,如果需要在事件到达ES之前进行进一步处理,则可以摄取更多数据并创建Logstash筛选器。

这标志着我们关于如何在Ubuntu 20.04上安装ELK Stack的指南的结尾。请享用

参考

安装弹性堆栈

Sidebar