什么是 Logstash?
Logstash 是一个免费的开源服务器端数据收集和处理引擎,它使用动态流水线功能。 它从多个数据源获取信息,对其进行重构,然后将其发送到我们选择的目的地。 Logstash 还清理和修改数据以用于高级出站分析和可视化用例。 它是 ELK 堆栈(Elasticsearch、Logstash 和 Kibana)中的 L,通常负责将数据发送到 Elasticsearch。
有效地管理 Linux 系统需要熟悉日志的位置和可能的内容。 应用程序和系统级日志提供对应用程序行为或系统表面上可能不明显的洞察力。 当许多协作系统各自提供它们的日志时,聚合和处理这些信息就变得势在必行。 这就是 Logstash 大放异彩的地方。
事件管道
Logstash 事件管道由三个独立的阶段组成。
- 输入级和听起来一样多。 本质上,它是 Logstash 接收事件的机制,可以包括文件系统、Redis 或 beats 事件。
- 第二阶段,过滤器,负责数据处理,将可能非结构化的数据变为结构化数据,并根据一定的条件触发事件。
- 最后一个阶段,输出,是管道中数据的着陆点。 数据可以输出到 Elasticsearch、文件系统、graphite 或任何其他数量的目的地。
Logstash 的广泛使用以及它是开源的事实的一个好处是,有一个丰富的插件生态系统可用于促进 Logstash 事件管道的每个阶段。 这些插件使将 Logstash 连接到各种其他服务变得轻而易举。 在本教程中,我们将介绍如何通过包管理器 apt 在 Ubuntu 18.04 服务器上安装 Logstash。
预检
- 这些说明在 Liquid Web Self-Managed Ubuntu 18.04 LTS 服务器上以 root 用户身份执行。
- 用户具有在终端中使用 CLI 的工作知识
- 本教程假设服务器上有可用的 Java 安装。
安装依赖项
因为 Elasticsearch 使用 Java,所以我们需要确保安装了 Java 开发工具包 (JDK)。 我们可以使用此命令检查 Ubuntu 服务器上的 Java 安装。
root@ubuntu18:~$ java -version
-bash: java: command not found
如果未安装 Java,您可以运行以下命令来安装它或查看我们的知识库文章以获取更详细的说明。
root@ubuntu18:~$ apt install openjdk-8-jdk
现在,我们可以通过重新运行以下命令来重新验证我们的 Java JDK 安装。
root@ubuntu18:~$ java -version
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
准备环境
首先,作为最佳实践,最好始终通过运行以下命令来更新系统包。
root@ubuntu18:~# apt update -y
接下来,运行以下 wget 命令以下拉并安装 Elastic 包存储库的公共签名密钥。
root@ubuntu18:~# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
在所有系统上都可能需要也可能不需要下一步,但为了确保所有必备软件包都可用,请安装以下软件包。
root@ubuntu18:~# apt install apt-transport-https -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
apt-transport-https
0 upgraded, 1 newly installed, 0 to remove and 80 not upgraded.
Need to get 0 B/1692 B of archives.
After this operation, 153 kB of additional disk space will be used.
Selecting previously unselected package apt-transport-https.
(Reading database ... 154597 files and directories currently installed.)
Preparing to unpack .../apt-transport-https_1.6.12ubuntu0.1_all.deb ...
Unpacking apt-transport-https (1.6.12ubuntu0.1) ...
Setting up apt-transport-https (1.6.12ubuntu0.1) ...
通过 apt 安装 Logstash 的最后一步是添加将从中提取的实际存储库。
root@ubuntu18:~# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
安装 Logstash
现在已经添加了 Logstash 存储库,需要更新 apt 以了解新源。
root@ubuntu18:~# apt update -y
完成后,像安装任何其他软件包一样安装 Logstash。
root@ubuntu18:~# apt install logstash -y
接下来,通过运行以下命令验证 logstash 是否正常工作。
root@ubuntu18:~# /usr/share/logstash/bin/logstash -V
logstash 7.8.1
要进一步测试 Logstash 安装,请启动最基本的 Logstash 管道。
root@ubuntu18:~# /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
[INFO ] 2020-08-13 16:15:55.703 [LogStash::Runner] runner - Starting Logstash {"logstash.version"=>"7.8.1", "jruby.version"=>"jruby 9.2.11.1 (2.5.7) 2020-03-25 b1f55b1a40 OpenJDK 64-Bit Server VM 11.0.8+10-post-Ubuntu-0ubuntu118.04.1 on 11.0.8+10-post-Ubuntu-0ubuntu118.04.1 +indy +jit [linux-x86_64]"}
[INFO ] 2020-08-13 16:15:57.792 [Converge PipelineAction::Create] Reflections - Reflections took 26 ms to scan 1 urls, producing 21 keys and 41 values
[INFO ] 2020-08-13 16:15:58.601 [[main]-pipeline-manager] javapipeline - Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>500, "pipeline.sources"=>["config string"], :thread=>"#"}
[INFO ] 2020-08-13 16:15:59.318 [[main]-pipeline-manager] javapipeline - Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[INFO ] 2020-08-13 16:15:59.363 [Agent thread] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[INFO ] 2020-08-13 16:15:59.603 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
输出停止后,在控制台中输入 hello world 并回车,输出应如下所示。
hello world
{
"host" => "ubuntu18.awesome.com",
"@version" => "1",
"message" => "hello world",
"@timestamp" => 2020-08-11T03:14:25.951Z
}
按住 ctrl 键并按 D 退出 Logstash。
结论
你有它! Logstash 现在已安装并准备好开始从可用来源中提取、聚合和处理日志。 Logstash 现在可以充当数据管道,接收发送给它的日志并将其传递给其他服务。 这是实现集中、搜索和可视化日志的重要一步。 无论您是启动一个为单个网站提供服务的 Liquid Web VPS,还是使用多个节点来提供对 API 的访问,logstash 都可以在这些服务器上摄取日志文件,聚合它们并将它们发送到需要去的地方。
今天就开始吧!
我们以成为 Hosting™ 中最乐于助人的人而自豪!
我们才华横溢的支持团队由经验丰富的 Linux 技术人员和系统管理员组成,他们对多种 Web 托管技术(尤其是本文中讨论的技术)有着深入的了解。 一年 365 天,每周 7 天,每天 24 小时,我们随时可以帮助解决与本文相关的任何问题。
如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私人父母服务器或专用服务器所有者,并且您对执行概述的任何步骤感到不舒服,可以通过电话 @800.580.4985 联系我们, 聊天 或支持票以帮助您完成此过程。