Elasticsearch:如何在 Elastic Agents 中配置 Beats 来采集定制日志

news2024/11/14 15:22:18

在我之前的文章 “Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0”,我详细地描述了如何安装 Elasticsearch,Stack 及 Elastic Agents 来采集系统日志及指标。很多开发者可能会有疑问,在我们的实际使用中,我们更多的可能是需要采集定制的应用日志,而不是系统日志。那么在这个时候,我们该如何使用 Elastic Agents 来把这些日志摄入呢?在以前的系统中,我们可以使用如下的几种方式来采集日志:

  1.  我们可以直接使用 Beats 把数据传入到 Elasticsearch 中。对数据的处理,我们可以使用 Beats 的 processors 来处理数据,或者通过 Elasticsearch 集群的 ingest nodes 来处理数据。
  2. 我们可以通过 Beats => Logstash => Elasticsearch。针对这种情况,我们可以分别在 Beats,Logstash 或者 Elasticsearch 集群的 ingest nodes 来处理数据。
  3. 我们可以直接使用各种编程语言来直接向 Elasticsearch 集群进行写入。我们可以使用 Elasticsearch 集群的 ingest nodes 来处理数据。

在今天的文章里,我们来详细地描述如何使用 Elastic Agents 把应用中的定制日志摄入到 Elasticsearch 中并进行分析。在今天的演示中,我将使用如下测试环境:

针对 Elastic Agents 采集数据,究其本质,它也是采用相应的 Beats 比如 Filebeat 来采集日志。我们可以采用 Elasticsearch 集群中的 ingest nodes 来处理数据。这个在我之前的文章 “Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中” 已经讲到了。在今天的文章中,我来讲该如何配置 Beats 的 processors 来及其相关的设置。关于如何配置 Filebeat 来进行数据采集,请阅读我之前的文章 “Beats:使用 Elastic Stack 记录 Python 应用日志”。

Elastic Agents vs Filebeat

  • Elastic-Agent 是一种单一、统一的方式,可以为主机添加对日志、指标和其他类型数据的监控。
  • Filebeat 是用于转发和集中日志数 据的轻量级采集器。

我应该使用哪一个? Elastic-Agent 提供最好的体验,一切都可以通过 Kibana 配置,你可以在 Kibana 上看到 Elastic-Agent 的日志以及它的健康状态。如果由于某种原因你无法运行 Elastic-Agent,Filebeat 仍然是一个选项。

Structured logging 几乎已经成为行业标准,可以轻松理解和解析日志。 虽然 Elastic-Agent 提供了与许多应用程序的集成,允许轻松摄取和解析日志,但当涉及到我们自己的应用程序时,还需要做一些工作。

我将使用 Elastic Stack 8.5.2 来进行安装并展示。

准备日志

我在上面的 Ubuntu OS 机器上的目录 /tmp 下创建如下的文件 sample.log:

liuxg@liuxgu:/tmp$ pwd
/tmp
liuxg@liuxgu:/tmp$ cat sample.log
{"level":"info","time":"2022-11-28T12:00:00+01:00","message":"Starting Advent Calendar demo", "status_code": 200}
{"level":"info","time":"2022-11-28T12:00:32+01:00","message":"First line", "status_code": 300}
{"level":"debug","time":"2022-11-28T12:08:32+01:00","message":"Second line", "status_code": 400}
{"level":"error","time":"2022-11-28T12:09:32+01:00","message":"Third line", "status_code": 500}
{"level":"info","time":"2022-11-28T12:10:32+01:00","message":"Forth line", "status_code": 100}
{"level":"warn","time":"2022-11-28T12:11:32+01:00","message":"Fith line", "status_code": 200}

我们在这里有三个字段:

  • level:这是日志级别,我们希望将其过滤为 keyworkd(例如:info、error、debug 等)。
  • time:是写入日志行的时间,我们需要告诉 Elastic-Agent 使用它作为日志条目的时间而不是摄取时间。
  • message:消息本身,我们将其视为自由文本字段。
  • status_code:模拟 HTTP 状态代码的数字字段。

安装

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

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch
  • 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'

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

从上面的输出中,我们可以看出来,有三个输出的 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 被安装:

从上面我们可以看出来没有任何安装的 integrations。

我们打开 Fleet 页面:

  

我们接下来添加 Agent:

 上面显示我们的 Fleet Sever policy 被成功地创建了。我们需要把我们的 Fleet Server 安装到 Ubuntu OS 机器上。 

 

我们的目标机器是 Linux OS。我们点击上面的拷贝按钮,并在 Linux OS 上进行安装:

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.3.0-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.3.0-linux-x86_64.tar.gz
cd elastic-agent-8.3.0-linux-x86_64
sudo ./elastic-agent install \
  --fleet-server-es=https://192.168.0.3:9200 \
  --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE2NTY1Njg5MTE1NTk6clBaX1pidXNTdTZXc2Fvb0ROcXVhUQ \
  --fleet-server-policy=fleet-server-policy \
  --fleet-server-es-ca-trusted-fingerprint=764021beb30446365d829986a362ffba82d03f4ff7861839a60f7951b8e83e7a

