Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch

在之前的文章 “安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0”,我们详述了如何使用 No Fleet Server 来把数据写入到 Elasticsearch 中。在今天的文章中,我们来详述如下使用 Elastic Agents 在独立(standalone)模式下来采集数据并把数据最终通过 Logstash 来写入到 Elasticsearch 中去。

在今天的练习中,我将使用如下的架构来搭建我的测试环境:

我在 macOS 下安装 Elasticsearch 及 Kibana,在 Ubuntu OS 下安装 Apache, Elastic Agent 及 Logstash。在本展示中,我将使用最新的 Elastic Stack 8.8.1 来进行展示。

安装

Elasticsearch 及 Kibana

如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参考如下的文章来进行安装:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

在安装的时候,需要特别注意的是:请选择 Elastic Stack 8.x 的安装指南来进行安装。在默认的情形下,Elasticsearch 的访问是带 HTTPS 访问的。

Elastic Agent

我们可以到 Elastic 的官方网站 Download Elastic Products | Elastic 下载和 Elasticsearch 版本一致的并且和自己电脑操作系统匹配的安装包。

wget https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.8.1-linux-arm64.tar.gztar xzf elastic-agent-8.8.1-linux-arm64.tar.gzcd elastic-agent-8.8.1-linux-arm64

我们可以在当前的目录下看到如下的文件:

 pwd
/home/parallels/fleet/elastic-agent-8.8.1-linux-arm64
parallels@ubuntu2004:~/fleet/elastic-agent-8.8.1-linux-arm64$ ls 
data  elastic-agent  elastic-agent.reference.yml  elastic-agent.yml  fleet.enc.lock  LICENSE.txt  NOTICE.txt  README.m

在上面的  elastic-agent.yml 文件就 Elastic Agent 的配置文件。有关 Elastic Agent 在 standalone 模式下的配置请详细参阅 Elastic 官方链接 Install standalone Elastic Agents (advanced users) | Fleet and Elastic Agent Guide [8.8] | Elastic。

我们首先来尝试直接把 Elastic Agent 的数据发送至 Elasticsearch。如果我们打开 默认的 elastic-agent.yml 文件,我们会发现,在缺省的情况下,它会采集系统的 metrics。在这里,我们先不引入任何的 integration。我们打开 elastic-agent.yml 文件:

如上所示,为了方便展示,我使用超级用户 elastic 来进行配置。这在实际的使用中,我们并不建议。你需要根据自己的需求创建一个合适权限的账号来进行配置。另外上面的 fingerprint 也是可以在 Elasticsearch 第一次启动的时候,在 terminal 的输出中可以找到。

你也可以在 config/kibana.yml 的文件最后部分找到。你也可以通过阅读文章 “Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x” 来了解如何得到这个 fingerprint。

注意:在上面,我们使用用户名及密码的方式来配置 elastic-agent.yml 文件。你也可以采用使用 API Key 的方式来进行配置。有关如何得到 API key,请参阅文章 “Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x”。

配置完上面的 elastic-agent.yml 文件后,我们运行如下的命令:

sudo ./elastic-agent install
parallels@ubuntu2004:~/fleet/elastic-agent-8.8.1-linux-arm64$ sudo ./elastic-agent install
Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:y
Do you want to enroll this Agent into Fleet? [Y/n]:n
Elastic Agent has been successfully installed.

我们可以在 Kibana 里进行查看:

我们也可以到 Discover 里进行查看:

在 Discover 里我们可以看到刚被摄入的 metrics 数据。请注意在目前为止,我们只摄入默认的 system metrics 数据。 

把 elastic agent 的数据写入到 Logstash

安装 Logstash 并配置

