Splunk - 快速指南


Splunk - 概述

Splunk 是一款处理机器数据和其他形式的大数据并从中获取洞察力的软件。这些机器数据是由运行网络服务器的CPU、物联网设备、移动应用程序的日志等生成的。没有必要向最终用户提供这些数据,并且没有任何商业意义。然而,它们对于了解、监控和优化机器的性能极其重要。

Splunk 可以读取这种非结构化、半结构化或很少结构化的数据。读取数据后,它允许对这些数据进行搜索、标记、创建报告和仪表板。随着大数据的出现,Splunk 现在能够从各种来源获取大数据,这些数据可能是机器数据,也可能不是机器数据,并对大数据进行分析。

因此,Splunk从一个简单的日志分析工具,经过漫长的发展,成为非结构化机器数据和各种形式的大数据的通用分析工具。

产品类别

Splunk 提供三种不同的产品类别,如下 -

  • Splunk Enterprise - 由拥有大型 IT 基础设施和 IT 驱动业务的公司使用。它有助于收集和分析来自网站、应用程序、设备和传感器等的数据。

  • Splunk Cloud - 它是云托管平台,具有与企业版相同的功能。它可以从 Splunk 本身或通过 AWS 云平台使用。

  • Splunk Light - 它允许从一个地方实时搜索、报告和警报所有日志数据。与其他两个版本相比,它的功能和特性有限。

Splunk 功能

在本节中,我们将讨论企业版的重要特征 -

数据摄取

Splunk 可以摄取各种数据格式(例如 JSON、XML)以及非结构化机器数据(例如 Web 和应用程序日志)。非结构化数据可以根据用户需要建模为数据结构。

数据索引

摄取的数据由 Splunk 建立索引,以便在不同条件下更快地搜索和查询。

资料搜寻

Splunk 中的搜索涉及使用索引数据来创建指标、预测未来趋势和识别数据中的模式。

使用警报

当在分析的数据中发现某些特定条件时,Splunk 警报可用于触发电子邮件或 RSS 源。

仪表板

Splunk Dashboards 可以以图表、报告和数据透视表等形式显示搜索结果。

数据模型

索引数据可以被建模为基于专门领域知识的一个或多个数据集。这使得分析业务案例的最终用户可以更轻松地导航,而无需了解 Splunk 使用的搜索处理语言的技术细节。

Splunk - 环境

在本教程中,我们的目标是安装企业版。该版本可免费评估 60 天,并启用所有功能。您可以使用以下链接下载安装程序,该链接适用于 Windows 和 Linux 平台。

https://www.splunk.com/en_us/download/splunk-enterprise.html。

Linux版本

Linux版本是从上面给出的下载链接下载的。我们选择 .deb 软件包类型,因为安装将在 Ubuntu 平台中完成。

我们将通过一步一步的方法来学习这一点 -

步骤1

下载 .deb 包,如下面的屏幕截图所示 -

Linux安装1

第2步

转到下载目录并使用上面下载的软件包安装 Splunk。

Linux安装2

步骤3

接下来,您可以使用以下带有接受许可证参数的命令来启动 Splunk。它将要求您提供并记住管理员用户名和密码。

Linux安装3

步骤4

Splunk 服务器启动并提及可访问 Splunk 界面的 URL。

Linux安装4

步骤5

现在,您可以访问 Splunk URL 并输入在步骤 3 中创建的管理员用户 ID 和密码。

Linux安装5

Windows版本

Windows 版本可作为 msi 安装程序使用,如下图所示 -

安装1

双击 msi 安装程序即可直接安装 Windows 版本。为了成功安装,我们必须做出正确选择的两个重要步骤如下。

步骤1

当我们将其安装在本地系统上时,请选择本地系统选项,如下所示 -

安装2

第2步

输入管理员密码并记住它,因为它将在以后的配置中使用。

安装3

步骤3

在最后一步中,我们看到 Splunk 已成功安装,并且可以从 Web 浏览器启动它。

安装4

步骤4

接下来,打开浏览器并输入给定的 URL http://localhost:8000,然后使用管理员用户 ID 和密码登录 Splunk。

安装5

Splunk - 界面

