Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0

2024-01-11 09:50

本文主要是介绍Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果你已经安装过最近的 Elastic Stack 的话,你可能已经发现 Beats 已经不是推荐的数据摄入方式,取而代之的是 Elastic Agent。我们可以看一下如下的图:

上图展示的是 Elastic Stack 整体的栈的结构图。我们会发现其中最重要的一个变化是使用了 Integrations 而不是之前的 Beats 和 Logstash,尽管它们仍然适用。也就是推荐的办法是使用 Integration 来摄入数据。我们之前使用 Beats 来采集数据的架构是这样的:

所有的 Beats 的数据都可以发送至 Elasticsearch。它们都分别进行配置,但是不能在 Kibana 中进行集中管理和配置。

什么是 integration(集成)?

Elastic 集成是一组资产,定义了如何使用 Elastic Stack 观察特定产品或服务:

  • 数据摄取、存储和转换规则
  • 设置选项
  • 预构建的自定义仪表板和可视化
  • 文档
  • 测试

集成具有严格、定义明确的结构,并提供许多优于其他摄取选项的优势:

  • 围绕被观察的服务构建 — 而不是监控代理
  • 简单、不易出错的配置
  • 用户安装的监控代理更少
  • 只需点击几下即可部署
  • 从 Elastic Stack 解耦发布过程

使用 Elastic Agent 来采集数据可以给我带来如下的好处:

我们使用一个 Elastic Agent,但是它可以代替我们在之前的许多的 Beats:

以 Elastic Agent 为基础的数据摄入架构如下:

在今天的文章中,我们将介绍如何使用 Fleet 来设置 Elastic Agent 并摄入需要的数据。你将了解:

  • 配置 Fleet
  • 使用 Elastic Agent 来发送数据到 Elastic Stack
  • 监控整个公司的系统和服务的日志和指标

我们可以通过 Fleet 来对 Elastic Agents 进行集中管理和配置。 在每一个 Elastic Agent 中,它是实现了如下的功能:

它通过 Agent policy 的使用来配置相应的 Beats 来收集数据。 

在实际的使用中,我们需要把 Elastic Agent 部署到一个单独的服务器中。它可以被用来收集该服务器的指标,日志等信息。我们甚至也可以使用 Elastic Agent 来从一些服务或各种 API 中收集数据并传入到 Elasticsearch 中:

Elastic Agent 是一种向主机添加日志、指标和其他类型数据的监控的单一、统一的方法。 它还可以保护主机免受安全威胁、从操作系统查询数据、从远程服务或硬件转发数据等等。 单个代理可以更轻松、更快速地在您的基础架构中部署监控。 每个代理都有一个可以更新的策略,以添加新数据源、安全保护等的集成。

如下图所示,Elastic Agent 可以监控部署它的主机,并且可以从无法直接部署的远程服务和硬件收集和转发数据。

在今天的练习中,我将使用 Elastic Stack 8.0 来进行展示。我使用的测试环境如下:

 我在 macOS 上安装 Elastic Stack 8.0,而在 Ubuntu OS 的机器上安装 Fleet server 及 Elastic Agent。

在 Elastic Stack 8.0 中使用 Elastic Agent 来摄入日志及指标

在 Elastic Stack 8.0 中使用 Elastic Agent 来摄入日志及指标_哔哩哔哩_bilibili

安装

在进行下面的练习之前,我们必须安装好 Elasticsearch 及 Kibana。我们可以参考之前的文章:

  • Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单

  • Elastic:使用 Docker 安装 Elastic Stack 8.0 并开始使用

我们按照上面的要求进行安装 Elasticsearch 及 Kibana。为了能够让 fleet 正常工作,内置的 API service 必须启动。我们必须为 Elasticsearch 的配置文件 config/elasticsearch.yml 文件配置:

xpack.security.authc.api_key.enabled: true

配置完后,我们再重新启动 Elasticsearch。针对 Kibana,我们也需要做一个额外的配置。我们需要修改 config/kibana.yml 文件。在这个文件的最后面,添加如下的一行:


xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcr'

如果你不想使用上面的这个设置,你可以使用如下的方式来获得:

./bin/kibana-encryption-keys generate

从上面的输出中,我们可以看出来,有三个输出的 key。我们可以把这三个同时拷贝,并添加到 config/kibana.yml 文件的后面。当然,我们也可以只拷贝其中的一个也可。我们再重新启动 Kibana。

