Splunk 监控文件

17 Mar 2025 | 4 分钟阅读

在本节中,我们将学习 在 Splunk 中监控文件和目录。 除此之外,我们还将学习 处理器控制功能如何工作,Splunk 如何跟踪归档文件等。

监控文件和目录

Splunk Enterprise 有三个用于输入文件的处理器:monitor、MonitorNoHandle 和 upload。

我们可以使用 monitor 从数据源添加几乎所有的文件和目录。 我们可能还想使用 upload 来添加一次性输入,例如历史数据存档。

对于运行在 Windows Vista 或 Windows Server 2008 及更高版本上的主机,可以使用 MonitorNoHandle 输入来监视程序自动轮换的文件。 来自 MonitorNoHandle 的反馈仅适用于 Windows 主机。

使用这些方法中的任何一种,添加输入以进行监控或上传

  • Splunk Web
  • CLI
  • conf

使用 CLI 或 inputs.conf,我们可以将输入添加到 MonitorNoHandle。

使用“设置 Sourcetype”选项卡查看它如何索引文件中的数据。

处理器控制功能如何工作

在 Splunk 中,我们需要指定文件或目录的路径,并且任何插入到该文件或目录中的新数据都会由监视器处理器处理。 这就是我们如何监控实时应用程序日志,例如来自 Web 访问日志、Java 2 平台企业版 (J2EE).NET 应用程序等的日志。

Splunk Enterprise 会跟踪文件或目录,并在新数据出现时对其进行索引。 只要 Splunk Web 应用程序可以从该目录读取数据,我们还可以定义一个已安装或共享的目录,例如网络文件系统。 除非指定的目录包含子目录,否则 monitor 方法会递归搜索它们以查找新文件,只要这些目录可读即可。

使用允许列表和排除列表,我们可以包含或删除要读取的文件或文件夹。

如果设备输入被禁用或删除,Splunk Enterprise 不会避免索引该输入引用的文件。 它只是避免再次查看这些文件。 必须停止并重新启动 Splunk Web 应用程序服务器,以避免阶段中的所有数据索引。

Splunk Enterprise 如何在重启期间管理文件监控

一旦 Splunk 服务器重启,数据检索将从上次停止的地方继续。 它首先在 monitor 设置中搜索指定的文件或目录。 控制方法会持续扫描受控目录的子目录。

monitor 的输入将重叠。 只要 stanza 的名称不同,Splunk Enterprise 就会将其视为单独的位置,并且最适合该 stanza 的文件将根据其设置进行处理。

Splunk Enterprise 如何跟踪归档文件

归档文件(例如 .tar 或 .zip 文件)在索引之前会被解压缩,支持以下类型的归档文件

  • .tar 文件。
  • .gz 文件。
  • .bz2 文件。
  • .tar.gz 和 .tgz 文件。
  • .tbz 和 .tbz2 文件。
  • .zip 文件。
  • .z 文件。

当我们向现有归档文件应用新数据时,它将重新索引整个文件,而不仅仅是新数据。 这可能会导致事件的重复。

为什么 Splunk Enterprise 监控操作系统按计划轮换的文件。

监控过程会感知到日志文件的轮换,并且不会处理它已经索引的重命名文件(除了 .tar 和 .gz 的归档文件)。

为什么 Splunk Enterprise 跟踪不可写的 Windows 文件

Windows 可以阻止 Splunk Enterprise 读取打开的文件。 如果我们需要在写入文件时读取文件,可以使用 MonitorNoHandle 输入。

文件监控的限制

Splunk Enterprise 无法跟踪路径长度超过 1024 个字符的文件。

具有 a.splunk 文件名扩展名的文档也不会被跟踪,因为 Splunk 元数据位于具有该后缀的文档中。 如果我们需要索引扩展名为 .splunk 的文件,请使用 add-oneshot CLI 功能。

为什么要使用 Batch 或 Upload?

选择导入到 Splunk Web 以一次索引一个静态文件。

我们还可以使用 CLI 命令添加 oneshot 或 spool 以达到相同的目的。

如果我们有一个 Splunk 平台,我们可以使用 inputs.conf 中的 batch 输入表单来一次性破坏性地加载数据。

Splunk batch 处理器在设计上位于 $SPLUNK_HOME/var/spool/splunk 中。 如果我们将文件移动到该目录,则该文件将被索引并在之后删除。

为什么要使用 MonitorNoHandle?

这个仅 Windows 输入允许我们在 Windows 系统上读取 Windows 写入的文件。 通过使用内核模式过滤器驱动程序,可以在将原始数据写入文件时捕获原始数据来实现此目的。 在打开以进行写入锁定的文件上使用此输入 stanza。 此输入 stanza 可用于系统锁定打开以进行写入的文件,例如 Windows DNS 服务器的日志文件。

使用 MonitorNoHandle 的注意事项

以下注意事项是指 MonitorNoHandle 输入

  • 只有 Windows Vista 或 Windows Server 2008 及更高版本的操作系统才能与 MonitorNoHandle 一起使用。 它不适用于早期版本的 Windows,也不适用于非 Windows 操作系统。
  • MonitorNoHandle 只能监控单个文件。 要监控多个文件,需要为每个文件生成一个 MonitorNoHandle 输入 stanza。
  • 无法使用 MonitorNoHandle 监控目录。
  • 如果我们选择使用 MonitorNoHandle 监控的文件已存在,Splunk Enterprise 将不会索引其当前内容,而仅索引进程写入文件的新信息。
  • 使用 MonitorNoHandle 监控文件意味着该文件的 root 字段是 MonitorNoHandle 而不是文件名。 如果我们希望文件名成为源字段,我们需要在 conf 中显式设置它。 有关更多详细信息,可以查看 inputs.conf 中的跟踪文件和目录。

下一个主题Splunk - 命令类型