Splunk Web 界面包含搜索、报告和分析所摄取数据所需的所有工具。同一 Web 界面提供了用于管理用户及其角色的功能。它还提供数据摄取和 Splunk 中可用的内置应用程序的链接。

下图显示了使用管理员凭据登录 Splunk 后的初始屏幕。

接口1

管理员链接

管理员下拉菜单提供设置和编辑管理员详细信息的选项。我们可以使用下面的屏幕重置管理员电子邮件 ID 和密码 -

接口2

从管理员链接进一步,我们还可以导航到首选项选项,在其中我们可以设置登录后将打开登录页面的时区和主应用程序。目前,它在主页上打开,如下所示 -

接口3

设置链接

此链接显示了 Splunk 中可用的所有核心功能。例如,您可以通过选择查找链接来添加查找文件和查找定义。

我们将在后续章节中讨论这些链接的重要设置。

接口4

搜索和报告链接

搜索和报告链接将我们带到可以找到可用于搜索为这些搜索创建的报告和警报的数据集的功能。下面的屏幕截图清楚地显示了这一点 -

接口5

Splunk - 数据摄取

Splunk 中的数据摄取是通过“添加数据”功能进行的,该功能是搜索和报告应用程序的一部分。登录后,Splunk 界面主屏幕将显示“添加数据”图标,如下所示。

食入1

单击此按钮后,我们将看到一个屏幕,供我们选择计划推送到 Splunk 进行分析的数据的来源和格式。

收集数据

我们可以从Splunk的官方网站获取数据进行分析。保存此文件并将其解压缩到本地驱动器中。打开该文件夹后,您可以找到三个具有不同格式的文件。它们是一些网络应用程序生成的日志数据。我们还可以收集 Splunk 提供的另一组数据,可从 Splunk 官方网页获取。

我们将使用这两个集合中的数据来了解 Splunk 各种功能的工作原理。

上传数据

接下来,我们从上一段提到的保存在本地系统中的mailsv文件夹中选择文件secure.log 。选择文件后,我们使用右上角的绿色下一步按钮进入下一步。

摄入2

选择源类型

Splunk 具有内置功能来检测所摄取数据的类型。它还为用户提供了选择与 Splunk 选择的数据类型不同的数据类型的选项。单击源类型下拉列表后,我们可以看到 Splunk 可以摄取并启用搜索的各种数据类型。

在下面给出的当前示例中,我们选择默认源类型。

摄入3

输入设置

在数据摄取的这一步中,我们配置从中摄取数据的主机名。以下是可供选择的主机名选项 -

恒定值

它是源数据所在的完整主机名。

路径上的正则表达式

当你想用正则表达式提取主机名时。然后在正则表达式字段中输入要提取的主机的正则表达式。

路径中的段

当您想要从数据源路径中的段中提取主机名时,请在“段号”字段中输入段号。例如,如果源路径为 /var/log/ 并且您希望第三段(主机服务器名称)作为主机值,请输入“3”。

接下来,我们选择要在输入数据上创建的索引类型以进行搜索。我们选择默认的索引策略。摘要索引仅通过聚合创建数据的摘要并在其上创建索引,而历史索引用于存储搜索历史记录。下图清楚地描绘了这一点 -

摄入4

查看设置

单击下一步按钮后,我们会看到所选设置的摘要。我们检查它并选择“下一步”完成数据的上传。

摄入5

完成加载后,将出现以下屏幕,其中显示成功的数据摄取以及我们可以对数据采取的进一步可能的操作。

摄入6

Splunk - 源类型

Splunk 的所有传入数据首先由其内置的数据处理单元进行判断,并分类为某些数据类型和类别。例如,如果它是来自 apache Web 服务器的日志,Splunk 能够识别该日志并根据读取的数据创建适当的字段。

Splunk 中的此功能称为源类型检测,它使用其内置源类型(称为“预训练”源类型)来实现此目的。

这使得分析变得更容易,因为用户不必手动对数据进行分类并将任何数据类型分配给传入数据的字段。

支持的源类型

通过“添加数据”功能上传文件,然后选择“源类型”下拉列表,可以查看 Splunk 中支持的源类型。在下图中,我们上传了 CSV 文件,然后检查所有可用选项。

