译者|审稿人朱宪忠|梁策孙淑娟介绍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、连接MSSQLServer数据库,开始数据挖掘,在控制面板的报表中显示挖掘结果。3.设置警报,以便IT团队或业务部门可以收到特定事件的通知。连接到应用程序日志、生成报告并创建仪表板在本节中,我们将首先导入一个包含应用程序记录的日志文件。将此日志文件导入Splunk后,我们使用正则表达式(Regex)工具创建报告和仪表板。在创建仪表板时,我们可以将报告创建为事件、表格、图表和单个值。其中event是存储在日志文件中的单个事务/事件。下面将单值、表格、比较、事件、图表一一为您展示。澄清一下,此日志文件数据来自一家名为“AwesomeInsurancecompany”的虚构公司。连接到应用程序并挖掘日志文件第一项任务是设置应用程序以挖掘日志文件。为此,需要在应用服务器上配置Splunkforwarder,修改配置文件inputs.conf,保证应用日志能够被挖掘并将结果推送到SplunkIndex。不过在本次测试中,为了简化问题,我干脆使用“DataInputs”命令导入了一个现成的日志文件(如图)。点击“数据输入”命令后,会跳转到数据输入页面,页面显示多个选择任意本地输入的选项,点击“文件和目录”命令项,如下图所示:在“文件”命令中&目录”界面,点击命令“文件或目录”(如图)。然后选择需要挖掘的日志文件,注意该文件是需要连续监控还是只监控一次。单击“Next”命令后,我们可以根据需要使用事件中断,并指定SourceType的名称。接下来,继续点击“Next”命令,进入索引、应用上下文等输入设置界面,一切设置完成后,我们就得到了当前索引的所有详细信息(见下表)。创建Splunk报告我们可以使用正则表达式来创建Splunk报告,我们也可以从存储在Splunk索引中的数据生成报告。下表给出了我们用来创建这些Splunk报告的报告名称、报告类型和脚本数据。实际上,Splunk报告可能更复杂,但本文旨在展示如何创建不同的报告并将它们显示在Splunk仪表板中。创建Splunk仪表板显示报告Splunk提供了一种在仪表板中显示这些报告的方法。在仪表板中显示报告有助于利益相关者实时了解业务/应用程序的状态。业务或技术团队可以根据这些实时运营Splunk报告做出业务决策或采取纠正措施。基于以上需求和脚本,我们可以快速搭建仪表盘。登录Splunk并单击“仪表板”命令。在后续界面点击“创建新仪表盘”按钮,如图:如下图,需要在界面中提供当前仪表盘的详细信息,然后点击“创建”按钮:然后标题为“AwesomeInsuranceCompany”的空仪表板。请注意,在创建和发布报告的界面中有相当多的图标命令:要创建报告,只需单击“添加图表”按钮并选择要生成的图表类型。在我们的例子中,我点击了“表格”命令,如图所示:然后将在仪表板上创建一个新表格;在右侧,我们可以添加Splunk报告脚本。当我们添加脚本并单击“运行并保存”命令时,数据会自动填充到表中:下面生成的仪表板名为“AwesomeInsuranceCompany”,该面板将所有报告与时间选择器数据对齐,以便所有报告都获得同一时期的结果。连接到MSSQLServer数据库,挖掘数据并在仪表板报告中显示查看上面的报告“应用程序数据库数据和协调”,它不仅显示来自应用程序日志的数据,还显示来自数据库的数据。虽然从数据库中挖掘数据有助于全面了解系统,但从数据库中挖掘数据需要额外的步骤。这是通过使用“SplunkDBConnect”提取数据库数据并将其合并到主索引中来实现的。本文不想给出如何正确配置Splunk数据库连接(DBConnect)的细节,而只是基于如何实现此操作的高级步骤。应用程序数据库假设我们有一个名为“AwesomeInsuranceCoreSystem”的应用程序,它有一个名为“Awesome”的数据库。有四个表包含保单持有人、保单、索赔和账单信息。这里的目的不是展示如何正确设置SQLServer数据库或创建表,而是让读者了解如何提取驻留在SQLServer中的表数据。接下来,让我们创建几个SQLServer表并插入一些记录来模拟保单和索赔交易:使用Splunk挖掘数据用模拟数据填充上述表后,接下来我们需要设置Splunk以便它可以挖掘数据库。首先,需要安装“SplunkDBConnect”。这个Splunk数据库连接将帮助我们连接到数据库并获取或拉取数据。首先,您需要下载此连接器的最新版本或与您的Splunk版本兼容的版本。安装过程非常简单,本文不想过多展开这个连接器的安装步骤。按照安装说明安装好Splunk数据库连接(DBConnect)后,连接显示在Splunk应用程序中,如下图:然后,点击图中命令“SplunkDBConnect”,打开“SplunkDBConnect”应用程序。然后,需要执行以下操作:切换到配置(“配置”)选项卡以添加标识信息。其实这里的标识信息就是定义一个连接数据库的用户。接下来,需要安装适当的SQLServer驱动程序,以便Splunk可以与MSSQL数据库通信。本次测试,我安装了JTDS驱动。创建标识信息后,单击“连接”选项卡并提供有关连接配置的信息。用户需要选择使用哪个用户来创建连接,使用哪个驱动程序,数据库所在的主机,数据库使用的端口号,数据库的名称等等。如有必要,我们还可以提供特定的许可信息。最后,单击“保存”按钮将创建一个新连接。完成以上三步后,我们就可以和数据库建立连接,从最下面的表中取记录了。单击“数据实验室”按钮,您将看到四个部分——输入区、输出区、搜索区和SQL脚本管理区。因为在当前的测试中,我们要从MSSQLServer数据库中获取数据到Splunk中,所以我们将创建输入区。如下图,点击“NewInput”按钮:在这个操作环节,可以设置输入内容,比如使用哪个连接,连接到哪个目录/数据库和schema,也可以选择下表提供了数据。单击表后,SQL编辑器将生成一个Select*查询。当然,我们可以根据自己的要求修改这个语句。但是,由于我们希望在收到数据时更新此表,因此我们必须在表中选择一列供我们输入。这是通过在右窗格中设置值来完成的。我们可以在输入类型部分选择“瑞星”。在此示例中,此“上升”列将是“TransactionID”,因为它是唯一的列并且始终递增1。我们可以在希望输入跟踪的“检查点值”项下设置一个值。我们还可以设置一个查询超时时间,让系统在到达x秒时取消查询操作。SELECT*FROMAWESOME.DBO.CLAIMWHERETRANSACTIONID>?ORDERBYTRANSACTIONIDASC接下来点击“下一步”按钮,会出现属性设置(“SetProperties”)界面。在这里,有些信息是可选的,但我们需要提供名称、执行频率、源类型和索引等信息。在这里,我们指示Splunk将上面特定输入挖掘的所有数据存储到这个指定的索引中。当用户到达“完成”步骤后,屏幕上会出现一个提示界面,表示输入完成。与第一个表的输入创建一样,我们也可以为所有其他3个表设置输入选项。数据现在将开始流入指定的索引(在我们的例子中为“awesome_Index”)。现在应用程序日志数据存在于索引中并从数据库接收,我们现在可以运行“应用程序数据库数据和协调”程序的Splunk脚本。程序运行时,我们注意到源类型可以是以上五种不同的类型,输入部分可以是数据库表,也可以是日志文件。设置警报以在触发特定事件时通知IT团队或业务与上面的报告创建类似,如果发生关键事件,我们可以设置警报。比如我们可以对业务内容设置告警,如果超过x个金额的理赔被批准了,就会发送告警信息提醒业务部门;或者可以为技术任务安排告警,比如当系统遇到内存不足、服务不可用、连接超时或登录失败等错误时提示技术部门(如果短时间内出现多次登录操作)。以下部分将展示如何在Splunk中设置警报。运行脚本进行搜索在此示例中,我们试图查看所有超过50,000美元的已批准索赔。生成结果集后,我们可以使用“另存为警报”命令设置警报。设置警报单击命令按钮“另存为警报”后,将创建一个表格以供填写以安排警报。我们可以给一个名字,然后根据定时系统的设置来规划闹钟时间。另外,我们还可以设置触发条件。CreateTriggerAction在我们设置完上面的必选参数后,我们就可以配置触发动作了。在本文介绍的测试中,我们将添加触发器(“添加操作”)操作,例如发送电子邮件(“发送电子邮件”)。在操作中,我们可以提供电子邮件ID、电子邮件文本。此外,如果需要,可以添加内联表支持。这样的设置将提供HTML格式的电子邮件文本,其中包含上述查询结果集中的内联表。总结Splunk提供了一个支持大数据的日志分析解决方案。具体来说,Splunk可以利用运维智能帮助企业及其相关人员实时查看系统状态。本文只介绍了一些基础报表,但实战中的Splunk报表可能非常复杂,进而可以创造更多的商业价值。此外,Splunk可以连接到数据库以创建基于数据库的结构化报告。此外,Splunk可以将日志数据推送到外部数据库,或者将数据从外部数据库复制到Splunk索引。一旦数据驻留,创建报告就很容易,并提供应用程序事务的整体视图。另外,Splunk也是一个很好的告警工具,可以提醒业务或IT团队,防患于未然解决问题。除了为IT团队提供日志分析解决方案外,Splunk在安全管理和DevOps方面也非常出色。此外,为了方便起见,Splunk还提供了连接器组件来连接其他应用程序。综上所述,通过使用Splunk,企业可以从应用日志和应用数据库中收集业务数据并进行技术分析,这将给企业带来巨大的收益。译者介绍朱宪忠,51CTO社区编辑,51CTO专家博主,讲师,潍坊某高校计算机教师,自由编程资深人士。早期专注于各种微软技术(编译成三本与ASP.NETAJX和Cocos2d-X相关的技术书籍)。/ESP32/RaspberryPi等物联网开发技术和Scala+Hadoop+Spark+Flink等大数据开发技术。原标题:BusinessAnalyticsfromApplicationLogsandDatabaseusingSplunk,作者:RoopeshUniyal
