Add logcli to sylva toolbox, and configure it in bin/env

Summary

logcli tool provided by loki project could be a nice addition to our toolbox, as it enables to retrieve the logs easily:

It can be retrieved from https://github.com/grafana/loki/releases, and configured that way:

export LOKI_USERNAME=loki-user
export LOKI_PASSWORD=$(get-sylva-values | yq ._internal.loki_password)
export LOKI_ADDR=https://loki.sylva
export LOKI_ORG_ID=management-cluster

Then it can be used to retrieve query and format logs using logql syntax, for example:

$ logcli query --quiet --output=raw  --since=1h --limit=20 '{namespace="calico-system"} | json | line_format "{{.message}}"' 
2024-08-12 16:09:58.056 [INFO][1] main.go 313: Health check is not ready, retrying in 2 seconds with new timeout: 8s
2024-08-12 16:09:58.022 [ERROR][1] main.go 297: Received bad status code from apiserver error=an error on the server ("[+]ping ok\n[+]log ok\n[-]etcd failed: reason withheld\n[+]kms-providers ok\n[+]poststarthook/start-encryption-provider-config-automatic-reload ok\n[+]poststarthook/start-kube-apiserver-admission-initializer ok\n[+]poststarthook/generic-apiserver-start-informers ok\n[+]poststarthook/priority-and-fairness-config-consumer ok\n[+]poststarthook/priority-and-fairness-filter ok\n[+]poststarthook/storage-object-count-tracker-hook ok\n[+]poststarthook/start-apiextensions-informers ok\n[+]poststarthook/start-apiextensions-controllers ok\n[+]poststarthook/crd-informer-synced ok\n[+]poststarthook/start-service-ip-repair-controllers ok\n[+]poststarthook/rbac/bootstrap-roles ok\n[+]poststarthook/scheduling/bootstrap-system-priority-classes ok\n[+]poststarthook/priority-and-fairness-config-producer ok\n[+]poststarthook/start-system-namespaces-controller ok\n[+]poststarthook/bootstrap-controller ok\n[+]poststarthook/start-cluster-authentication-info-controller ok\n[+]poststarthook/start-kube-apiserver-identity-lease-controller ok\n[+]poststarthook/start-deprecated-kube-apiserver-identity-lease-garbage-collector ok\n[+]poststarthook/start-kube-apiserver-identity-lease-garbage-collector ok\n[+]poststarthook/start-legacy-token-tracking-controller ok\n[+]poststarthook/aggregator-reload-proxy-client-cert ok\n[+]poststarthook/start-kube-aggregator-informers ok\n[+]poststarthook/apiservice-registration-controller ok\n[+]poststarthook/apiservice-status-available-controller ok\n[+]poststarthook/kube-apiserver-autoregistration ok\n[+]autoregister-completion ok\n[+]poststarthook/apiservice-openapi-controller ok\n[+]poststarthook/apiservice-openapiv3-controller ok\n[+]poststarthook/apiservice-discovery-controller ok\nhealthz check failed") has prevented the request from succeeding status=500
2024-08-12 16:09:50.095 [INFO][762981] felix/summary.go 100: Summarising 13 dataplane reconciliation loops over 1m5.1s: avg=34ms longest=132ms ()
2024-08-12 16:09:28.013 [INFO][2253] felix/int_dataplane.go 1954: Received *proto.NamespaceUpdate update from calculation graph msg=id:<name:"kube-job" > labels:<key:"kubernetes.io/metadata.name" value:"kube-job" > labels:<key:"kustomize.toolkit.fluxcd.io/name" value:"os-images-info" > labels:<key:"kustomize.toolkit.fluxcd.io/namespace" value:"sylva-system" > labels:<key:"pod-security.kubernetes.io/enforce" value:"baseline" > labels:<key:"pod-security.kubernetes.io/enforce-version" value:"latest" > labels:<key:"projectcalico.org/name" value:"kube-job" > 
2024-08-12 16:09:28.002 [INFO][762981] felix/int_dataplane.go 1954: Received *proto.NamespaceUpdate update from calculation graph msg=id:<name:"kube-job" > labels:<key:"kubernetes.io/metadata.name" value:"kube-job" > labels:<key:"kustomize.toolkit.fluxcd.io/name" value:"os-images-info" > labels:<key:"kustomize.toolkit.fluxcd.io/namespace" value:"sylva-system" > labels:<key:"pod-security.kubernetes.io/enforce" value:"baseline" > labels:<key:"pod-security.kubernetes.io/enforce-version" value:"latest" > labels:<key:"projectcalico.org/name" value:"kube-job" > 
2024-08-12 16:09:27.999 [INFO][3903] felix/int_dataplane.go 1954: Received *proto.NamespaceUpdate update from calculation graph msg=id:<name:"kube-job" > labels:<key:"kubernetes.io/metadata.name" value:"kube-job" > labels:<key:"kustomize.toolkit.fluxcd.io/name" value:"os-images-info" > labels:<key:"kustomize.toolkit.fluxcd.io/namespace" value:"sylva-system" > labels:<key:"pod-security.kubernetes.io/enforce" value:"baseline" > labels:<key:"pod-security.kubernetes.io/enforce-version" value:"latest" > labels:<key:"projectcalico.org/name" value:"kube-job" > 
2024-08-12 16:09:20.897 [INFO][2253] felix/summary.go 100: Summarising 10 dataplane reconciliation loops over 1m1.4s: avg=44ms longest=128ms ()
2024-08-12 16:09:08.746 [INFO][3903] felix/summary.go 100: Summarising 8 dataplane reconciliation loops over 1m0.5s: avg=58ms longest=201ms ()
2024-08-12 16:08:45.004 [INFO][762981] felix/summary.go 100: Summarising 7 dataplane reconciliation loops over 1m0.2s: avg=35ms longest=96ms (resync-filter-v4)
2024-08-12 16:08:19.521 [INFO][2253] felix/summary.go 100: Summarising 8 dataplane reconciliation loops over 1m2.2s: avg=47ms longest=151ms ()
2024-08-12 16:08:08.240 [INFO][3903] felix/summary.go 100: Summarising 8 dataplane reconciliation loops over 1m3.5s: avg=38ms longest=86ms (resync-ipsets-v4)
2024-08-12 16:07:44.740 [INFO][762981] felix/summary.go 100: Summarising 7 dataplane reconciliation loops over 1m2.6s: avg=50ms longest=138ms ()
2024-08-12 16:07:17.327 [INFO][2253] felix/summary.go 100: Summarising 9 dataplane reconciliation loops over 1m2.6s: avg=34ms longest=61ms (resync-nat-v4)
2024-08-12 16:07:04.730 [INFO][3903] felix/summary.go 100: Summarising 10 dataplane reconciliation loops over 1m3.7s: avg=55ms longest=214ms ()
2024-08-12 16:06:42.181 [INFO][762981] felix/summary.go 100: Summarising 12 dataplane reconciliation loops over 1m2.1s: avg=45ms longest=123ms ()
2024-08-12 16:06:14.742 [INFO][2253] felix/summary.go 100: Summarising 8 dataplane reconciliation loops over 1m3.4s: avg=49ms longest=142ms ()
2024-08-12 16:06:01.072 [INFO][3903] felix/summary.go 100: Summarising 8 dataplane reconciliation loops over 1m3s: avg=51ms longest=218ms ()
2024-08-12 16:05:40.119 [INFO][762981] felix/summary.go 100: Summarising 7 dataplane reconciliation loops over 1m2.1s: avg=31ms longest=61ms (resync-ipsets-v4)
2024-08-12 16:05:11.386 [INFO][2253] felix/summary.go 100: Summarising 9 dataplane reconciliation loops over 1m4s: avg=49ms longest=149ms ()
2024-08-12 16:04:58.130 [INFO][1] main.go 313: Health check is not ready, retrying in 2 seconds with new timeout: 8s

Additionally, it may be desirable to define few aliases that could ease this kind of queries if relevant.

Note that username/password/org_id may change when sylva-projects/sylva-core!1725 (merged) will be merged

Edited Aug 13, 2024 by Francois Eleouet
Assignee Loading
Time tracking Loading