5.1 Grok 正則捕獲
5.1.1 正則表達式語法
- 可以在 grok 里寫標準的正則:
\s+(?<request_time>\d+(?:\.\d+)?)\s+
- 給配置文件添加第一個過濾器區段配置
- 配置要添加在輸入和輸出區段之間:
- 運行 logstash 進程然后輸入 "begin 123.456 end":
5.1.2 Grok 表達式語法
- 示例:
- 第一行,用普通的正則表達式來定義一個 grok 表達式
- 第二行,通過打印賦值格式,用前面定義好的 grok 表達式來定義另一個 grok 表達式
USERNAME [a-zA-Z0-9._-]+
USER %{USERNAME}
- grok 表達式的打印復制格式的完整語法是:
%{PATTERN_NAME:capture_name:data_type}
- 改進配置:
- 重新運行進程然后可以得到如下結果:
- 最佳實踐
- 把所有的 grok 表達式統一寫入到一個地方,然后用 filter/grok 的 patterns_dir 選項來指明
- 用 remove_field 參數來刪除掉 message 字段,或者用 overwrite 參數來重寫默認的message 字段,只保留最重要的部分
- 重寫參數的示例如下:
5.2 時間處理(Date)
- filters/date 插件可以用來轉換日志記錄中的時間字符串,變成 LogStash::Timestamp 對象,然后轉存到 @timestamp 字段里
- 配置示例
- filters/date 插件支持五種時間格式:
- ISO8601
- UNIX
- UNIX_MS
- TAI64N
- Joda-Time 庫
- filters/date 插件支持五種時間格式:
- 時間格式
- Joda 時間格式的配置示例:
- 注意:時區偏移量只需要用一個字母 Z 即可
5.3 數據修改(Mutate)
- filters/mutate 插件提供了豐富的基礎類型數據處理能力
- 包括類型轉換,字符串處理和字段處理等
- 類型轉換
- 可以設置的轉換類型包括:"integer","float" 和 "string"。示例如下:
5.3.1 字符串處理
- gsub
- 僅對字符串類型字段有效
gsub => ["urlparams", "[\\?#]", "_"]
- split
5.3.2 字符串處理
- split
- 隨意輸入一串以|分割的字符,比如 "123|321|adfd|dfjld*=123",可以看到如下輸出:
- join
- 僅對數組類型字段有效
- filter 區段之內,是順序執行的。所以我們最后看到的輸出結果是:
- merge
-
合并兩個數組或者哈希字段
-
5.3.3 字段處理
- rename
- 重命名某個字段,如果目的字段已經存在,會被覆蓋掉:
- update
- 更新某個字段的內容
- 如果字段不存在,不會新建
- replace
- 作用和 update 類似,但是當字段不存在的時候,它會起到 add_field 參數一樣的效果,自動添加新的字段
5.4 數值統計(Metrics)
- filters/metrics 插件是使用 Ruby 的 Metriks 模塊來實現在內存里實時的計數和采樣分析
- 該模塊支持兩個類型的數值分析:
- meter
- timer
- Meter 示例(速率閾值檢測):比如如果最近一分鐘 504 請求的個數超過 100 個就報警:
- Timer 示例(box and whisker 異常檢測)
大數據視頻推薦:
騰訊課堂
CSDN
ELK入門精講
AIOps智能運維實戰
ELK7 stack開發運維
大數據語音推薦:
ELK7 stack開發運維
企業級大數據技術應用
大數據機器學習案例之推薦系統
自然語言處理
大數據基礎
人工智能:深度學習入門到精通