来源类型1

来源类型子类别

即使在这些类别中,我们也可以进一步点击查看所有支持的子类别。因此,当您选择数据库类别时,您可以找到Splunk可以识别的不同类型的数据库及其支持的文件。

来源类型2

预训练源类型

下表列出了 Splunk 识别的一些重要的预训练源类型 -

源类型名称 自然
访问组合 NCSA 组合格式 http Web 服务器日志(可由 apache 或其他 Web 服务器生成)
access_combined_wcookie NCSA 组合格式 http Web 服务器日志(可由 apache 或其他 Web 服务器生成),末尾添加 cookie 字段
apache_错误 标准 Apache Web 服务器错误日志
linux_messages_syslog 标准 Linux 系统日志(大多数平台上为 /var/log/messages)
日志4j 任何使用 log4j 的 J2EE 服务器生成的 Log4j 标准输出
mysqld_错误 标准mysql错误日志

Splunk - 基本搜索

Splunk 具有强大的搜索功能,使您能够搜索所摄取的整个数据集。此功能可通过名为“搜索和报告”的应用程序访问,登录 Web 界面后可以在左侧栏中看到该应用程序。

基本搜索1

单击搜索和报告应用程序后,我们会看到一个搜索框,我们可以在其中开始搜索上一章中上传的日志数据。

我们按照如下所示的格式输入主机名,然后单击最右上角的搜索图标。这为我们提供了突出显示搜索词的结果。

基本搜索2

组合搜索词

我们可以将用于搜索的术语组合起来,将它们一个接一个地写入,但将用户搜索字符串放在双引号内。

基本搜索3

使用通配符

我们可以在搜索选项中使用通配符以及AND/OR运算符。在下面的搜索中,我们得到的结果是日志文件中包含包含“fail”、“failed”、“failure”等术语,以及同一行中的术语“password”。

基本搜索4

细化搜索结果

我们可以通过选择一个字符串并将其添加到搜索中来进一步细化搜索结果。在下面的示例中,我们单击字符串3351并选择选项Add to Search

将3351添加到搜索词后,我们得到以下结果,其中仅显示日志中包含 3351 的那些行。还要标记当我们细化搜索时搜索结果的时间线如何变化。

基本搜索

Splunk - 现场搜索

当 Splunk 读取上传的机器数据时,它会解释数据并将其划分为许多字段,这些字段表示有关整个数据记录的单个逻辑事实。

例如,单个信息记录可能包含服务器名称、事件时间戳、正在记录的事件类型(无论是登录尝试还是 http 响应)等。即使在非结构化数据的情况下,Splunk 也会尝试将字段划分为键值根据它们所具有的数据类型(数字和字符串等)将它们配对或分开。

继续上一章中上传的数据,我们可以通过单击显示字段链接来查看secure.log文件中的字段,该链接将打开以下屏幕。我们可以注意到 Splunk 从此日志文件生成的字段。

实地搜寻

选择领域

我们可以通过从所有字段列表中选择或取消选择字段来选择要显示的字段。单击所有字段将打开一个显示所有字段列表的窗口。其中一些字段带有复选标记,表明它们已被选中。我们可以使用复选框来选择要显示的字段。

除了字段名称之外,它还显示字段具有的不同值的数量、其数据类型以及该字段出现在事件中的百分比。

实地搜寻

现场总结

单击字段名称即可获得每个选定字段的非常详细的统计数据。它显示了该字段的所有不同值、它们的计数和百分比。

实地搜寻

在搜索中使用字段

字段名称也可以与搜索的特定值一起插入到搜索框中。在下面的示例中,我们的目标是查找名为mailsecure_log 的主机的 10 月 15 日这一日期的所有记录。我们得到这个特定日期的结果。

实地搜寻

Splunk - 时间范围搜索

Splunk Web 界面显示时间线,指示事件在一段时间内的分布情况。有预设的时间间隔,您可以从中选择特定的时间范围,也可以根据需要自定义时间范围。

下面的屏幕显示了各种预设时间线选项。选择这些选项中的任何一个都将仅获取该特定时间段的数据,您还可以使用可用的自定义时间线选项进一步分析该数据。

