基于Splunk的企业大数据业务分析
审校 | 梁策 孙淑娟
简介
Splunk是一个著名的日志管理工具。它能够以实时方式挖掘来自于不同机器的日志数据,从而可用于监控、搜索和分析收集的数据。换句话说,它就是一个大数据日志管理工具,可以从存储在Splunk索引中的非结构化数据中提炼出决策信息。因此,Splunk分析有助于将非结构化日志数据转化为企业可以用来获取业务价值的重要信息。此外,它还能够为做出明智的决策提供监控和分析报告,从而有助于在系统性能出现问题时发出报警以便采取纠正措施。
Splunk不仅是一款优秀的日志分析工具,也被大量用作SIEM(安全事件和信息管理)工具。因此,Splunk被置于Gartner魔力象限的领先象限位置(建议有兴趣的读者参考文章https://www.veeam.com/blog/gartner-magic-quadrant-for-it-pros.html,以进一步了解什么是Gartner魔力象限)。
本文旨在展示使用Splunk洞察IT系统的简易性。具体地说,我们将介绍如何通过Splunk来创建报告、如何创建仪表板以及如何设置警报。为了创建Splunk报告,用户需要掌握中级水平的正则表达式相关知识。总之,本文重点不在讲解理论,而是着重展示如何使用Splunk从应用程序日志文件中获取企业需要的分析结论。
示例中应用的工具和方法
数据分析可以是描述性的、诊断性的、预测性的甚至是规定性的。但无论哪种,Splunk都可以帮助企业创建报告和警报,从而获取针对这些分析类型的相关价值。此外,Splunk不仅可以从应用程序日志中收集信息,还可以连接到数据库,既可以从数据库中提取数据也可以将数据推送到数据库中。
在本文中,我们将探讨使用Splunk进行业务分析的三个方面的内容:
1. 连接应用程序日志、生成报告和创建仪表板。
2. 连接到MS SQL Server数据库,展开数据挖掘,并将挖掘结果显示在控制面板的报告中。
3. 设置报警,以便IT团队或业务部门可以接收到特定事件通知。
连接到应用程序日志、生成报告并创建仪表板
在本节中,我们将首先导入一个包含应用程序记录的日志文件。一旦该日志文件导入Splunk,我们要使用正则表达式(Regex)工具来创建报告和仪表板。在创建仪表板时,我们可以将报告创建为事件、表格、图表和单值。其中,事件是存储在日志文件中的单个事务/事件。下文将向你逐一显示单值、表格、比较、事件和图表报告等内容。需要说明一点,该日志文件数据来自一家名为“Awesome Insurance company”的虚构公司。
连接到应用程序并挖掘日志文件
第一步的任务是设置应用程序,以便挖掘日志文件。为此,需要在应用服务器上配置Splunk转发器(Splunk forwarder)并修改配置文件inputs.conf,以确保可以挖掘应用程序日志并将结果推送到Splunk索引(Splunk Index)。不过,在这个测试中,为了简化问题,我干脆使用“Data Inputs”命令导入了一个现成的日志文件(如图)。
一旦点击“Data inputs”命令,即跳转到数据输入页面,其中显示了多个选择任何本地输入的选项,如下图所示点击“Files & Directories”命令项:
在命令“Files & directories”界面中,点击命令“File or Directory”(如图)。然后选择需要挖掘的日志文件,并注意是否需要持续监控该文件或是仅仅操作一次。
单击“Next”命令之后,必要的话我们可以使用事件中断,然后指定源类型(Source Type)的名称。接下来,继续单击“Next”命令将进入索引、应用程序上下文等内容的输入设置界面。所有设置完成后,我们会获得有关当前索引的所有详细信息(见下表)。
创建Splunk报告
我们可以使用正则表达式来创建Splunk报告,也可以从存储在Splunk索引中的数据生成报告。下面表格中给出的是我们用来创建这些Splunk报告的报告名称、报告类型和脚本数据。实战中,Splunk报告可能更为复杂些,但本文旨在展示如何创建不同的报告,并在Splunk仪表板中显示它们。
创建Splunk控制面板显示报告
Splunk提供了一种在控制面板中显示这些报告的方法。在控制面板中显示报告有助于相关人员实时了解业务/应用程序的状态。业务或技术团队可以根据这些实时运营的Splunk报告做出业务决策或采取纠正措施。基于上述需求和脚本,我们可以快速构建一个仪表板。
登录到Splunk,然后点击“Dashboards”命令。在随后界面中点击按钮“Create New Dashboard”,如图所示:
如下图所示,需要在界面中提供有关当前仪表板的详细信息,然后点击“Create”按钮:
随后出现一个为“Awesome Insurance Company”的空的仪表板。请注意,界面中有不少图标命令可用于创建与发布报告:
为了创建报告,只需要单击“Add Chart”按钮并选择要生成的图表类型。在我们的例子中,我点击“Table”命令,如图所示:
随后将在仪表板上创建一个新表;在右侧,我们可以添加Splunk报告脚本。当我们添加脚本并单击“Run & Save”命令时,数据会自动填充到表格中:
下面生成的仪表板名字是“Awesome Insurance Company”,该面板将所有的报告与时间选择器数据保持一致,以便所有的报告都能得到同一时期的结果。
连接到MS SQL Server数据库、挖掘数据及在仪表板报告中显示
查看上面的报告“Application Database Data & Reconciliation”,它不仅显示了来自应用程序日志的数据,还显示了来自数据库的数据。尽管从数据库中挖掘数据有助于全面了解系统,但是从数据库中挖掘数据需要额外的步骤。这是通过使用“Splunk DB Connect”提取数据库数据并将其合并到主索引中来实现的。本文不想给出如何正确配置Splunk数据库连接(DB Connect)的有关细节,而仅立足于如何实现这一操作的高级步骤讲解。
应用程序数据库
假设我们有一个叫做“Awesome Insurance Core System”的应用程序,它有一个名为“Awesome”的数据库。其中有四个表,分别包含投保人、保单、索赔和账单信息。这里的目的不是展示如何正确设置SQL Server数据库或创建表,而是为了让读者了解如何提取驻留在SQL Server中的表数据。
接下来,让我们创建几个SQL Server表并插入一些记录来模拟策略和索赔事务:
使用Splunk挖掘数据
在上面表格填充完模拟数据后,接下来我们需要设置Splunk,以便让它能够挖掘数据库。
首先,需要安装“Splunk DB Connect”。该Splunk数据库连接将帮助我们连接到数据库并获取或拉取数据。首先,需要下载这个连接器的最新版本或与Splunk版本兼容的版本。安装过程非常简单,本文亦不想就此连接器的安装步骤过多展开。
按照安装说明安装了Splunk数据库连接(DB Connect)后,该连接即显示在Splunk应用程序中,如下图所示:
然后,点击图中的命令“Splunk DB Connect”就会打开“Splunk DB Connect”应用程序。然后,需要下面一些操作:切换到配置(“Configuration”)选项卡以便添加标识信息。其实,此处的标识信息也就是定义了一个要连接到数据库的用户。
接下来,需要安装适当的SQL Server驱动程序,以便Splunk可以与MS SQL数据库进行通信。在当前测试中,我安装的是JTDS驱动程序。
创建标识信息后,单击“Connections”选项卡并提供有关连接配置信息。用户需要选择使用哪个用户创建连接、使用哪个驱动程序、数据库所在的主机、数据库使用的端口号以及数据库名称等等。如果有必要,我们也可以提供特定的许可信息。最后,单击“Save”按钮就会创建一个新连接。
完成以上三个步骤后,我们就可以与数据库建立连接,并从底部表中获取记录。点击按钮“Data Lab”,你会看到四部分内容——输入区、输出区、查找区和SQL脚本管理区。因为在当前测试中,我们希望从MS SQL Server数据库中获取数据到Splunk中,所以我们将创建输入区。如下图所示,点击按钮“New Input”:
在这一操作环节,你可以设置输入内容,如使用哪个连接、指定连接哪个目录/数据库和模式,还可以选择下面已提供数据的表格。单击表后,SQL编辑器将生成一个Select*查询。当然,我们可以根据自己的要求修改这个语句。但是,由于我们希望在接收数据时更新此表,因此必须选择表格中的一列,以便于我们的输入跟踪。这一点可以通过在右侧窗格中设置值来实现。我们可以在输入类型部分选择“Rising”。本例中,这个“Rising”列将是“TransactionID”,因为它是唯一的列,并且始终递增1。我们可以在“checkpoint value”项的下面设置一个我们希望输入跟踪的值。我们还可以设置查询超时,以便系统可以在达到x秒时取消查询操作。
SELECT * FROM AWESOME.DBO.CLAIM WHERE TRANSACTIONID >? ORDER BY TRANSACTIONID ASC
接下来,单击“Next”按钮将出现属性设置(“Set Properties”)界面。在此,有些信息是可选的,但我们需要提供名称、执行频率、源类型和索引等信息。在这里,我们指示Splunk将上面特定输入所挖掘的全部数据存储到这个指定索引中。
一旦用户操作到“Finish”这一步,屏幕上将显示一个输入完成的提示界面。
与第一个表的输入创建一样,我们也可以为所有其他3个表设置输入选项。数据现在将开始流入指定的索引(在我们的例子中是“awesome_Index”)中。
既然应用程序日志数据已经存在于索引中,而且也从数据库接收到了数据,所以我们现在可以运行“Application Database Data & Reconciliation”程序的Splunk脚本了。程序运行中,我们注意到源类型可以是上面不同的5种,输入部分既可以是数据库表也可以是日志文件。
设置报警以便触发特定事件时通知IT团队或业务部门
与上面报告创建类似,如果发生关键事件,我们可以设置报警。例如,我们可以为业务内容安排报警,如果有超过x金额的索赔获得批准,就发出报警信息提醒业务部门;或者为技术任务安排报警,例如在系统出现内存不足、服务不可用、连接超时或者登录失败(如果短时间内出现多次登录操作)等错误时提示技术部门。以下部分将展示如何在Splunk中设置报警功能。
运行要搜索的脚本
在本例中,我们试图查看所有获批索赔超过50000美元的信息。一旦生成结果集,我们就可以通过命令“Save As Alert”设置报警。
设置报警
一旦点击命令按钮“Save As Alert”,系统将会创建一个待填写的表格,以便安排报警。我们可以给出一个名字,然后根据计时器系统的设置规划报警时间。此外,我们还可以设置触发条件。
创建触发器动作
在我们设置了上述强制参数之后,我们可以配置触发器操作。在本文展示的测试中,我们将添加触发器(“Add Actions”)操作,比如发送电子邮件(“Send email”)。操作中,我们可以提供电子邮件ID、邮件正文。此外,如果需要的话,还可以添加内联表格支持。这样的设置将提供一个HTML格式的电子邮件正文,且包含来自上述查询结果集的内联表。
总结
Splunk提供了一个支持大数据的日志分析解决方案。具体一点说,Splunk能够以运营智能帮助企业及其相关人员实时查看系统的状态。本文仅仅介绍了一些基本的报告,而实战中的Splunk报告可能非常复杂,也进而能创造更多的业务价值。此外,Splunk还可以连接到数据库,从而创建基于结构化数据库的报告。而且,Splunk可以将日志数据推送到外部数据库,或将外部数据库中的数据复制到Splunk索引。一旦确定数据所在位置,创建报告就非常容易,并且能够提供应用程序事务的整体视图。
此外,Splunk还是一个很好的报警工具,可以在问题出现之前提醒业务或IT团队将之解决。Splunk除了为IT团队提供日志分析解决方案外,还可极好地用于安全管理和DevOps等方面。此外,Splunk还提供了连接其他应用程序的连接器组件以方便使用。总之,通过使用Splunk,企业可以从应用程序日志和应用程序数据库中采集业务数据并进行技术分析,而这将会给他们带来极大的益处。
译者介绍
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。早期专注各种微软技术(编著成ASP.NET AJX、Cocos 2d-X相关三本技术图书),近十多年投身于开源世界(熟悉流行全栈Web开发技术),了解基于OneNet/AliOS+Arduino/ESP32/树莓派等物联网开发技术与Scala+Hadoop+Spark+Flink等大数据开发技术。
原文Business Analytics from Application Logs and Database using Splunk,作者:Roopesh Uniyal
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341