使用 Elastic-Agent 或 Beats 将 Journald 中的 syslog 和 auth 日志导入 Elastic Stack

作者:来自 Elastic TiagoQueiroz

我们在 Elastic 一直努力将更多 Linux 发行版添加到我们的支持矩阵中,现在 Elastic-Agent 和 Beats 已正式支持 Debian 12!

本文演示了我们正在开发的功能,以支持使用 Journald 存储系统和身份验证日志(auth logs)的 Linux 发行版。

一些 Linux 发行版(如 Debian 12 )已经完全放弃了传统的系统日志文件,因此现在获取这些日志的唯一方法是读取 Journald

使用 Elastic-Agent 摄取系统日志

Elastic-Agent 的系统集成 可从服务器收集系统日志和指标。从 1.63.0 版(Elastic-Agent 8.17.0) 开始,它还支持从 Journald 摄取日志。

我们将在 Debian 12 VM 上进行示例。不过,如果你想在其他 Linux 发行版上通过 Journald 收集系统日志,只需稍作配置调整即可。

简而言之:

只需在 Debian 12 VM 上安装 Elastic-Agent 8.17.0 ,添加系统集成,你就能从 Journald 获取日志。如果你在 Debian 11 等其他发行版上安装 Elastic-Agent,它将读取日志文件。就是这么简单!

详细解析:

这并不是 "魔法",而是对 Elastic-Agent 功能的巧妙利用。在进入具体操作之前,先来了解它是如何工作的。

系统集成中的 syslogauth 数据流 现在新增了一个 Journald 输入,该输入在默认配置下 仅在 Debian 12 和 Amazon Linux 2023 上运行 。现有的日志输入则相反,它不会在 Debian 12 和 Amazon Linux 2023 上运行。

Elastic-Agent 集成支持条件( conditions)判断 ,用于决定是否运行某个输入。例如,系统集成已经使用此功能来防止 winlog 输入在 Linux 或 macOS 上运行。现在,我们利用它来决定在不同的 Linux 发行版 上运行 Journald 还是传统日志输入

如果查看 系统集成的配置 ,你会发现一个新的 conditions 字段,其中 Journald 输入的配置 类似于:

复制代码
${host.os_version} == "12 (bookworm)" or (${host.os_platform} == "amzn" and ${host.os_version} == "2023")

如果该条件的评估结果为 true,则输入将运行;否则,输入不会运行。

要在不同的 Linux 发行版上运行该输入,只需编辑条件以匹配你的需求。如果将其留空,输入将始终运行。

注意! 如果你在同时支持 传统日志文件Journald 的 Linux 发行版上同时运行 日志输入Journald 输入 ,你将会 产生重复数据 ,系统仪表板也会显示 重复的数值!

以下是 集成配置 的示例:

配置完成后(或接受默认设置),选择是将其添加到新策略 还是现有策略

然后点击 "Save and continue"(保存并继续) ,并继续执行 "Add Elastic Agent to your hosts"(将 Elastic Agent 添加到你的主机)

然后按照说明使用 Linux Tar 添加代理,你需要在主机上运行以下命令:

复制代码
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.17.0-linux-x86_64.tar.gz 
tar xzvf elastic-agent-8.17.0-linux-x86_64.tar.gz
cd elastic-agent-8.17.0-linux-x86_64
sudo ./elastic-agent install --url=https://<YOUR FLEET SERVER ADDRESS>:8220 --enrollment-token=<YOUR ENROLMENT TOKEN>

安装 Elastic-Agent 后,进入其 Overview 页面,你会看到 Journald 输入 正在运行,而 日志输入 (log input)不可用:

如何为我的主机自定义条件( condition)?

这很简单!主机提供商( host provider)的文档 会列出它提供的键。例如,在上面的示例中,我们使用了 host.os_versionhost.os_platform

如果你想检查主机实际报告的值,可以按照以下步骤操作:

  1. 进入 Kibana ,依次导航到:
    Management -> Fleet -> Agents

  2. 选择你的代理,然后点击 "Diagnostics"

  3. 点击 "Request diagnostics .zip" 请求诊断文件

  4. 诊断文件生成后,下载并解压 ZIP 压缩包

  5. 找到 variables.yml 文件

  6. host 键下,你可以看到主机提供商报告的所有 键值对,例如:

    复制代码
      host:
         architecture: x86_64
         id: ad88a1859979427ea1a7c24f0ae0320a
         ip:
             - 127.0.0.1/8
             - ::1/128
         mac:
             - 08:00:27:5e:8a:a5
         name: debian12
         os_family: debian
         os_platform: debian
         os_version: 12 (bookworm)
         platform: linux

