#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
的設定打開
這個設定好後,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