我们按照 Kibana 中的提示来安装:

 

等过一段时间,我们可以看到这个运用于 192.168.0.4 机器上的 Agents 的状态也变为 healthy:

由于我们的 Elastic Agent 和 Fleet Server 是在一个服务器上运行的,所以,我们直接在 Fleet Server Policy 里添加我们想要的 integration。如果你的 Elastic Agent 可以运行于另外的一个机器上,而不和 Fleet Server 在同一个机器上,你可以创建一个新的 policy,比如 logs。然后让 agent 赋予给这个 新创建的 policy。

我们直接在这个 Fleet Server Policy 里添加一个叫做 custom log 的集成:

  

  

在幕后(在撰写本文时)Elastic-Agent 将运行一个 Filebeat 实例,因此这些可选配置的所有文档都是 Filebeat 的文档。 Custom Log 集成在后台使用 Log input,因此我们感兴趣的文档是:

  • Processors:顾名思义,它们可以丰富、修改我们的事件。
  • Custom configurations:好吧,它们是我们输入的自定义配置。

在上面,我们需要了解如下两个链接的文档:

  • Processors
  • JSON

Procsessors

我们将需要两个处理器:

  • timestamp:它将解析我们的时间戳并在最终事件上正确设置它
  • drop_fields:这个是可选的,但如果我们已经在事件中正确设置了@timestamp,就不需要保留时间字段。
- timestamp:
    field: time
    layouts:
      - '2006-01-02T15:04:05Z07:00'
    test:
      - '2022-08-31T12:07:32+02:00'
- drop_fields:
    fields:
      - time

这里唯一需要注意的是,时间戳处理器仍处于测试阶段,但它足够稳定,可以使用。 无论如何,在使用它时请记住这一点。

Custom configuration

自定义配置是关于告诉日志输入我们希望它将数据解析为 JSON,覆盖事件中已经存在的任何键,如果有错误,向最终事件添加一个错误键,这样我们就可以知道发生了什么。

json:
  keys_under_root: true
  add_error_key: true
  message_key: message
  overwrite_keys: true

在上面,我们使用 Filebeat 的 processors 来对数据进行加工。如果你对这个不是很熟的话,请参考我之前的文章 “Beats:Beats processors”。

同时,针对 Filebeat 的 input 的配置,请参考文章 “Beats:使用 Elastic Stack 记录 Python 应用日志”。

Mappings

让我们确保 Elasticsearch 正确理解我们的数据,因为我们需要为我们的数据设置映射。

前往 Fleet > Agent Policies,单击 policy 名称,然后单击 integration 名称。 在下一个屏幕上,转到 Change defaults > Advanced options,在最底部有 Mappings 部分。

  

  

然后点击 Next,直到 Review 这一步,再点击 Save component template

在 Kibana 中查看数据

前往 Discover,搜索一些数据,展开其中一个文档,你将看到正确映射的字段。

  

  

我们甚至可以针对 status_code 进行一个搜索:

  

好了,我今天的分享就到这里。希望大家对 Elastic Agents 的使用会更加熟练。在实际的操作中,根据自己的情况进行相应的配置。

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

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

相关文章

陈都灵《我们当打之年》热播《关索岭》上热搜,温州人爱望京卡牌

最近,电视连续剧《我们的当打之年》,正在各大卫视台热播,一起热起来的还有该剧主演陈都灵。说起主演陈都灵,她虽然不是正宗的电影学院科班出身,但是她的演技却透露着灵气,也给人以真实的感觉。 陈都灵无疑是…

[附源码]Python计算机毕业设计Django学习帮扶网站设计与实现

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

2023年哪些渲染器更好用?3D新手适合的渲染器汇总

现在很多人都使用3D软件来创作自己的作品,所以渲染器的使用必不可少。有许多流行的渲染器,包括 V-Ray、Octane、Arnold、Corona、RedShift。对于许多 3D 新手来说,哪种渲染器最好? 这些渲染器的原理基本相同,只是操作…

大学免费查题接口系统

大学免费查题接口系统 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点…

地图信息,障碍判断以及寻路算法(A星算法,B星算法和蚁群算法等)

一、广度优先遍历和深度优先遍历 在学习寻路算法之前,我们先来了解一下广度优先遍历和深度优先遍历. 什么是广度优先遍历? 广度优先遍历(breadth first search)是一个万能的算法. 广度优先是从初始状态一层一层向下找,直到找到目标为止。 广度优先遍历&#x…

Elasticsearch入门(一)基本介绍与安装

介绍: Elaticsearch:简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理…

STL-常用遍历算法

