Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

这篇具有很好参考价值的文章主要介绍了Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

  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 中并进行分析。在今天的演示中,我将使用如下测试环境:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

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

如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

准备日志

为了方便,我们使用我之前的一个教程写的文章里的例子来生成日志。我使用 Python 应用来生成日志。请参考文章 “Beats: 使用 Filebeat 进行日志结构化 - Python”。我们按照如下的步骤在 Ubuntu OS 的机器上来运行应用:

liuxg@liuxgu:~/python/logs$ pwd
/home/liuxg/python/logs
liuxg@liuxgu:~/python/logs$ ls
createlogs.py  createlogs_1.py  createlogs_2.py  filebeat_json.yml  json_logs  test.log
liuxg@liuxgu:~/python/logs$ python createlogs_2.py 
liuxg@liuxgu:~/python/logs$ cat json_logs 
{"user_name": "arthur", "id": 42, "verified": false, "event": "logged_in"}
{"user_name": "arthur", "id": 42, "verified": true, "event": "changed_state"}

可以看出来在我的应用目录里会生成一个叫做 json_logs 的文件。它的内容如上所示。上面的文档路径及文件名将在下面的配置中要用到。我们的日志路径是:

/home/liuxg/python/logs/json_logs

安装

 在进行下面的练习之前,我们必须安装好 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'

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

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

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

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中从上面我们可以看出来没有任何安装的 integrations。

我们打开 Fleet 页面:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中  

我们接下来添加 Agent:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

 

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中 上面显示我们的 Fleet Sever policy 被成功地创建了。我们需要把我们的 Fleet Server 安装到 Ubuntu OS 机器上。 

 Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

我们的目标机器是 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 中的提示来安装:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

 Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

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

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

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

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

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

在上面,我们把 Ubuntu OS 上的日志的路径添加进去:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

在上面,我们可以看到新增加的 log-1 集成。 

如果你之前已经生成过 json_logs 日志文件,我们可以删除当前目录的文件,并再次生成该文件:

liuxg@liuxgu:~/python/logs$ pwd
/home/liuxg/python/logs
liuxg@liuxgu:~/python/logs$ ls
createlogs.py  createlogs_1.py  createlogs_2.py  filebeat_json.yml  json_logs  test.log
liuxg@liuxgu:~/python/logs$ rm json_logs 
liuxg@liuxgu:~/python/logs$ python createlogs_2.py 

我们或者使用如下的命令来追加一写文档到 json_logs 文件中:

liuxg@liuxgu:~/python/logs$ pwd
/home/liuxg/python/logs
liuxg@liuxgu:~/python/logs$ cp json_logs temp
liuxg@liuxgu:~/python/logs$ cat temp >> json_logs 
liuxg@liuxgu:~/python/logs$ cat json_logs 
{"user_name": "arthur", "id": 42, "verified": false, "event": "logged_in"}
{"user_name": "arthur", "id": 42, "verified": true, "event": "changed_state"}
{"user_name": "arthur", "id": 42, "verified": false, "event": "logged_in"}
{"user_name": "arthur", "id": 42, "verified": true, "event": "changed_state"}

在上面,我们追加了两个文档到 json_logs 里去了。

我们接下来回到 Discover 去查看:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

 在搜索框中输入 json_logs,我们发现在过去 15分钟之内有两个新摄入的文档。我们再次查看 message 的内容:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

显然,我们可以看到 message 字段显示的就是我们之前在日志中的信息。它是一个 JSON 格式的信息。这个虽然好,但是它不是结构化的日志信息。我们想要的是 user_name 为文档的一个字段,id 为另外一个字段这样的结构化信息。在之前的 Filebeat 中,我们可以轻松地使用 Filebeat 所提供的 processors 或者就像如同在文章 “Beats: 使用 Filebeat 进行日志结构化 - Python” 使用的那样。我们可以使用 Filebeat input type 所提供的固有功能来完成。再者,我们还可以使用 Elasticsearch 集群的 ingest node 来完成。