我们接下来把 elastic agent 的输出数据写入到 Logstash。我们可以参考 Elastic 的官方文档 Logstash output | Fleet and Elastic Agent Guide [8.8] | Elastic。我们首先需要安装 Logstash。请参考之前的文章  “如何安装 Elastic 栈中的 Logstash”。我们也可以直接到 Elastic 的官方网站 Download Logstash Free | Get Started Now | Elastic 去下载和 Elasticsearch 相匹配的 Logstash 版本。

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.8.1-linux-aarch64.tar.gz
tar xzf logstash-8.8.1-linux-aarch64.tar.gz
cd logstash-8.8.1

为了做测试,我们需要创建一个 logstash.conf 的配置文件:

logstash.conf

input {elastic_agent {port => 5044}
}output {stdout {}
}

在上面,我们的 Logstash pipeline 非常简单。为了测试方便,我们并没有直接写入到 Elasticsearch,而是使用 stdout 来输出进行测试。Logstash 侦听 elastic agent 的 5044 端口号。我们使用如下的命令来启动 Logstash:

./bin/logstash -f logstash
$ pwd
/home/parallels/logstash/logstash-8.8.1
parallels@ubuntu2004:~/logstash/logstash-8.8.1$ ./bin/logstash -f logstash.conf

重新配置 Elastic Agent

在上面我们已经启动了 Elastic Agent。为了能够重新配置 Elastic Agent,我们需要停止它之前的服务,并重新安装它。我们首先打入如下的命令:

parallels@ubuntu2004:~$ su
Password: 
root@ubuntu2004:/home/parallels# cd /opt/Elastic/Agent/
root@ubuntu2004:/opt/Elastic/Agent# ./elastic-agent uninstall
Elastic Agent will be uninstalled from your system at /opt/Elastic/Agent. Do you want to continue? [Y/n]:y
Elastic Agent has been uninstalled.

我们可以通过如下的命令来获得当前 Logstash 运行的 IP 地址:

 ip a | grep inetinet 127.0.0.1/8 scope host loinet6 ::1/128 scope host inet 192.168.0.8/24 brd 192.168.0.255 scope global noprefixroute eth0inet6 fe80::d246:4880:928b:f508/64 scope link noprefixroute 

在上面,我们卸载了之前安装的 Elastic Agent。我们接下来重新配置 elastic-agent.yml 文件:

elastic-agent.yml

我们再次使用如下的命令来启动 elastic agent:

sudo ./elastic-agent install
parallels@ubuntu2004:~/fleet/elastic-agent-8.8.1-linux-arm64$ sudo ./elastic-agent install
[sudo] password for parallels: 
Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:y
Do you want to enroll this Agent into Fleet? [Y/n]:n
Elastic Agent has been successfully installed.

我们可以使用如下的命令来进行检查:

./elastic-agent inspect

从上面的输出中,我们可以看出来 outputs 是写入到 Logstash 的端口 5044。

我们可以切换到 Logstash 运行的 terminal 中进行查看:

从 Logstash 的 terminal 中,我们可以看到有很多的输出。我们需要注意的是,在我们之前的配置中,我们并没有把数据写入到 Elasticsearch 中。为了把数据写入到 Elasticsearch 中,我们必须重新配置 logstash.conf 文件。我们终止 Logstash 的运行。我们可以参考文章 “Logstash:如何连接到带有 HTTPS 访问的集群” 及 “Beats:使用 fingerprint 来连接 Beats/Logstash 和 Elasticsearch”。

logstash.conf

input {elastic_agent {port => 5044}
}output {stdout {}elasticsearch {hosts => ["https://192.168.0.3:9200"]index => "data-%{+YYYY.MM.dd}"ssl => trueilm_enabled => trueuser => "elastic"password => "z5nxTriCD4fi7jSS=GFM"ca_trusted_fingerprint => "783663875df7ae1daf3541ab293d8cd48c068b3dbc2d9dd6fa8a668289986ac2"}
}

关于这里的 user,password 及 ca_trusted_fingerprint,请参考上面的 elastic-agent.yml 的配置。

我们再次重新运行 Logstash:

