Pages - Menu

2022年3月28日 星期一

[ECK] kibana查詢語法

前言

前陣子只把kibana價起來就收工去弄其他東西了,
最近被人CC攻擊,要分析到底是誰,
才能阻擋,所以就有這篇跑出來了。

正文

KQL其實沒很複雜,
建議把介紹Kibana Query Language看完後基本上就會了。

主要常用的是,使用 特定欄位搜尋,

  1. 萬用字元 *

    例如,
    今天要搜尋一個 pod Name 叫 grafana
    那KQL 可輸入

kubernetes.pod.name: *grafana*

搜尋出來的名稱,只要是 中間有 grafana的通通會列出。

覺得前面名稱太長的話,輸入pod.name,用下拉選擇就好。

  1. 引號使用" "
    將裡面的字變成一個詞搜尋
    message: "hello world"
  1. 不使用引號
    裡面的字都會分別搜尋,已下面來說就是 會搜尋 hello 跟 world
kubernetes.pod.name: hello world
  1. and 跟 or 條件
    多條件查詢
    message: "hello world" and kubernetes.pod.name:*grafana*
  1. not 否定
    not (kubernetes.pod.name: *grafana*)
  1. 大於 小於 等於 判斷式 >, >= , <,<=
    @timestamp < "2021-01-30"
  1. 還有一種不使用KQL的查詢,Lucene
    這種語法可支援正則表達式,但KQL不支援。
    ref.Lucene query syntax

  2. nested fields 看來是可以查詢整串的json
    但我想不到可以運用在哪

  1. 搜尋x-forward-for ip
    有一個log如下圖,這個特別奇怪,不能加雙引號,
    『.』 在kibana裡面似乎有特殊的用法,

    kubernetes.namespace: istio-sigua and message: 103.170.26.90*
    
    如果要加雙引號的話,就必須搜尋完整的ip。
    kubernetes.namespace: istio-sigua and message: "221.210.89.170,10.120.17.1"
    
    追根究底,還是要把message對應到欄位…
    沒時間用阿QQ…

  2. 搜尋url path
kubernetes.namespace: istio-sigua and message: "img/huawei_ans02.c7bcdbdf.jpg"
kubernetes.namespace: istio-sigua and message: "img*"
  1. 特殊字元
    如果要用特殊字元查詢的話,要加上 \ ,
    但只限於下列這些關鍵字
    + - && || ! ( ) { } [ ] ^ " ~ * ? : \ /

ref.

沒有留言:

張貼留言