那么针对我们目前的 Elastic Agent 摄入方式,我们该如何结构化这个 message 信息呢?答案是使用 ingest pipeline。

我们在 Kibana 的 Dev Tools 中创建如下的 ingest pipeline:

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "description": "structure a JSON format message",
    "processors": [
      {
        "json": {
          "field": "message",
          "target_field": "json_fields"
        }
      }
    ]
  },
  "docs": [
    {
      "_source": {
        "message": "{\"user_name\": \"arthur\", \"id\": 42, \"verified\": false, \"event\": \"logged_in\"}"
      }
    }
  ]
}

在上面,我们通过 _simulate 来测试我们的 pipeline:

{
  "docs": [
    {
      "doc": {
        "_index": "_index",
        "_id": "_id",
        "_source": {
          "json_fields": {
            "verified": false,
            "id": 42,
            "event": "logged_in",
            "user_name": "arthur"
          },
          "message": """{"user_name": "arthur", "id": 42, "verified": false, "event": "logged_in"}"""
        },
        "_ingest": {
          "timestamp": "2022-07-01T00:03:30.040008Z"
        }
      }
    }
  ]
}

如上所示,我们的 josn processor 能够非常出色地完成 message 的结构化,并把结构化的信息保存于一个叫做 json_fields 的字段中。在完成上面的模拟后,我们使用如下的命令来创建一个 pipeline:

PUT _ingest/pipeline/message_structure
{
  "description": "structure a JSON format message",
  "processors": [
    {
      "json": {
        "field": "message",
        "target_field": "json_fields"
      }
    }
  ]
}

在上面,我们创建了一个叫做 message_structure 的 ingest pipeline。

我们接下来展示如何在 custom logs 里来使用这个 ingest pipeline。我们重新打开 log-1 集成:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

在上面,选定默认的 generic 为 dataset 的名称,那么最终形成的索引名称将会是 logs-generic-*。我们也可以设定自己想要的 dataset,比如 my-app。如上所示,我们在 Custom congfiguration 里填写 pipeline 的定义。点击上面的 Save integration: 

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

上面显示,我们的更新完毕。

我们接下来再次删除在日志目录下的 json_logs 文件,并再次运行 python 应用:

liuxg@liuxgu:~/python/logs$ pwd
/home/liuxg/python/logs
liuxg@liuxgu:~/python/logs$ ls
createlogs.py  createlogs_1.py  createlogs_2.py  filebeat_json.yml  json_logs  test.log
liuxg@liuxgu:~/python/logs$ rm json_logs 
liuxg@liuxgu:~/python/logs$ python createlogs_2.py 

 我们再次回到 Discover 界面来进行查看:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

我们可以看到最新的日志信息被收集起来了。我们展开该文档进行查看:

Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

我们可以看到 message 的信息被结构化了,并且保存于一个叫做 json_fields 的字段中。 

好了,今天我的分享就写到这里。希望对大家从 Beats 转换到 Elastic Agents 的使用提供一个平滑的过度。在未来,Elastic 更推崇 Elastic Agents 的使用虽然之前的 Beats 方式还可以继续使用。使用 Elastic Agents 可以使我们的 Agents 更容易集中管理。文章来源地址https://www.toymoban.com/news/detail-430739.html

