GKE logging intro

sasa :)
Apr 7, 2021

--

#GKE #GKE logging #log解讀入門

這篇文章是ref: https://medium.com/google-cloud/a-quick-gke-logs-primer-a978f60daa7

在使用GKE時,其實有各式各樣的log

不管是Google manage的cluster的log,master node的log,pod的log等等

其實Google都會把這些相關資訊丟進 Stackdriver > logging 裡面

設定打開

要將所有的log集中到 stackdriver 中的前提是

要在create cluster時,把 Cloud Operations for GKE 的設定打開

enable cloud operations for GKE

這個設定好後,Google就會直接幫你送log進到 stackdriver

Log種類

Activity log in GKE

GCP中定義的audit logs中的一員

因此不能被disabled,且可以追蹤到resource的狀態,可以查到誰在什麼時候做了什麼事。

可以透過這個filter抓出來:

logName="projects/myprj/logs/cloudaudit.googleapis.com%2Factivity"

在GKE中的activity log主要會含兩種資訊:

  • GCP cluster的操作
  • GCP cluster中 kubernetes objects的操作

但由於這類的資訊太多,因此,若只想focus到user實際上做了什麼,

可以使用下述filter(濾掉系統的log)

NOT protoPayload.authenticationInfo.principalEmail: "system"

還可以再搭配 resource.type在過濾,只留下想看到,例如:

  • resource.type="gke_cluster":以GCP resource的角度來看cluster。
  • resource.type="k8s_cluster":以kubernetes的角度來看cluster。

Event Logs

大致上包含:

  • kubectl後留下來的log。
  • cluster中由kubernetes引發的log。例如:為何pod被evicted之類的。
  • GKE service agent沒有相關權限做某些事情時,例如:在shared VPC中藥自動建立防火牆,但權限沒開好之類的。

filter如下

logName="projects/MY_PROJECT_ID/logs/events"

Node Logs

主要是指node裡面跑的kubernetes service噴出來的log

eg. kubelet, node problem detector, container runtime…

filter如下:

resource.type="k8s_node"

Container Logs

container中的 stdout and stderr的log

filter如下:

resource.type="k8s_container"

其實不是只有這些filter可以用啦

只是這些會可以先過濾出GKE(K8S)相關的log,讓人比較好追問題而已。

先筆記到這邊

有想到其他的再補上

ref: https://medium.com/google-cloud/a-quick-gke-logs-primer-a978f60daa7

--

--

sasa :)
sasa :)

Written by sasa :)

目標是做一個讓所有人都聽得懂技術語言的transfer person

No responses yet