Splunk常用关键字

1. search - 用于过滤事件

[search
...
]

# 在默认情况下,所有搜索都隐含了 search 命令

2. index - 用于指定搜索的索引

index = "xxx"

# 如果不指定索引,Splunk 会在所有可访问的索引中搜索

3. | - 管道符:将一个命令的输出作为另一个命令的输入

| where type == "result"

# 需要确保管道前后的命令逻辑上是连贯的

4. stats - 用于聚合数据

| stats values(nums) as num
| stats first(value) as max_value
| stats sum(num) as nums

# stats 命令后面通常跟聚合函数,如 count, sum, avg 等

5. eval - 用于计算表达式并将结果赋值给新字段

| eval version = split(version,",")
| eval version = mvindex(version,0)

# 拓展:加减乘除运算
| eval sum = field1 + field2 # 加
| eval difference = field1 - field2  # 减
| eval product = field1 * field2  # 乘
| eval quotient = field1 / field2  # 除
| eval remainder = field1 % field2  # 取余数
| eval power = pow(field1, field2)  # 幂 field1 的 field2次幂

6. fields - 用于指定需要显示的字段

| fields version, status

# 移除不必要的字段可以提高搜索效率

7. top - 用于找出最常见的值

| top messageType limit=5

# 会返回table 包含 messageType count percent(出现率)
# limit 可以限制返回的结果数量

8. rare - 用于找出最不常见的值

| rare messageType limit=5

# 同上,会返回table 包含 messageType count percent(出现率)
# limit 可以限制返回的结果数量

9. table - 用于格式化搜索结果为表格

| table host, status

# table 命令后面跟的字段名决定了表格的列

10. rex - 使用正则表达式提取字段

| rex field=Submit_Date "^(?<year_month>\d{4}-\d{2})"

# 表示匹配字段为Submit_Date,year_month为生成字段名,\d{n}为匹配n个数字 \d{4}-\d{2}则表示 xxxx-xx 即年-月

11. append - 将一个搜索结果追加到另一个搜索结果后面

index=web_logs 
| append [search index=error_logs]

# 这会增加结果集的大小,可能影响性能,适用于结果集较小的情况

12. join - 根据共同字段合并两个搜索结果

| join type=outer host [search index=error_logs]

# type=left 相当与SQL中 left join(左连接),保留左侧(主搜索结果)的所有记录,即使右侧没有匹配项

13. sort - 对事件或结果进行排序

| sort -count

# 默认正序排列,加 - 倒序排列

14. head/tail - 获取搜索结果的前几个或后几个事件

| head 10
| tail 10

# 保留前10/后10个结果

15. dedup - 删除搜索结果中的重复事件

| dedup host

# 去重

16. fillnull - 用自定义值填充空字段

| fillnull value=NA status

# 以NA填充空值

17. mvexpand - 将多值字段展开为多个事件

| mvexpand item

# 将单表格内一行一行的字段拆开

18. where - 条件语句

| where counts > 1000

# 书写过滤条件

19. xyseries - 将事件转换为 X-Y 系列,用于图表

| xyseries X Y Num

# X为x轴,Y为y轴,Num为x-坐标点值

20. accum - 计算累计总和

| accum Total_type as cumulative_total_type

# 创建一个新字段,其中包含累积总数

21. chart - 创建统计图表

| chart count(Plan_Status) over Dept by Plan_Status

# over Dept指定了图标的X轴
# by Plan_Status 表示根据plan_status的不同值分为不同的系列
# count(Plan_Status) 计算了plan_status的数量

22. crawl - 从网页或文本文件中提取数据

| crawl start_url="http://www.baidu.com"

# 用于从网页中提取数据,需要网络访问权限

23. fields - 显示或隐藏指定的字段

| fields + host, - status

# 使用 + 或 - 来显示或隐藏字段

24. reverse - 反转事件的顺序

| reverse

# 让最新的事件最先显示 

25. strptime - 将字符串的值转换为时间对象

| strptime(Submit_Time, "%Y/%m/%d %H:%M")
| eval Submit_Time = strftime(strptime(Submit_Time, "%Y/%m/%d %H:%M"), "%Y/%m")

# 将格式为 “年/月/日 时:分” 的字符串转换为时间对象
# 将时间对象格式化为 “年/月” 格式的字符串,并赋值给Submit_Time

26. values - 获取唯一值

| stats values(GEN)

# 获取GEN的唯一值

27. like - 模糊匹配

| like (name,"zeng%")  

# 能够匹配的格式如:zeng_nb

28. streamstats - 累计统计信息

| streamstats sum(field_name) as cumulative_field_name  

# 统计搜索开始到当前事件的 field_name 字段值的累计总和

29. spath - 提取/处理嵌套数据

| spath path="data.detail.detail_info" output=detail_info

# 提取 detail_info 字段,便于后续处理

30. mvzip - 合并多个字段

| eval combine = mvzip(Case_Name,Result)

# 合并两个字段,以 , 连接(只能两两使用)

| eval combine = mvzip(case_name,case_pass,"__")

# 默认以 , 连接,可以自定义连接符

31. rename - 重命名字段

| rename old_field_name as new_field_name

# 以指定名字替换原名

32. replace - 替换字段值

| replace "原字段值" with "新字段值" in "字段名"

# 替换指定字段内的值为指定新字段值

33. split - 分割字段

| eval combine=split(combine,",")

# 以 , 分割指定字段 形成多值字段

34. mvindex - 按索引取值

| eval Result = mvindex(combine,1)

# 将多值字段combine索引为1的字段赋值给Result

35. round - 保留小数

| eval Pass_Rate = round((Pass/(Pass+Fail))*100,3)

# round(X,n) 表示对X保留n位小数;

36. >/< - 过滤数据大于或小于某个值的范围

index=你的索引名称 duration > 2000

# 过滤了在这个索引下 duration > 2000 的数据

37. mvfilter - 用于过滤多值字段中的值

| eval fail_reasons = mvfilter(fail_reasons != "Pass")

# 过滤掉多值字段fail_reason中等于"Pass"的值,只保留不等于"Pass"的值

38. mvjoin - 用于连接所有值成为一个字符串

| eval fail_reason = mvjoin(fail_reasons, "__")

# 将 fail_reasons 字段中的所有值连接成一个字符串,并使用"__"作为分隔符

posted @ 2024-05-14 16:01  wellplayed  阅读(283)  评论(0编辑  收藏  举报