这样我们对 Elasticsearch 及 Kibana 的配置就完成。 针对 Elastic Stack 8.0 以前的版本安装,请阅读我之前的文章 “Observability:如何在最新的 Elastic Stack 中使用 Fleet 摄入 system 日志及指标”。 

除此之外,Kibana 需要 Internet 连接才能从 Elastic Package Registry 下载集成包。 确保 Kibana 服务器可以连接到https://epr.elastic.co 的端口 443 上 。如果你的环境有网络流量限制,有一些方法可以解决此要求。 有关详细信息,请参阅气隙环境。

目前,Fleet 只能被具有 superuser role 的用户所使用。

配置 Fleet

使用 Kibana 中的 Fleet 将日志、指标和安全数据导入 Elastic Stack。第一次使用 Fleet 时,你可能需要对其进行设置并添加 Fleet Server。在做配置之前,我们首先来查看一下有没有任何的 integration 被安装:

 

我们打开 Fleet 页面:

由于我们还没有指定 Fleet server 的地址,所以我们点击 Edit hosts:

 在我们的配置中,我们想把 Fleet server 安装到 Ubuntu OS 的机器上,所以在上面的输入框中,我们输入 Ubuntu OS 的地址 192.168.0.4。端口地址 8220 是默认的地址。点击上面的 Save and apply settings:

 

在上面,我们查看 Elasticsearch 的地址也是对的。

点击 Agents 选项卡:

 对于我们自管型的不是中,有一个默认的 Default Fleet Server Policy。我们也可以创建一个自己的 Policy。

Fleet Server policy 到底是什么呢?

它是包含 Fleet Server 集成的 agent policy。 在自管型的集群中,第一次运行 Fleet 时会自动创建默认的 Fleet Server 策略。 如果你要部署一个自我管理的 Fleet Server 以使用我们托管的 Elasticsearch 服务,你必须明确创建一个包含 Fleet Server 集成的新代理策略。

由于我们的 Ubuntu OS 系统是 Linux 64-bit,我们选择上面的选项进行下载。我们在 Ubuntu 机器的 terminal 中打入如下的命令:

curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-x86_64.tar.gz
liuxg@liuxgu:~/fleet$ curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-x86_64.tar.gz% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  256M  100  256M    0     0  9775k      0  0:00:26  0:00:26 --:--:-- 9257k

 我们使用如下的命令来进行安装:

tar xzf elastic-agent-8.0.0-linux-x86_64.tar.gz

 

在上面,我选择 “Quick Start” 来进行部署。在实际的生产环境中,被推荐的办法是使用 “Production” 选项来部署以确保 Fleet server 和 Elastic Agent 之间的安全连接。详细阅读请参阅文章 “Observability:在生产环境中配置 Fleet Server 和 Elastic Agent 之间的安全”。点击上面的 Generate service token:

在上面的界面中,我们可以看到它一直显示 Waiting for Fleet Server to connect ...。我们点击上面的两个文档按钮以拷贝并保存 Service token。 我们在 Ubuntu 机器下运行上面的命令:

我们再次回到 Kibana 的界面:

 

上面显示 Fleet Server connected。它清楚地表明我们的 Fleet 已经成功地连接起来了。我们点击上面的 Continue:

上面显示我们的 Agents 已经成功地部署,并且它的状态是 Healthy 的。

如果你有多个 Fleet Server,建议你为每个 Fleet Server 创建一个唯一的 service token。你可以参考链接 elasticsearch-service-tokens 来生成 service token。有关 Fleet Server 的更多信息,请参考链接。

在上面,我们已经成功地为 Default Fleet Server policy 创建了一个 Agent。它安装了 Fleet Server。这个是必须的步骤,一个 Fleet Server 可以管理许多的 Agents。有关 Fleet 的架构更多信息,请参阅文章 “Observability:运用 Fleet 来轻松地导入 Nginx 日志及指标”。

添加 Elastic Agent 到 Fleet

Elastic Agent 是一个单一的统一代理,你可以将其部署到主机或容器以收集数据并将其发送到 Elastic Stack。 在后台,Elastic Agent 运行你的配置所需的 Beats shippers 或 Elastic Endpoint。

要将日志和指标发送到 Elastic Stack。你首先要在那个机器上下载 Elastic Agent,并解压缩:

  • macOS
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-darwin-x86_64.tar.gz
tar xzvf elastic-agent-8.0.0-darwin-x86_64.tar.gz
  • Linux OS
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.0.0-linux-x86_64.tar.gz
  • Windows
