部署 loki-stack
使用 helm 安裝,默認情況下只部署 loki 和 promtail。
# 添加 repo
helm repo add grafana https://grafana.github.io/helm-charts
# 安裝 chart
helm upgrade --install loki-stack grafana/loki-stack -n loki-stack --create-namespace
由於 promtail 被默認配置為處理 docker 格式的日志,而筆者使用的是 containerd,需要更改 promtail 的 configmap 設置為處理 cri (containerd) 格式的日志:
kubectl get -n loki-stack configmaps/loki-stack-promtail -o yaml | sed -E 's|- docker: \{\}|- cri: {}|g' | kubectl apply -n loki-stack -f -
# 修改 configmap 后需要重新部署 promtail
kubectl rollout restart -n loki-stack daemonsets/loki-stack-promtail
部署完成后,會開始自動收集 k8s 容器日志。
添加數據源
如果還未安裝 grafana,可以參考這里。
為了在 grafana 查詢日志,需要把 loki 作為數據源添加到 grafana
查詢日志
進入查詢頁面
這里舉例查詢 loki-stack namespace 下所有容器的日志
點擊 show logs 執行搜索
可以在 Log browser 填寫自定義 LogQL 表達式,然后點擊右上角 Run Query 執行搜索,簡單應用:
{namespace="loki-stack"} |= "start"
- 搜索 loki-stack namespace 下所有包含 start 字符串的日志
LogQL 表達式功能豐富,具體參見:https://grafana.com/docs/loki/latest/logql/log_queries/