那么独立运行的 Beats 呢?

很高兴你问这个问题!是的,Filebeat 也支持 Debian 12 或任何使用 Journald 的 Linux 发行版 。从 8.17.0 版本开始,system 模块system module )就已经支持 Journald。

不过,Filebeat 的配置方式略有不同 ,因为它是按主机配置的,需要手动编辑配置文件。因此,你需要:

  1. 启用 system 模块
  2. 在 syslog 和 auth 这两个 fileset 配置中,将 var.use_journald 设置为 true

注意: 你需要以 root 身份执行这些步骤,因为读取部分 Journal 日志需要 root 权限

操作步骤

  • 下载并解压 tar.gz

  • 配置 filebeat.yml ,填写你的 Elasticsearch 和 Kibana 凭据(Kibana 凭据用于设置数据视图、仪表板等)

  • 确保启用了相关模块,例如:

    filebeat.config.modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false
    reload.period: 10s

  • 通过运行 ./filebeat test output 来测试与输出的连接:

    root@Debian12:~/filebeat-8.17.0-linux-x86_64# ./filebeat test output
    elasticsearch: https://advent-calendar-deployment.elastic-cloud.com:443...
    parse url... OK
    connection...
    parse host... OK
    dns lookup... OK
    addresses: 35.235.72.223
    dial up... OK
    TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.3
    dial up... OK
    talk to server... OK
    version: 8.17.0
    root@Debian12:~/filebeat-8.17.0-linux-x86_64#

  • 通过运行 ./filebeat modules enable system 来启用 system 模块:

    root@Debian12:~/filebeat-8.17.0-linux-x86_64# ./filebeat modules enable system
    Enabled system
    root@Debian12:~/filebeat-8.17.0-linux-x86_64#

  • 编辑 ./modules.d/system.yml 文件以启用 filesetsJournald

    Module: system

    Docs: https://www.elastic.co/guide/en/beats/filebeat/8.x/filebeat-module-system.html

    • module: system
      syslog:
      enabled: true
      var.use_journald: true
      auth:
      enabled: true
      var.use_journald: true
  • 设置 system 模块:

运行以下命令来设置系统模块:

复制代码
./filebeat setup --modules system
  • 启动 Filebeat

使用以下命令启动 Filebeat-e-v 标志将日志输出到 stderr ,并以 info 级别记录:

复制代码
./filebeat -e -v
  • Kibana 中查看数据:
    • 进入 "Discover" 页面,选择 filebeat- * 数据视图,你应该能看到包含 event.dataset: system.syslogevent.dataset: system.auth 的事件。
  • 访问 "Dashboards"
    • 搜索 "[Logs System]"(使用引号以过滤掉 Windows 仪表板)。
    • 所有四个仪表板都应该工作,只需确保设置适当的时间区间,默认的 15 分钟有时对某些主机来说不足够。

原文:Dec 21st, 2024: [EN] Ingesting syslog and auth logs from Journald into Elastic Stack with Elastic-Agent or Beats - Advent Calendar - Discuss the Elastic Stack

相关推荐
Aric_Jones40 分钟前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua
Robot2512 小时前
「华为」人形机器人赛道投资首秀!
大数据·人工智能·科技·microsoft·华为·机器人
π大星星️2 小时前
基于LNMP架构的个人博客系统部署
服务器·架构
孙克旭_5 小时前
PXE_Kickstart_无人值守自动化安装系统
linux·运维·自动化
皓月盈江6 小时前
Linux电脑本机使用小皮面板集成环境开发调试WEB项目
linux·php·web开发·phpstudy·小皮面板·集成环境·www.xp.cn
深井冰水6 小时前
mac M2能安装的虚拟机和linux系统系统
linux·macos
leoufung7 小时前
内核内存锁定机制与用户空间内存锁定的交互分析
linux·kernel
Ai尚研修-贾莲7 小时前
Python语言在地球科学交叉领域中的应用——从数据可视化到常见数据分析方法的使用【实例操作】
python·信息可视化·数据分析·地球科学
菜菜why8 小时前
AutoDL租用服务器教程
服务器
IT专业服务商8 小时前
联想 SR550 服务器,配置 RAID 5教程!
运维·服务器·windows·microsoft·硬件架构