# PowerShell 5.0+
wget https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-windows-x86_64.zip -OutFile elastic-agent-8.0.0-windows-x86_64.zip
Expand-Archive .\elastic-agent-8.0.0-windows-x86_64.zip
  • DEB
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-amd64.deb
sudo dpkg -i elastic-agent-8.0.0-amd64.deb
  • RPM
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-x86_64.rpm
sudo rpm -vi elastic-agent-8.0.0-x86_64.rpm

更多关于 Elastic Agent 的下载信息,请参阅官方链接 Download Elastic Agent。

针对我们的情况,我们需要手机的是 Ubuntu OS 上的日志及指标,所以我们下载的是 Linux 的版本。在我们之前安装 Fleet Server 时已经解压缩,并运行了,所以我们并不需要做任何其它特别的。

我们接下来添加 Agent:

 

在上面,我们选择 Default policy,它目前含有一个叫做 system 的 integration。你也可以创建自己的 policy。选择 Default policy 会让我们的练习进展更快。我们按照 Go to download page 去下载相应的 Agent。这个和我们之前的 Fleet Server 是一样的页面。这里就不再累述了。

我们点击上面的文档按钮来进行注册:

sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw==

请注意,在上面 http://192.168.0.4:8220 是我们的 Fleet Server 的地址,也就是说 Agent 的注册是直接发向 Fleet Server 的。当然如果你是其它的平台,你需要在上面的页面进行选择。

运行上面的命令:

因为之前,我们在安装 Fleet Server 的时候,已经按照好 Elastic Agent 了,所以会出现上面的错误信息。如果你还有其它的 Linux 机器,你可以通过上面的方法来注册你的 Elastic Agent。

现在,我把我的一台树莓派的 Ubuntu OS 机器开起来,我们使用如下的方法来进行注册:

liuxg@liuxgarm:~/fleet$ curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-arm64.tar.gz% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  241M  100  241M    0     0  5615k      0  0:00:44  0:00:44 --:--:-- 5953k
liuxg@liuxgarm:~/fleet$ ls
elastic-agent-8.0.0-linux-arm64.tar.gz
liuxg@liuxgarm:~/fleet$ tar xzf elastic-agent-8.0.0-linux-arm64.tar.gz 
liuxg@liuxgarm:~/fleet$ cd elastic-agent-8.0.0-linux-arm64/
liuxg@liuxgarm:~/fleet/elastic-agent-8.0.0-linux-arm64$ sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw==
[sudo] password for liuxg: 
Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:Y
Error: Error: connection to fleet-server is insecure, strongly recommended to use a secure connection (override with --insecure)
For help, please see our troubleshooting guide at https://www.elastic.co/guide/en/fleet/8.0/fleet-troubleshooting.html
Error: enroll command failed with exit code: 1
For help, please see our troubleshooting guide at https://www.elastic.co/guide/en/fleet/8.0/fleet-troubleshooting.html
liuxg@liuxgarm:~/fleet/elastic-agent-8.0.0-linux-arm64$ sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw== --insecure
Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:Y
{"log.level":"warn","@timestamp":"2022-02-16T16:34:20.428+0800","log.logger":"tls","log.origin":{"file.name":"tlscommon/tls_config.go","file.line":105},"message":"SSL/TLS verifications disabled.","ecs.version":"1.6.0"}
{"log.level":"info","@timestamp":"2022-02-16T16:34:20.544+0800","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":456},"message":"Starting enrollment to URL: http://192.168.0.4:8220/","ecs.version":"1.6.0"}
{"log.level":"info","@timestamp":"2022-02-16T16:34:21.501+0800","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":256},"message":"Successfully triggered restart on running Elastic Agent.","ecs.version":"1.6.0"}
Successfully enrolled the Elastic Agent.
Elastic Agent has been successfully installed.

如上所示,因为我们尝试去注册一个使用自签名证书的 Fleet Server,在上面我们出现了一个错误。我在上面的命令后面添加一个选项 --insecure:

sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw== --insecure

那么我们这次运行是成功的。我们回到 Kibana 的界面:

这个时候,我们看到了一个新增加的叫做 liuxgarm 的 agent。在上面的两个 agent 中,Fleet server 是运行于 liuxgu 机器上的。如过我们想收集这个机器的日志及指标的话,我们需要在 Default Fleet Server policy 中去添加 System integration。

这我们的 liuxgu agent 就可以收集 system 指标及日志了。

我们点击 Data streams:

我们可以看到两个机器都有日志信息。

这篇关于Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593973

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念