本节书摘来自华章计算机《Splunk智能运维实战》一书中的第2章,第2.1节,作者 [美]乔史·戴昆(Josh Diakun),保罗R.约翰逊(Paul R. Johnson),德莱克·默克(Derek Mock),译 宫鑫,康宁,刘法宗 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第2章
深入数据——搜索和报表
2.1 简介
之前的章节介绍了将数据导入Splunk的各种方法。本章将深入数据内部,充分挖掘信息。
搜索机器数据是Splunk的核心功能之一,因此Splunk的许多其他特性和功能都是围绕搜索展开的。从基本的报表和仪表盘,再到数据模型和功能完备的Splunk应用程序,这些都是由Splunk搜索在后台提供支持。
搜索处理语言(SPL)
Splunk有自己的搜索语言,即 “搜索处理语言”(SPL)。SPL包括上百条搜索命令,其中大部分包含有多种函数、参数和子句。尽管我们需要对SPL作基本了解以便更有效地在Splunk中搜索数据,但无需了解所有的命令。即便是经验丰富的行家里手也无法掌握所有的命令,经常需要参考Splunk手册、网站和Splunk Answers(http://answers.splunk.com)。
要想使用SPL,一定要查看搜索命令速查表并下载快速参考指南,下载地址为: http://docs.splunk.com/Documentation/Splunk/latest/ SearchReference/SearchCheatsheet。
搜索
Splunk的搜索一般以基本搜索开头,随后是一系列命令,命令之间由管道符号 (|)分隔。管道左侧的命令或搜索的结果作为管道右侧下一命令的输入。Splunk搜索中常用多个管道来不断精炼所需的数据结果。当我们学完这章以后会非常熟悉这个概念。
Splunk允许日志数据中任何要素的搜索。举例来说,Splunk最基本的搜索是搜索关键词,如error或一个IP地址,如10.10.12.150。然而用Splunk在兆字节级别的数据中搜索一个单词或一个IP地址效率可能不会太高。因此可使用SPL和多种Splunk命令来提炼搜索。搜索越精细,搜索的执行时间就越少,就能越快找到所需数据。
使用Splunk进行搜索时,尝试在第一个管道符号前尽可能多地过滤内容,这将节省CPU和磁盘 I/O。此外,还需明智地选择时间范围。一般在测试的时候,先将搜索设定在较短的时间段,如果结果是需要的内容,再扩大时间范围。
布尔运算符
Splunk中可以用到三种类型的布尔运算符:AND、OR和NOT。区分大小写很重要,Splunk只能识别大写运算符。默认情况下AND运算符是隐含的,可以不写。
比如搜索error OR success将返回所有包含单词error或success的事件。搜索error success则返回所有同时包含error和success的事件。这个搜索的另一种写法为error AND success。在Web访问日志中搜索error OR success NOT mozilla将返回所有包含error或success的事件,但不返回包含mozilla的事件。
常用命令
Splunk包含一些搜索常用命令。下表为这些常用命令的概述。
时间修改器
图形用户界面(GUI)中,Splunk搜索栏右侧的时间范围选择器下拉菜单允许用户选择预设或自定义的时间范围。除使用GUI外,也可在搜索字符串中使用earliest和latest时间修饰符规定时间范围。这样使用时间修饰符会自动覆盖GUI中时间范围选择器设定的时间范围。
earliest和latest时间修饰符可接受多种时间单位,如:秒(s),分钟(m),小时(h),天(d),星期(w),月(mon),季度(q)和年(y)等。时间修饰符也可使用@符号向下取整到指定时间。
比如搜索sourcetype=access_combined earliest=-1d@d latest=-1h将搜索所有的access_combined事件,范围从一天前的午夜到距现在一小时之前。注意:(@)向下取整意味着,如果现在是夜晚12点,搜索会从一天半前的午夜开始算,一直到今天中午11点。
搜索字段
Splunk中的字段可以被认为是有着一个或多个值的关键词。这些字段都可以被Splunk搜索。进入Splunk的每个数据源至少包括源、主机、索引和源类型这四个字段,一些数据源会有数百个附加字段。如原始日志数据包含有键值对或以JSON或XML结构化格式呈现,Splunk将自动提取字段并使其可供搜索。Splunk也可通过后台的props.conf和transforms.conf配置文件来设定如何从原始日志数据提取字段。
搜索特定字段值很简单。比如sourcetype=access_combined status!=200将搜索含有源类型字段值为access_combined,且status字段值不等于200的事件。
Splunk包含多种预置的源类型,它们适用于常见的数据源。具体可查看:http://docs.splunk.com/Documentation/Splunk/latest/Data/ Listofpretrainedsourcetypes。
此外,技术附加组件(TA)包含有其他常见数据源的事件类型和字段提取,可从Splunk app store找到:http://apps.splunk.com。
保存搜索
在Splunk中,可保存搜索供日后再次使用,或用于仪表盘。保存的搜索被称为报表。单击主搜索栏右上角的“保存为”并选择“报表”即可保存。