kubectl + grep:Kubernetes 日誌分析與資源篩選的常用指令

  • 36
  • 0

由於本人記憶力不佳
要使用的時候,偶爾會打錯指令
所以紀錄一下自己常用的指令

kubectl + grep 常用語法

查看特定 pod 的資源使用情況(CPU 和記憶體使用量)
kubectl top pods | grep pod-name

查看特定 pod 的基本資訊
kubectl get pods | grep pod-name

 查看執行中的 pods
kubectl get pods | grep Running

 查看有問題的 pods
kubectl get pods | grep -E "Error|CrashLoop"

 查看特定容器的日誌中的錯誤
kubectl logs pod-name | grep -i error


grep 基本語法

基本搜尋選項

 區分大小寫搜尋(預設)
grep "error" log.txt

 不區分大小寫搜尋
grep -i "error" log.txt

 顯示行號
grep -n "error" log.txt

 反向搜尋(顯示不包含的行)
grep -v "success" log.txt

 計算符合的行數
grep -c "error" log.txt

顯示符合行的前後文
grep -A 3 "error" log.txt  # 顯示符合行及之後 3 行
grep -B 2 "error" log.txt  # 顯示符合行及之前 2 行
grep -C 2 "error" log.txt  # 顯示符合行及前後各 2 行

正則表達式 (Regular Expression)

搜尋以 "start" 開頭的行
grep "^start" file.txt

 搜尋以 "end" 結尾的行
grep "end$" file.txt

 搜尋包含任一關鍵字
grep "error\|warning\|critical" log.txt
 或使用 -E (extended regex)
grep -E "error|warning|critical" log.txt

 搜尋數字
grep "[0-9]" file.txt

 搜尋 email 格式
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" contacts.txt

 搜尋任意字元重複
grep "erro.*" log.txt  # 符合 error, errors, erroring 等

日誌分析

查找錯誤並顯示行號
grep -n "ERROR" application.log

 統計不同錯誤類型的數量
grep "ERROR" app.log | grep -c "DatabaseException"
grep "ERROR" app.log | grep -c "NetworkException"

 查找特定時間範圍的日誌
grep "2025-01-12 14:" application.log

 查找並顯示前後文
grep -C 5 "Exception" app.log