Loading

使用 loki 收集、查询 k8s 容器日志

部署 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/

posted @ 2022-01-06 13:39  roy2220  阅读(1870)  评论(0编辑  收藏  举报