Loki 日志管理

发布时间 2023-04-07 15:00:37作者: 凡人半睁眼

一、loki

Installation | Grafana Loki documentation

1、loki介绍

Loki是 Grafana Labs 团队发布的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。

项目受 Prometheus 启发,官方的介绍就是:Like Prometheus, but for logs.,类似于 Prometheus 的日志系统

 

二、docker 容器的log

1、安装loki的docker plugin

Docker driver | Grafana Loki documentation

docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions

#当有新版本时, 更新plugins
docker plugin disable loki --force
docker plugin upgrade loki grafana/loki-docker-driver:latest --grant-all-permissions
docker plugin enable loki
systemctl restart docker

全局收集配置

编辑daemon.json。

{
  "log-driver": "loki",
  "log-opts": {
    "loki-url": "http://YOUR_IP:3100/loki/api/v1/push",
    "max-size": "50m",
    "max-file": "10",
    "loki-pipeline-stages": "- multiline:\n      firstline: '^\[\d{2}:\d{2}:\d{2} \w{4}\]'\n"
  },
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

记得把YOUR_IP换成loki所在主机的IP,一般都是本机的局域网地址,如果loki映射的端口换了记得这里也需要换。镜像仓库地址也可以换成自己云服务的。

其中max-size表示日志文件最大大小,max-file表示最多10个日志文件,都是对单个容器来说的,    multiline是配置多行识别(默认最多128行),转为单行, firstline表示单条日志的首行正则表达式

我的是 [03:00:32 INFO] 开头这种格式,所以对应正则是^\[\d{2}:\d{2}:\d{2} \w{4}\]  按照你自己的日志开头编写对应正则替换即可

 

2、安装promtail代理,挂载容器日志路径

docker部署grafana loki日志系统_docker loki_freesharer的博客-CSDN博客

 

三、kubelet是如何管理pod内的容器日志的

1、结论

  k8s下容器日志默认目录为:

pod会按容器的重启次数对应保留日志,具体保留个数应该与GC策略有关

/var/log/pods/<pod namespace>_<pod name>_<pod uid>/<容器名称>/重启重启次数.log,并且是文件

/var/lib/docker/containers/<容器id>/<容器id>-json.log的链接

  自定义路径类型(pvc、hostpath等)

kubectl get pod  xxx  -n  namespace  -o yaml | grep -i volumes -C 5
volumes:
- hostPath:
path: /mnt/nfs/xxx/backend/

pod容器日志管理 - 简书 (jianshu.com)