目录 1.for_each 功能描述 函数原型 2.transform 功能描述 函数原型 1.for_each 功能描述 实现容器遍历 函数原型 for_each(itertor beg,iterator end,_func); //遍历算法 遍历容器元素 //beg 开始迭代器 //end 结束迭代器 //_func函数或者函数对象 代码 #include <i…

磕磕绊绊的双非硕秋招之路小结

秋招&#xff0c;真的再见了。 ⭐️我叫恒心&#xff0c;一名喜欢书写博客的研究生在读生。 原创不易~转载麻烦注明出处&#xff0c;并告知作者&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 这是一篇近期会不断更新的博客欧~~~ 有什么问题的小伙伴 欢迎留言提问欧 12…

Pr:导出设置之音频

H.264、HEVC&#xff08;H.265&#xff09;和 MPEG2-DVD 等格式支持多种音频格式。对于这些格式&#xff0c;我们可以通过导出设置中的音频 AUDIO模块导出为不同的音频格式。音频格式设置Audio Format Settings音频格式Audio FormatH.264 默认采用 AAC 音频格式。AAC&#xff0…

RFID固定资产定位管理系统-智慧资产人员可视化管理系统

概述 我司&#xff08;东识科技DONWIT&#xff09;RFID资产可视化管理系统是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID固定资产进行统一管理、分析的信息化、智能化、规范化的系统。 1.1东识RFID资产管理系统原理 受控样品&#xff08;或…

微服务开发平台 Spring Cloud Blade 部署实践

本文介绍使用 Rainbond 快速部署 Spring Cloud Blade 微服务平台。Spring Cloud Blade 是一个由商业级项目升级优化而来的微服务架构&#xff0c;采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建&#xff0c;完全遵循阿里巴巴编码规范。提供基于 React 和 Vue 的两个前…

自定义RBAC(2)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 上一次把DAC、MAC、PBAC这三个都一口气介绍完了&#xff0c;本想一口气把RBAC也说完。想了想&#xff0c;饭还是要一口口吃&#xff0c;一次吃太多会消化不良&am…

Python | 今年世界杯哪个队最有可能夺冠?!

文章目录&#x1f3f3;️‍&#x1f308; 1. 数据&#x1f3f3;️‍&#x1f308; 2. 绘图2.1 绘制南丁格尔玫瑰图2.2 设置cloor_bar2.3 添加文字2.4 添加注释2.5 添加标题2.6 词云&#x1f3f3;️‍&#x1f308; 3. 更多可视化项目源码数据大家好&#xff0c;我是 &#x1f4…

Sqoop数据导出 第1关:Sqoop数据导出语法学习

为了完成本关任务&#xff0c;你需要掌握&#xff1a; 1、Sqoop 导出( export )的基本参数。 2、配置环境。 Sqoop 导出( export )的基本参数。 Sqoop 能够让 Hadoop 上的 HDFS 和 Hive 跟关系型数据库之间进行数据导入与导出&#xff0c;多亏了import和export这两个工具。本…

【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、序列-序列机制概述 Seq2Seq 是一个 Encoder-Decoder 结构的神经网络&#xff0c;它的输入是一个序列(Sequence)&#xff0c;输出也是一个序列(Sequence)。在 Encoder 中&#xff0c;将可变长度的序列转变为固定长度的向…

【RCNN系列】Fast RCNN论文总结

目标检测论文总结 【RCNN系列】 RCNN Fast RCNN 文章目录目标检测论文总结前言一、Pipeline二、模型设计1.改进点2.RoI pooling layer3.Backbone初始化4.采样策略5.损失函数6.其他小细节三、总结前言 一些经典论文的总结。 一、Pipeline 利用Selective Search&#xff08;比较…

Unity——通过点击鼠标进行场景切换

前记 通过点击按钮进行场景切换请参考&#xff1a; unity——通过点击按钮进行场景切换_行秋的博客-CSDN博客1.准备两个示例场景 2.点击File—>Build Settings...&#xff0c;将场景添加到视图中&#xff0c;点击Build。选择文件夹进行保存。&#xff08;建议将文件打包到…

linux命令二

12.whoami&#xff0c;whereis&#xff0c;which&#xff0c;id //whoami:确认自己身份 //whereis:查询命令所在目录以及帮助文档所在目录 //which:查询该命令所在目录(类似whereis) //id:打印出自己的UID以及GID。(UID:用户身份唯一标识。GID:用户组身份唯一标识。每一个用…

程序人生——css绘制世界杯足球场

写在之前的话 花有重开日&#xff0c;人无再少年。 疯狂无大小&#xff0c;热爱即疯狂&#xff01; 足球⚽️&#xff0c;是我大学时期的一门选修课&#xff0c;足球需要场地&#xff0c;场地绘制现在就开始&#xff01;&#xff01;&#xff01; 四年一次的世界杯再卡塔尔进行…

电影院网站设计毕业设计,电影院网站的设计与实现,电影院售票系统源码毕设作品参考

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的电影院购票选座系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理…