Angle Grinder – 在 Linux 中格式化和解析日誌文件的工具

您是否厭倦了在不同的文本編輯器中打開文件,同時在命令行上工作以解析和僅獲取所需的信息。 編寫更長的命令來僅對需要的數據進行切片,或編寫用於格式化的正則表達式命令。 讓我們使用 ag(角磨機)工具解決您的問題。 是的,ag 允許您在命令行上對文件進行切片、格式化和解析。

只有使用角磨機才能在秒內處理數百萬行或以閃電般的速度分析文件中的數據。 在處理任何文件時,結果會在終端上實時更新,這讓您可以控制數據,並且可以在需要時停止處理。 在終端上輕鬆解析文檔並從 json、日誌或任何其他文件中檢索需要的信息。 在大多數情況下,您不必考慮軟件的工作原理,您可以專注於交互式軟件並以您想要的方式使用終端。 該工具旨在使終端更強大,用戶可以有效地利用其時間,而不是將其浪費在其他非終端工具上。

角磨機特點:

  • 解析、聚合、匯總和排序文件中的數據
  • 終端實時更新
  • 更好的數據分析 – 日誌檢查
  • 也許 ag 與傳統文本處理方法相比,用於查看日誌文件的最大優勢在於它可以輕鬆按日期搜索(教程中未涵蓋)

因此,不要浪費更多時間,讓我們動手吧。

安裝

任何版本的 Linux 和 Mac OS 都支持 agrind/ag/angle-grinder 工具。 您可以在任何系統和 ag 上使用一個命令。

$ curl -L https://github.com/rcoh/angle-grinder/releases/download/v0.7.2/angle_grinder-v0.7.2-x86_64-unknown-linux-musl.tar.gz 
  | tar Ozxf - 
  | sudo tee /usr/local/bin/agrind > /dev/null && sudo chmod +x /usr/local/bin/agrind

安裝大約需要 2-3 分鐘,具體取決於您的互聯網速度。
安裝 ag 工具後,您所要做的就是檢查“ag 或 agrind”命令是否在您的機器上運行。

句法

agrind 工具適用於多個系列的運算符和多個“|” 用於傳遞每個部分的輸出以過濾或解析或聚合數據。 通常,初始操作將解析數據文件或 JSON,然後是聚合或分組或確定總出現次數,此列表不限於您可以探索自己並學習其他操作符的不同方法。

使用 ag 工具

我們正在使用包中提供的示例文件進行演示,對於未來的命令不要忘記這個語法,

agrind ' | operator1 | operator2 | operator3 | ...'

所以讓我們從不同的開始 example 逐個,

過濾器運算符

過濾命令將列出其中帶有 ERROR 標記的行,假設您正在使用網絡文件,並且突然間您需要從其日誌中找出錯誤。 這個簡單的命令對你來說很有魅力。 您需要做的就是在 ”(單引號)中傳遞 WORD。

$ sudo cat filter_test.log | agrind '"ERROR"'

非聚合運算符

test_json 日誌文件包含錯誤消息。 這個研磨機查詢將顯示所有行,因為我們使用了 *. 它會將輸出顯示為 JSON(JavaScript Object Notation)格式。 即作為輕量級數據交換格式。 它將在方括號中顯示來自每個日誌文件行的每個數據。 意味著人類可讀。 數據現在被拆分為值(Key)和消息(Value),

 
nbsp;cat test_json.log | agrind '* | json'

在哪裡

在滿足 if(condition) 的情況下,行保持原樣,但如果不滿足條件,則刪除行。 在下面的命令中,左邊是列名,而右邊是條件。 例子

$ cat test_parse.log | agrind '* | json | where status_code >= 400'

一個,另一個 example

$ python -u gen_logs.py |agrind '* | json | p50(response_ms) by status_code,url'||

ag 支持的其他非聚合操作是,

  • JSON,讓您解析 JSON 格式的輸出。
  • Parse,將匹配模式的文本解析為變量。 與模式不匹配的行將被刪除。
  • 字段,用於條件刪除。

聚合運算符

$ python -u gen_logs.py

可以使用的其他運算符,

  • 數數
  • 總和,行值是非數字的,而不是不被考慮的
  • 平均值,列中的平均值。
  • 種類
  • 計數不同

使用運算符解析 – 渲染

$ cat test_parse.log | agrind '* | parse "in *ms" as response_time'

希望您喜歡本教程並讓我們知道您的意見。

另請閱讀:

  • Squid Analyzer – Squid 代理 access.log 文件的解析器
  • 在 Red Hat Linux 中設置集中式 Syslog 服務器
  • 7 個 Linux Tail 命令示例以及它如何幫助監控日誌

資源 :

角磨機 GitHub 存儲庫