前言
前陣子只把kibana價起來就收工去弄其他東西了,
最近被人CC攻擊,要分析到底是誰,
才能阻擋,所以就有這篇跑出來了。
正文
KQL其實沒很複雜,
建議把介紹Kibana Query Language看完後基本上就會了。
主要常用的是,使用 特定欄位搜尋,
-
萬用字元 *
例如,
今天要搜尋一個 pod Name 叫 grafana
那KQL 可輸入
kubernetes.pod.name: *grafana*
搜尋出來的名稱,只要是 中間有 grafana的通通會列出。
覺得前面名稱太長的話,輸入pod.name,用下拉選擇就好。
- 引號使用" "
將裡面的字變成一個詞搜尋
message: "hello world"
- 不使用引號
裡面的字都會分別搜尋,已下面來說就是 會搜尋 hello 跟 world
kubernetes.pod.name: hello world
- and 跟 or 條件
多條件查詢
message: "hello world" and kubernetes.pod.name:*grafana*
- not 否定
not (kubernetes.pod.name: *grafana*)
- 大於 小於 等於 判斷式 >, >= , <,<=
@timestamp < "2021-01-30"
-
還有一種不使用KQL的查詢,Lucene
這種語法可支援正則表達式,但KQL不支援。
ref.Lucene query syntax -
nested fields 看來是可以查詢整串的json
但我想不到可以運用在哪
- 搜尋x-forward-for ip
有一個log如下圖,這個特別奇怪,不能加雙引號,
『.』 在kibana裡面似乎有特殊的用法,
如果要加雙引號的話,就必須搜尋完整的ip。kubernetes.namespace: istio-sigua and message: 103.170.26.90*
追根究底,還是要把message對應到欄位…kubernetes.namespace: istio-sigua and message: "221.210.89.170,10.120.17.1"
沒時間用阿QQ… - 搜尋url path
kubernetes.namespace: istio-sigua and message: "img/huawei_ans02.c7bcdbdf.jpg"
kubernetes.namespace: istio-sigua and message: "img*"
- 特殊字元
如果要用特殊字元查詢的話,要加上 \ ,
但只限於下列這些關鍵字+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
ref.
0 意見:
張貼留言