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

news2024/9/27 15:28:45

在之前的文章 “安装独立的 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.gz

tar xzf elastic-agent-8.8.1-linux-arm64.tar.gz

cd 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 inet
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    inet 192.168.0.8/24 brd 192.168.0.255 scope global noprefixroute eth0
    inet6 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 => true
      ilm_enabled => true
      user => "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 中来了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gradio Blocks:自定义交互式Web应用和演示

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

GitPySearch: 全局Python代码搜索工具

一 、背景 在某些情况下,我们需要快速了解哪些项目包含特定的配置,例如使用了fastjson库或数据库的连接配置。然而,在GitLab上逐个代码仓库进行搜索是非常耗时的。为了提高效率,我们开发了一个Python脚本工具,用于实现…

PostgreSQL的优势:为何它成为主流数据库管理系统

PostgreSQL的优势:为何它成为主流数据库管理系统 Stack Overflow 2023年报告PostgreSQL和MySQL同异我们在开发中如何选择PostgreSQL和MySQL呢? 摘要:本文主要比较了PostgreSQL和MySQL这两个流行的关系型数据库管理系统。我们首先介绍了它们的…

屏蔽箱的材质结构和使用事项介绍

屏蔽箱是一种用于屏蔽机电波干扰的设备,通常用于电磁兼容测试、天线测试、短波收发等需要屏蔽电磁辐射噪声的场合。这种箱子通常由导电或者导磁材料制成,内部配备高效屏蔽材料,能够在一定范围内有效地屏蔽电磁波辐射,避免电磁波干…

详细介绍mysql索引类型

目录 Normal 普通索引Unique 唯一索引Full Text 全文索引SPATIAL 空间索引btree索引和hash索引的区别在实际操作过程中,应该选取表中哪些字段作为索引? Normal 普通索引 表示普通索引,大多数情况下都可以使用 Unique 唯一索引 表示唯一的&…

Linux内核内存管理源码分析之init-mm.c(2)

接前一篇文章:Linux内核内存管理源码分析之init-mm.c(1) 本文内容参考:https://www.cnblogs.com/mysky007/p/12317831.html 上回说到了swapper_pg_dir和init_top_gpt。再次给出内核源码中init_top_gpt的说明,在Documen…

【基础】MQTT -- MQTT 特性:QoS、Retained 消息、LWT 以及 Keepalive

MQTT -- MQTT 特性:QoS、Retained 消息、LWT 以及 Keepalive QoS 及其最佳实践MQTT 协议中的 QoS 等级QoS 0QoS 1PUBACK 数据包 QoS 2PUBREC 数据包PUBREL 数据包PUBCOMP 数据包 实际的订阅者 QoSQoS 的最佳实践QoS 与会话QoS 的选择 Retained 消息LWT 遗嘱消息Keep…

FPGA_学习_12_IP核_FIFO

FIFO(Frist Input Frist Output),即先入先出,也是一种存储器,一般做数据缓冲。FIFO和 RAM的共同点在于都能存储数据、都有控制写和读的信号;不同点在于 FIFO 没有地址,所以不能任意指定读取某一个数据,数据只能按照数据…

一个女孩从软件测试工程师到主管的成长

说实话,我做测试工作的时间不是很长,学完软件测试工程师的课程后,到现在也就是一年多的时间吧,不过,我愿意自己学习和工作中积累起的这些点滴与大家分享。 如果你想学习自动化测试,我这边给你推荐一套视频…

C语言之程序环境和预处理(1)

本章主要以图片和文字的形式给大家讲解 程序的翻译环境和程序的执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码 2. 详解编译…

东南亚骑行类目热销品出炉!Shopee/Lazada跨境卖家有哪些优势产品可做?

菲律宾/巴西是Lazada/Shopee骑行品类卖家体量最大的2个站点,新加坡/越南/马来西亚紧随其后. 体量:在东南亚,菲律宾与新加坡对骑行的需求最强烈,其次是越南,三地总订单占总体70%以上,在南美地区&#xff0c…

Revit碰撞检查:Navisworks“复合对象碰撞”的使用

一、Navisworks 中碰撞检查中“复合对象碰撞”有什么用? 通常情况下我们使用 Revit 做好了模型,然后使用 Navisworks这款软件进行碰撞检查等优化工作。因为 Navisworks 相对于 Revit的软件数据要“轻”很多,可以让多专业的模型都在一起导入来进行全专业…

对接口进行限流?

在高并发的情况下,我们可以把消息放入队列,在从队列消费,达到限流的目的。但这里说的限流指的是当我们请求其他服务器接口,防止高并发下把对面服务器压垮,于是对我们要求每秒限制在100QPS。 如果使用springCloud可以用…

准备换工作跳槽面试人一定要看的的18条忠告

1、如果想好要跳槽就别犹豫,不用纠结太多外在因素,很多事情只有去做了才知道。(当然,如果你是非某家公司不可的话,那可以慢慢等待机会) 2、关于跳槽的渠道,主要有四种:直接被公司挖…

测试自动化的演进,从录制回放到对象映射

概要:在短时间的市场化和短期冲刺的文化中,测试人员通过使用测试自动化实践和工具保持同步是至关重要的。本文跟踪从基于脚本的测试与硬编码数据到自动化框架的转变,探索测试自动化的开始和到今天的演变 - 并且可能的未来走向。 今天的软件市…

Qt之QDial选择器

文章目录 前言一、QDial是什么二、操作api信号与槽示例代码总结 前言 Qt是一种流行的跨平台的C GUI应用程序开发框架,用于构建图形用户界面(GUI)和其他桌面应用程序。QDial是Qt框架中的一个小部件,用于创建旋转式的拨号器。本文将介绍如何使用QDial进行…

ChatGLM Efficient Tuning效率调试PEFT

ChatGLM Efficient Tuning 基于 PEFT 的高效 ChatGLM-6B 微调。 [ English | 中文 ] 更新日志 [23/06/05] 现在我们实现了 4 比特的 LoRA 训练(也称 QLoRA)。请尝试使用 --quantization_bit 4 参数进行 4 比特量化微调。(实验性功能&#…

Echarts实现流程图关系图拓扑图

实现如下&#xff0c;可以横着排竖着排都可以 1.先写个div做画布 ref值随意&#xff0c;但是一点要写 <div style"height: 400px;" ref"echartdom"></div> 2.下载echarts 我这边下载的是 "echarts": "^4.9.0",最新版应…

奢侈品回收APP系统开发功能有哪些?

奢侈品售卖回收APP系统开发功能有哪些&#xff1f; 1.回收品牌分类&#xff1a;奢侈品回收APP平台可以将支持回收鉴定的奢侈品品牌及商品进行分类展示&#xff0c;方便用户查看自己的想要出售的是不是平台支持的商品。 2.商品在线检索&#xff1a;客户可以直接按…

STM32F4_红外遥控

目录 1. 红外遥控简介 2. NEC协议 3. 硬件设计 4. 实验程序详解 4.1 main.c 4.2 Remote.c 4.3 Remote.h 1. 红外遥控简介 红外遥控是一种无线、非接触的控制技术。具有抗干扰能力强&#xff0c;信息传输可靠&#xff0c;功耗低&#xff0c;成本低&#xff0c;易实现等优…