什么是Splunk
Splunk 是机器数据的全文搜索引擎。
机器数据是指:设备和软件产生的日志数据、性能数据、网络数据包。这些数据都是一些非结构化的数据,我们可以统一将这些数据统一采集到splunk之后,splunk可以对这些数据进行索引、调查、监控、可视化等。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据 。
Splunk的功能
数据采集、数据索引、搜索和分析
接下来,我们就从这三方面开始学习Splunk
1.数据采集
采集静态数据,也可以实时地监控文件或者整个目录的变化和增加。也可以从网络端口或直接从程序或脚本中收集数据。
导入静态日志数据,导入数据步骤中,我们会看到几个名称概念,source、sourceType、host。
(1)source
是事件源自的文件,流或其他输入的名称。对于从文件和目录监视的数据,source的值是完整路径,例如/archive/server1/var/log/messages.0或/var/log/。基于网络的数据源的源的值是协议和端口,例如UDP:514。后面查询可以根据source来筛选;
(2)sourceType
是其来源的数据输入的格式,sourceType决定了数据的格式化方式。选择不同的sourceType,Splunk自动识别的常见源类型列表包括NCSA组合格式HTTP Web服务器日志,标准Apache Web服务器错误日志,Cisco网络设备(包括PIX防火墙,路由器,ACS等)生成的标准syslog。查询还可以根据sourceType来筛选。
(3)host
host值通常是发起事件的网络主机的主机名,IP地址或完全限定域名。主机值允许您查找源自特定设备的数据。就比如同样的source和sourceType的数据,是从不同的主机发过来的,我们可以根据host来区分。
2.数据索引
数据索引:index,就类似于database,我们查询日志的时候,要先确认筛选是哪个database。
默认index:main (如果转发过来的数据不指定索引,则会保存在默认的main索引中)
3.搜索和分析
首先我们可以根据index、source、sourceType筛选查询相应的日志。
其次我们学习一些常用的搜索语言:
top, 显示字段最常见/出现次数最多的值
rare, 显示字段出现次数最少的值
limit,限制查询,如:limit 5,限制结果的前5条
rename xx as zz : 为xx字段设置别名为zz,多个之间用 ,隔开
fields :保留或删除搜索结果中的字段。fiels – xx 删除xx字段,保留则不需要 – 符号
例如:
index=main source="splunkd.log" host="izuf6dpdm2qb6rp21s37irz" sourcetype="splunkd"
| top event_message limit=5
| fields event_message count |rename event_message as message
table :返回仅由参数中指定的字段所形成的表。
sort,基于某个字段排序(升序、降序),降序的字段前面要使用-号,升序的使用+
sort -字段, +字段, 先基于clientip降序排列之后,再对这个结果基于status升序
stats count() :括号中可以插入字段,主要作用对事件进行计数
stats dc():distinct count,去重之后对唯一值进行统计
stats values(),去重复后列出括号中的字段内容
stats list(),未去重之后列出括号指定字段的内容
stats avg(),求平均值