Splunk 简明教程
Splunk - Overview
Splunk 是一款处理机器数据和其他形式大数据的软件,并从中提取见解。这种机器数据是由运行 Web 服务器的 CPU、IOT 设备、移动应用程序日志等生成的。没有必要将此数据提供给终端用户,也没有任何业务意义。但是,它们对于理解、监视和优化机器性能至关重要。
Splunk 可以读取此类非结构化、半结构化或很少结构化的数据。在读取数据后,它允许在这些数据上进行搜索、标记、创建报告和仪表板。随着大数据时代的到来,Splunk 现在能够从各种来源获取大数据,无论这些来源是否是机器数据,并在其上运行分析。
因此,从一个用于日志分析的简单工具开始,Splunk 经历了漫长的过程,变得不结构化机器数据和各种形式大数据的通用分析工具。
Product Categories
Splunk 可分为以下三种不同产品类别:
-
Splunk Enterprise - 它适用于拥有大型 IT 基础设施和 IT 驱动物业的公司。它有助于收集和分析来自网站、应用程序、设备和传感器等的数据。
-
Splunk Cloud - 它具有与企业版相同功能的云托管平台。它可以从 Splunk 本身或通过 AWS 云平台获得。
-
Splunk Light - 它允许从一个位置实时搜索、报告和针对所有日志数据发出警报。与其他两个版本相比,它的功能和特性有限。
Splunk - Environment
Splunk - Interface
Splunk - Data Ingestion
通过属于搜索和报告应用程序一部分的 Add Data 特性,可以在 Splunk 中进行数据提取。登录后,Splunk 界面主屏幕会显示 Add Data 图标,如下所示。
单击此按钮后,屏幕上会显示选择要将数据推送到 Splunk 进行分析的数据源和格式。
Gathering The Data
我们可以从 Splunk 官方网站获取数据进行分析。保存此文件,并在你的本地驱动器中解压缩。打开该文件夹后,你可以看到三个格式各异的文件。它们是某些 Web 应用程序生成的对数数据。我们还可以在 Splunk 提供的官方 Splunk 网页集合另一组数据。
我们将使用来自这两个集合的数据了解 Splunk 各项特性的工作原理。
Selecting Source Type
Splunk 具有内置特性来检测正在提取的数据类型。它还允许用户选择不同于 Splunk 所选的数据类型。单击源类型下拉菜单,我们就可以看到 Splunk 可以提取并启用以进行搜索的各种数据类型。
在下面所示的当前示例中,我们选择默认源类型。
Splunk - Source Types
所有传入 Splunk 的数据首先由其内置数据处理单元进行判断,并分类为某些数据类型和类别。例如,如果它来自 Apache Web 服务器的日志,Splunk 能够识别它,并从读取的数据中创建适当的字段。
Splunk 中的这一功能被称为“来源类型检测”,它利用其内置的、被称作“预训练模型”的来源类型来实现此目的。
这让分析变得更为简单,因为用户不必手动对数据进行分类和将任何类型的数据分配给传入数据的字段。
Supported Source Types
可以通过 Add Data 功能上传文件,然后选择来源类型的下拉列表,查看 Splunk 中支持的来源类型。在下图中,我们上传了一个 CSV 文件,然后选中了所有可用选项。
image::https://www.iokays.com/tutorialspoint/splunk/_images/source_type_1.jpg [Source Type1]
Source Type Sub-Category
即便在那些类别中,我们也可以进一步点击查看支持的所有子类别。因此,当选择数据库类别时,你会发现 Splunk 可以识别的不同类型的数据库及它们支持的文件。
image::https://www.iokays.com/tutorialspoint/splunk/_images/source_type_2.jpg [Source Type2]
Pre-Trained Source Types
下表列出了 Splunk 识别的部分重要预训练来源类型:
Source Type Name |
Nature |
access_combined |
NCSA 组合格式 http Web 服务器日志(可以由 Apache 或其他 Web 服务器生成) |
access_combined_wcookie |
NCSA 组合格式 http Web 服务器日志(可以由 Apache 或其他 Web 服务器生成),并附加了 cookie 字段 |
apache_error |
标准 Apache Web 服务器错误日志 |
linux_messages_syslog |
标准 Linux syslog(大多数平台中的 /var/log/messages) |
log4j |
Log4j 标准输出由任何使用 log4j 的 J2EE 服务器生成 |
mysqld_error |
Standard mysql error log |
Splunk - Basic Search
Splunk 具有强大的搜索功能,使您能够搜索已摄取的整个数据集。通过命名为 Search & Reporting 的应用程序访问此功能,在登录到 Web 界面后,可以在左侧栏中看到此应用程序。
单击 search & Reporting 应用程序后,我们将看到一个搜索框,我们可以在其中开始搜索我们在上一章中上传的日志数据。
我们以如下所示的格式输入主机名,然后单击最右侧的搜索图标。这将显示突出显示搜索词组的结果。
Splunk - Field Searching
当 Splunk 读入已上传的机器数据时,它会解析这些数据,并按字段将数据分成许多部分,每个字段都将表示整个数据记录中的一个单一的逻辑事实。
例如,一个单一的记录信息可能包含服务器名称、事件的时间戳、正在记录的事件类型(登录尝试或 HTTP 响应等)。即使是对于非结构化数据,Splunk 也尝试将字段分成键值对,或者根据数据的类型(数字、字符串等)将字段分开。
继续对上一章节中上传的数据进行操作,我们可以通过点击显示字段链接,看到 secure.log 文件中的字段,这将打开以下屏幕。我们可以注意到 Splunk 从这个日志文件中生成出来了哪些字段。
Splunk - Time Range Search
Splunk Web 界面会显示时间轴,该时间轴会指示一系列时间段中事件的分布情况。提供了预设时间间隔,您可以从中选择特定时间范围,也可以根据需要自定义时间范围。
以下屏幕显示各种预设时间轴选项。选择其中任何选项只会获取该特定时间段的数据,您还可以使用可用的自定义时间轴选项进一步分析该数据。
例如,选择上个月的选项将仅为我们提供上个月的结果,如您在下面的时间轴图中看到的范围所示。
Selecting a Time Subset
通过单击并拖动时间轴中的条形,我们可以选择已存在的子集结果。这不会导致查询重新执行。它只会从现有结果集中过滤掉记录。
下图显示了从结果集中选择子集的情况:
Splunk - Sharing Exporting
当您运行搜索查询时,结果将作为作业存储在 Splunk 服务器中。虽然此作业是由一个特定用户创建的,但它可以与其他用户共享,以便他们可以开始使用此结果集,而无需再次为此构建查询。结果还可以导出并保存为文件,可以与不使用 Splunk 的用户共享。
Sharing the Search Result
查询成功运行后,我们可以在网页中间右方看到一个小的向上箭头。单击此图标将提供一个 URL,可以在其中访问查询和结果。需要向将使用此链接的用户授予权限。权限通过 Splunk 管理界面授予。
image::https://www.iokays.com/tutorialspoint/splunk/_images/share_export_1.jpg [Share Export1]
Finding the Saved Results
可以找到适当权限供所有用户使用的已保存作业,方法是在 Splunk 界面右上角的活动菜单下查找作业链接。在下图中,我们单击名为作业的突出显示链接以查找已保存作业。
image::https://www.iokays.com/tutorialspoint/splunk/_images/share_export_3.jpg [Share Export3]
单击上述链接后,我们将获得所有已保存作业的列表,如下所示。他,我们必须注意,在自动将已保存作业从 Splunk 中删除的发布日期之后。您可以通过选择作业并单击编辑选定的然后选择延长到期时间来调整日期。
image::https://www.iokays.com/tutorialspoint/splunk/_images/share_export_4.jpg [Share Export4]
Splunk - Search Language
Splunk 搜索处理语言(SPL)是一种语言,其中包含许多命令、函数、参数等,这些命令、函数、参数被用来从数据集得到期望的结果。例如,当针对搜索词获得结果集时,你可能希望进一步从结果集中筛选一些更具体的内容。为此,你需要向现有命令添加一些额外的命令。这是通过学习 SPL 的用法来实现的。