1.數據索引和數據采集
index:后面加索引
source:是事件源自的文件,流或其他輸入的名稱。(對於從文件和目錄監視的數據,source的值是完整路徑)
sourcetype:是其來源的數據輸入的格式(sourceType決定了數據的格式化方式)
host:是發起事件的網絡主機的主機名,IP地址或完全限定域名。(查找源自特定設備的數據)
2.搜索關鍵字
例:|head 1000 只展示查詢結果中的前1000條日志
top:顯示字段最常見/出現次數最多的值
例:| top 10 id 獲取10個出現最多的id
limit:限制查詢,如:limit 5,限制結果的前5條
例:| top limit=1 ip 獲取發生次數最多的ip
rename xx as zz : 把xx設置別名為zz,多個之間用 “,”隔開
例:|rename student01 as 小明, student02 as 小芳 student01別名是小明,student02別名是小芳
fields :保留或刪除搜索結果中的字段。fiels – xx 刪除xx字段,保留則不需要 – 符號
例:|fields userId 保留userId字段
|fields -userId 刪除userId字段
例:|table userId 形成表,表由userId組成
sort:基於某個字段排序(升序、降序),降序的字段前面要使用-號,升序的使用+(可省略)
例:|sort 0 age age字段升序排列
eval:評估命令 后面通過表達式進行一些計算
例:|eval test=age+sex
|eval 新字段1=if(字段1 in("a","b","c"),"結果1","結果2") eval if in:如果字段1 的值為a,b,c中的任意一個,則新字段1的值為“結果1”,否則新字段1的值為“結果2”
iplocation:生成ip對應的地區信息,會在結果中加入Country,City兩個字段用來表明日志中ip的所在地
例:|iplocation ip |table Country,City,ip
table:在查詢結果中只展示對應的字段
例:|table 字段1,字段2,字段3
stats:將查詢結果進行聚合統計,類似SQL中的group
例:|stats count by 字段1,字段2 將查詢結果按字段1和字段2分組,統計記錄數量
timechart:將查詢結果以時間為x軸進行聚合統計
語法:timechart[sep=<string>][format=<string>][partial=<bool>][limit=<int>][agg=<stats-agg-term>][<bin-options>...]((<single-agg>[By<split-by-clause>])|(<eval-expression>)BY<split-by-clause>)
例:|timechart span=1h count by 字段 將查詢結果按字段分組,統計每小時記錄數
earliest latest:將查詢結果控制在某個時間范圍,一般用於子查詢或動態查詢。
現在:now 2小時前:-2h@h 1天前:-1d@d
例:index=* earliest=-2h@h latest=now
replace:將字段中的值替換為新值。可以使用通配符*進行模糊匹配
語法:replace(<wc-string> WITH<wc-string>)...[IN<field-list>]
例:|replace "原值" with "新值" in 字段名
tstats:對加速數據模型進行統計查詢
語法:| tstats [prestats=<bool>] [local=<bool>] [append=<bool>] [summariesonly=<bool>][allow_old_summaries=<bool>] [chunk_size=<unsigned int>] <stats-func>...[FROM ( <namespace> | sid=<tscollect-job-id> | datamodel=<data_model-name> )][WHERE <search-query> | <field> IN (<value-list>)][BY <field-list> [span=<timespan>] ]
例:|tstats summariesonly=t count from datamodel=數據模型名 where 1=1
regex :將刪除與指定正則表達式不匹配的結果
語法:regex (<field>=<regex-expression> | <field>!=<regex-expression> | <regex-expression>)
rex : 使⽤該命令既可以通過以正則表達式命名的群組提取字段,也可以通過 Sed 表達式替換或取代字段中的字符。
語法:rex [field=<field>](<regex-expression>[max_match=<int>] [offset_field=<string>])|(mode=sed <sed-expression>)
3.對滿足條件的事件進行統計
sort -字段, +字段, 先基於clientip降序排列之后,再對這個結果基於status升序
stats count() :括號中可以插入字段,主要作用對事件進行計數
stats dc():distinct count,去重之后對唯一值進行統計
stats values(),去重復后列出括號中的字段內容
stats list(),未去重之后列出括號指定字段的內容
stats avg(),求平均值
chart count():
chart max() [求出最大值]
chart min() [求出最小值]
chart avg() [根據第一次的結果求出平均值]
rex field=待提取數據的字段 "正則表達式" (rex需要用到正則表達式來提取需要的字段)
例:|rex field=_raw "userId\":\"(?<userId>\d+)"
注意,正則表達式中一定要給提出的字段定義名稱, ?<ip>表示將新字段命名為ip