Kubernetes KEDAのログレベルを変更する

KEDAは常時起動でポーリングしQueue等をチェックしているので、結構なログの量になります。

現時点でログのレベルは debug, info, error の3つが設定可能で、デフォルトはinfoとなっています。

https://github.com/kedacore/keda#keda-operator-logging

この記事では、これを変更する方法を記載します。

ログレベルの確認

metricsでない方のkeda-operatorを確認して、以下の --zap-level=info の値がログレベルになります。

$ kubectl get po -n keda keda-operator-5895ff46b9-kd86s -o yaml
# --省略
spec:
  containers:
  - args:
    - --zap-level=info
    - --zap-time-encoding=epoch
# --省略

ログレベルの変更

ログレベルを変更してみます。 既存の定義からログレベルの部分を置換して、再デプロイします。

$ kubectl get deployment -n keda keda-operator -o yaml | sed -s 's/\-zap\-level=.*/\-zap\-level=debug/' | kubectl apply -f -
deployment.apps/keda-operator configured

これで、metricsでない方のkeda-operatorがReplaceされます。(AGEが少なくなっている)

$ kubectl get po -n keda 
NAME                                               READY   STATUS    RESTARTS   AGE
keda-operator-864bc877df-7wtj5                     1/1     Running   0          15s
keda-operator-metrics-apiserver-6774776dbc-9c6dd   1/1     Running   0          3d15h

ログレベルが変わっていることを確認します。

$ kubectl logs -n keda -f keda-operator-864bc877df-7wtj5
# --省略
{"level":"debug","ts":1588549950.7350438,"logger":"kubemetrics","msg":"Starting serving custom resource metrics"}
{"level":"debug","ts":1588549951.1408358,"logger":"k8sutil","msg":"Found namespace","Namespace":"keda"}
{"level":"debug","ts":1588549951.140867,"logger":"k8sutil","msg":"Found podname","Pod.Name":"keda-operator-7f8cc87b8d-nwgck"}
{"level":"debug","ts":1588549951.147501,"logger":"k8sutil","msg":"Found Pod","Pod.Namespace":"keda","Pod.Name":"keda-operator-7f8cc87b8d-nwgck"}
# --省略