到了这里,关于Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Observability:为 Logstash 输出配置 SSL/TLS - Elastic Agent

    在我之前的文章 “Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch”,我详细介绍了如何使用 Elastic Agents 采集数据并把数据通过 Logstash 发送至 Elasticsearch。细心的开发者可能注意到从 Elastic Agents 到 Logstash 直接的链接它不是加密的。这个在实

    2024年02月11日
    浏览(27)
  • Elastic 8.12:AI Assistant for Observability 正式发布,更新至 Apache Lucene 9.9

    作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic® 8.12 全面上市。 8.12 版本的两个最重要的组成部分包括 Elastic AI Assistant for Observability 的 正式发布版 和 Apache Lucene 9.9 的更新(有史以来最快的版本),其中 Elastic 为服务客户用例而贡献了关键创新。 解决方案的其

    2024年01月19日
    浏览(24)
  • Logstash:如何使用 Logstash 解析并摄入 JSON 数据到 Elasticsearch

    在我之前的文章 “Logstash:Data 转换,分析,提取,丰富及核心操作” 有涉及到这个话题。今天我想使用一个具体的例子来更深入地展示。   我们先来把如下的数据拷贝下来,并保存到一个叫做 sample.json 的文件中。我们可以把这个文件置于 Logstash 的安装根目录下。 sample.j

    2024年02月02日
    浏览(31)
  • 【Elastic (ELK) Stack 实战教程】11、使用 ElastAlert 实现 ES 钉钉群日志告警

    目录 一、ElastAlert 概述 二、安装 ElastAlert 2.1 安装依赖 2.2 安装 Python 环境 2.3 安装 ElastAlert 2.4 ElastAlert 配置文件 2.5 创建 ElastAlert 索引 2.6 测试告警配置是否正常 三、ElastAlert 集成钉钉 3.1 下载 ElastAlert 钉钉报警插件 3.2 创建钉钉机器人 3.3 请求 nginx 频繁出现 401 场景 3.3.1 配

    2023年04月23日
    浏览(43)
  • 我们如何在 Elasticsearch 8.6、8.7 和 8.8 中加速数据摄入

    作者:Adrien Grand, Joe Gallo, Tyler Perkins 正如你们中的一些人已经注意到的,Elasticsearch 8.6、8.7 和 8.8 在各种数据集上带来了良好的索引加速,从简单的到繁重的 KNN 向量,以及摄取管道繁重的摄取工作负载。 摄取涉及许多组件 —— 运行摄取管道、反转内存中的数据、刷新

    2024年02月15日
    浏览(32)
  • 【elk查日志 elastic(kibana)】

    每次查日志,我都需要别人帮我,时间长了总觉得不好意思,所以这次下定决心好好的梳理一下,怎么查日志。我们查日志的网页是叫elastic,平时同事也都是叫elk。 我直接在网上搜elastic,是搜不到这个页面的具体使用流程的,我们需要搜索kinaba才可以。 为什么会出现这种情

    2024年02月22日
    浏览(36)
  • Elastic 之网络设备日志收集

    如何收集网络设备日志?收集日志后如何对日志进行分析判断网络中是否存在隐患?笔者通过Elastic + rsyslog 实现。 Debian 11 Elastic 8.5 需要两台服务器,设备数量不多可以安装再一台服务器上。 一台安装Elasticsearch + Kibana 一台安装Logstansh + resyslog 使用Elastic自带JVM环境。 什么是

    2024年02月14日
    浏览(27)
  • 运用 Elastic Stack 收集 docker 容器日志

    Elastic Stack 在收集日志方面有很多的方面的应用。在今天的文章中,我将使用 docker 来安装 Elastic Stack。我将演示如何使用 docker 安装 Filebeat 并收集容器的日志。 在我之前的文章 “Beats:为 Filebeat 配置 inputs”,我展示了如何使用 Filebeat 来收集 container 里的日志数据。在那篇文

    2023年04月08日
    浏览(27)
  • 简化日志数据管理:利用 Elastic 灵活路由的力量

    作者:Felix Barnsteiner,Nicolas Ruflin 在 Elasticsearch 8.8 中,我们在技术预览中引入了重新路由处理器(reroute processor),它可以根据灵活的路由规则将文档(例如日志)发送到不同的数据流。 使用 Elastic 可观察性时,你可以更精细地控制数据的保留、权限和处理,并享受数据流命

    2024年02月10日
    浏览(32)
  • Elasticsearch:如何使用自定义的证书安装 Elastic Stack 8.x

    在我之前的文章 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch”,我详细描述了如何在各个平台中安装 Elastic Stack 8.x。在其中的文章中,我们大多采用默认的证书来安装 Elasticsearch。在今天的文章中,我们用自己创建的证书一步一步地来安装 Elastic Stack 8.x。我们可以参

    2024年02月08日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包