Posted at

GKEがデフォルトで提供してくれるログ まとめ (新Kubernets Monitoring版)

More than 1 year has passed since last update.

Stackdriver Kubernetes Monitoring がベータ版としてリリースされて、

そっちに移行するとログまわりの構成が以前 (GKEがデフォルトで提供してくれるログ まとめ) とはかなり変化する。

image.png

GKE ~ が以前までのログ。

クラスタ作成時に↓のチェックをつけて新しいモニタリングにすると、 Kubernets~ になる。

image.png

なお1.10以上必須で、さらに、クラスタ新規作成じゃないと有効にはできない 1.9から1.10にしても、Kubernetes Monitoringは有効にできないので少しハードルが高い。

(ただ実際有効にしてみると後述のように盛大にログの出方も変わり、1.9からのマイグレーションをするのが辛そうなのは察せた・・・)

以下、Stackdriver Kubernetes Monitoring時代のGKEがデフォルトで提供してくれるログ まとめ


Kubernets Container (resource.type="k8s_container")

おそらく旧 GKE Container (resource.type="container") とおなじ。

デプロイされた各コンテナの標準出力、標準エラー出力が送られてくる。


logNameがコンテナ名ではなく stdout ,stderr になった

Stackdriver Kubernetes Monitoring有効無効関わらずではなくGKE 1.10以上での変化なんじゃないかという気がしている。

コンテナごとのログを見るためには resource.label.container_name でフィルタすることになった。


Kubernets Cluster (resource.type="k8s_cluster") / Kubernets Pod (resource.type="k8s_pod")

旧GKE Cluster Operations (resource.type="gke_cluster") だったものが、

Pod内関連のログがKubernets Pod、Pod外のログがKubernets Clusterに分割された模様。

さらに、一部のログ "Node (node名) status is now: NodeHasInsufficientMemory" などは次に出てくる Kubernets Node に分割されている

例えば"pulling image", "Started container"などはKubernets Pod

"Scaled up replica set", "Created job"とかはKubernets Cluster

なお"Created pod"はKubernets Clusterに来る


Kubernets Node (resource.type="k8s_node")

以前はk8sノードであること関係なく、通常のinstanceでロガー使ったのと同じように GCE VM Instance (resource.type="gce_instance") として出ていた。

インスタンス上で直接動く各種プロセスからのログが送らてくる。


  • kubelet

  • kube-proxy

  • docker

  • container-runtime

などのログが見える。

その中に混じって、前述のとおり "Node (node名) status is now: NodeHasInsufficientMemory" などの以前はGKE Cluster Operationsとして出ていたものが混ざっている。


その他こまかな変化

resource.label.namespace_idresource.label.namespace_name 、のように ..._id だったのが ..._name に変わっている。


おわり

正式なドキュメントを見つけれていないけど、かなりログが変わる。

ログベースで監視とかしていて、フィルタ条件が完全に狂って混乱したので、

これからStackdriver Kubernetes Monitoringを使い始める人は注意しておくといいと思います。