./bin/logstash -f logstash.conf

我们回到 Kibana 的界面来进行查看:

我们可以看到新生成的  data-2023.06.21 索引文件。这样我们就把数据通过 Logstash 把数据写入到 Logstash 里了,进而写入到 Elasticsearch 中去了。

通过 Kibana 配置 elastic-agent.yml 文件

在我们上面的展示中,我们使用了默认的 elastic-agent.yml 文件。它只能针对当前的机器收集 metrics 这些指标信息。如果我们想使用它针对其他的许多 integration 来进行操作,那么它的手动配置将会是非常麻烦的,而且我们也不是很在行。你可以详细研究上面在 elastic-agent 安装目录下的 elastic-agent.reference.yml 文件。在进行下面的练习之前,我们还是和之前一样,先下载之前安装的 elastic agent:

parallels@ubuntu2004:~$ su
Password: 
root@ubuntu2004:/home/parallels# cd /opt/Elastic/Agent/
root@ubuntu2004:/opt/Elastic/Agent# ls
data           elastic-agent.reference.yml  fleet.enc       LICENSE.txt  README.md
elastic-agent  elastic-agent.yml            fleet.enc.lock  NOTICE.txt   vault
root@ubuntu2004:/opt/Elastic/Agent# ./elastic-agent uninstall
Elastic Agent will be uninstalled from your system at /opt/Elastic/Agent. Do you want to continue? [Y/n]:y
Elastic Agent has been uninstalled.

针对很多复制的集成,我们需要借助 Kibana 中集成的工具来帮我们配置 elastic-agent.yml 文件。

我们打开 Kibana:

如上所示, Elastic 为我们提供了丰富的 integrations 来方便地采集数据,比如我们常见的 Nginx,Apache 等。作为例子,我们选择 Apache 服务器来做展示。按照如下的命令在 Ubuntu OS 上来进行安装:

sudo apt install apache2

 

从上面的输出中,我们可以看到 Apache 服务器已经成功地运行起来了。

接下来我们来创建如何收集 Apache 服务器的 elastic-agent.yml 文件。

 

 

我们把上面的 elastic-agent.yml 内容拷贝下来。

我们接下来回到之前安装的 elastic agent 根目录下: 

parallels@ubuntu2004:~/fleet/elastic-agent-8.8.1-linux-arm64$ mv elastic-agent.yml elastic-agent.back.yml
parallels@ubuntu2004:~/fleet/elastic-agent-8.8.1-linux-arm64$ vi elastic-agent.yml

我们把上面拷贝过来的 elastic-agent.yml 内容粘贴过来:

我们根据自己的配置修改为:

我们保存上面的 elastic-agent.yml 文件,并使用如下的命令来进行安装:

sudo ./elastic-agent install
parallels@ubuntu2004:~/fleet/elastic-agent-8.8.1-linux-arm64$ sudo ./elastic-agent install
[sudo] password for parallels: 
Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:y
Do you want to enroll this Agent into Fleet? [Y/n]:n
Elastic Agent has been successfully installed.

我们点击上面的第一个链接:

我们在 Apache 的页面上点击 refresh 按钮几次:

我们查看这个页面:

 

我们可以回到 Stack Management 界面来进行查看:

我们可以通过 Discover 来进行查看:

把 Apache 数据通过 Logstash 写入到 Elasticsearch

为了能够把 Apache 的日子数据通过 Logstash 写入,我们只需要修改 elastic-agent.yml 文件:

elastic-agent.yml

我们启动 Logstash。我们先卸载之前安装的 elastic agent,并再次重新运行 elastic agent 后。我们可以在 Logstash 的 terminal 中看到如下的输出:

我们运行如下的命令几次:

curl http://192.168.0.8:80

 

我们可以在 Kibana 中进行查看:

我们可以看到数据被正确地写入到 Elasticsearch 中来了。