时间范围搜索1

例如,选择上个月选项只会给我们上个月的结果,您可以看到下面时间线图的分布情况。

时间范围搜索2

选择时间子集

通过单击并拖动时间轴中的条,我们可以选择已存在的结果的子集。这不会导致查询的重新执行。它仅从现有结果集中过滤掉记录。

下图显示了从结果集中选择子集 -

时间范围搜索3

最早和最新

可以在搜索栏中使用最早和最新这两个命令来指示过滤结果的时间范围。它与选择时间子集类似,但它是通过命令而不是单击特定时间线栏的选项。因此,它可以更好地控制您可以选择用于分析的数据范围。

时间范围搜索4

在上图中,我们给出了最近 7 天到最近 15 天之间的时间范围。因此,显示了这两天之间的数据。

附近活动

我们还可以通过提及我们希望过滤掉事件的接近程度来找到特定时间的附近事件。我们可以选择间隔的大小,例如秒、分钟、天和周等。

Splunk - 共享导出

当您运行搜索查询时,结果将作为作业存储在 Splunk 服务器中。虽然此作业是由一个特定用户创建的,但它可以与其他用户共享,以便他们可以开始使用此结果集,而无需再次为其构建查询。结果还可以导出并保存为文件,以便与不使用 Splunk 的用户共享。

分享搜索结果

查询成功运行后,我们可以在网页的右中部看到一个向上的小箭头。单击此图标会提供一个可以访问查询和结果的 URL。需要向将使用此链接的用户授予权限。权限是通过 Splunk 管理界面授予的。

分享导出1

查找保存的结果

通过在 Splunk 界面右上角栏中的活动菜单下查找作业链接,可以找到保存供具有适当权限的所有用户使用的作业。在下图中,我们单击突出显示的名为 jobs 的链接来查找已保存的作业。

分享导出3

单击上述链接后,我们将获得所有已保存作业的列表,如下所示。他,我们必须注意,有一个到期日期,保存的作业将自动从 Splunk 中删除。您可以通过选择作业并单击“编辑所选”,然后选择“延长到期日”来调整此日期。

分享导出4

导出搜索结果

我们还可以将搜索结果导出到文件中。可导出的三种不同格式是:CSV、XML 和 JSON。选择格式后单击“导出”按钮会将文件从本地浏览器下载到本地系统。下图对此进行了解释 -

分享导出2

Splunk - 搜索语言

Splunk 搜索处理语言 (SPL) 是一种包含许多命令、函数、参数等的语言,编写这些语言是为了从数据集中获取所需的结果。例如,当您获取搜索词的结果集时,您可能还希望从结果集中过滤一些更具体的词。为此,您需要将一些附加命令添加到现有命令中。这是通过学习 SPL 的用法来实现的。

SPL 的组成部分

SPL 具有以下组件。

  • 搜索词- 这些是您正在寻找的关键字或短语。

  • 命令- 您想要对结果集执行的操作,例如格式化结果或对结果进行计数。

  • 函数- 您将对结果应用哪些计算。如总和、平均值等。

  • 子句- 如何对结果集中的字段进行分组或重命名。

让我们在下一节中借助图像讨论所有组件 -

搜索词

这些是您在搜索栏中提到的术语,用于从数据集中获取满足搜索条件的特定记录。在下面的示例中,我们正在搜索包含两个突出显示的术语的记录。

斯普_1

命令

您可以使用 SPL 提供的许多内置命令来简化分析结果集中数据的过程。在下面的示例中,我们使用 head 命令仅过滤掉搜索操作中的前 3 个结果。

斯普_2

功能

除了命令之外,Splunk 还提供了许多内置函数,这些函数可以从正在分析的字段获取输入,并在对该字段应用计算后给出输出。在下面的示例中,我们使用Stats avg()函数来计算作为输入的数字字段的平均值。

斯普_3

条款

当我们想要获取按某些特定字段分组的结果或者想要重命名输出中的字段时,我们分别使用 group by子句和 as 子句。在下面的示例中,我们获取web_application日志中存在的每个文件的平均字节大小。如您所见,结果显示每个文件的名称以及每个文件的平均字节数。

斯普_4