更多阅读:Observability:为 Logstash 输出配置 SSL/TLS - Elastic Agent

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2716.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《诸神之眼:Nmap网络安全审计技术揭秘》读书笔记

《诸神之眼:Nmap网络安全审计技术揭秘》读书笔记 作者:李华峰 ◆ 前言 NSE是Nmap中革命性的创新。通过Nmap强大的脚本引擎(NSE),每一个用户都可以向Nmap中添加自己编写的代码,从而将Nmap打造成用户自由定制…

fusionpbx简介

概述 fusionpbx是以freeswitch作为底层框架开发而成的开源PBX,在freeswitch的基础上,优化了GUI的易用性。 fusionpbx可用作高可用性的单租户或基于域的多租户 PBX、运营商级交换机、呼叫中心服务器、传真服务器、voip服务器、语音邮件服务器、会议服务…

深入理解深度学习——BERT派生模型:T5(Text to Text Transfer Transformer)

分类目录:《深入理解深度学习》总目录 T5的全称为Text to Text Transfer Transformer,是谷歌提出的预训练语言模型领域的通用模型,该模型将所有自然语言问题都转化成文本到文本的形式,并用一个统一的模型解决。为了得到大一统的高…

hexo stellar设置笔记页面

stellar主题的作者在其文档介绍了如何进行笔记页面的简单设置,但是我看了以后还是有点云里雾里,在一顿查阅资料以后,我终于找到了解决办法。 参考下面这个博主的文章。写得很详细,这里就不再赘述啦。 Stellar主题自定义侧边栏教…

C#,保持亮度的动态直方图均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)源代码

图像增强的主要目的是显示隐藏的图像细节,或者用新的动态范围增加图像对比度。直方图均衡(HE)是用于图像对比度增强的最流行的技术之一,因为HE在计算上快速且易于实现。HE通过基于输入灰度级的概率分布重新映射图像的灰度级来执行…

微服务远程调用openFeign整合

✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: 微服务探索之旅 ✨特色专…

聚类分析(文末送书)

目录 聚类分析是什么 一、 定义和数据类型 聚类应用 聚类分析方法的性能指标 聚类分析中常用数据结构有数据矩阵和相异度矩阵 聚类分析方法分类 二、K-means聚类算法 划分聚类方法对数据集进行聚类时包含三个要点 K-Means算法流程: K-means聚类算法的特点 三、k-med…

【数据挖掘】时间序列模型处理指南(二)

一、说明 本文是一个系列文章的第二部分,本文将用股票数据进行时间序列分析为例,对时间分析的方法、过程,进行详细阐述。 二、前文章节 在文章第一部分种:【数据挖掘】时间序列模型处理(一)_无水先生的博客…

C++ 文件和流

我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。 本教程介绍如何从文件读取流和向文件写入流。这就需要用到 C 中另一个标准库 fstream,它定义了三个新的数据类型: 数据类型描述of…

Java之Javac、JIT、AOT之间的关系

Javac:javac 是java语言编程编译器。全称java compiler。但这时候还是不能直接执行的,因为机器只能读懂汇编,也就是二进制,因此还需要进一步把.class文件编译成二进制文件。 Java的执行过程 详细流程 结论:javac编译后…

【ESP32C3合宙ESP32C3】:ESP32C3和合宙ESP32C3的环境搭建与离线包安装

项目场景: 最近买了一块合宙ESP32C3的开发板,于是想要开发一下,当然开发最开始少不掉开发环境的搭建,在这个搭建的过程中,遇到了一些问题,解决了,也希望能帮助到大家。 ESP32C3 和 合宙ES…

gnutls_handshake() failed: The TLS connection was non-properly terminated.

从远程仓库获取所有更新,并保存在本地时,使用git fetch 命令时出现如下错误: 解决办法: 问题解决: 参考资料 拉取github报错 gnutls_handshake() failed: The TLS connection was non-properly terminated. git获取…