Loki 日志管理

Posted 君自故乡来,应知故乡事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Loki 日志管理相关的知识,希望对你有一定的参考价值。

一、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: \'^\\[\\d2:\\d2:\\d2 \\w4\\]\'\\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] 开头这种格式,所以对应正则是^\\[\\d2:\\d2:\\d2 \\w4\\]  按照你自己的日志开头编写对应正则替换即可

 

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)

 

「开源摘星计划」Loki实现Harbor日志的高效管理

本文已参与「​​开源摘星计划​​​」,欢迎正在阅读的你加入。​​​​​​​


前言

在Harbor的

使用Loki实现Harbor日志的管理,在Grafana页面查询Harbor的日志。


环境:

已通过Helm在Kubernetes集群中安装Harbor,Harbor服务部署在Harbor命名空间中。

Helm部署Harbor的文档请阅读:

Helm部署Harbor,实现高可用的镜像仓库(超详细分享)~后附踩坑记录

​https://blog.51cto.com/lidabai/5195706​

[root@master1 harbor]# kubectl -n harbor  get  pods
NAME READY STATUS RESTARTS AGE
harbor-chartmuseum-68f68d88ff-nq97s 1/1 Running 0 2m52s
harbor-core-7565bfb9cc-w5k29 1/1 Running 0 2m52s
harbor-database-0 1/1 Running 0 2m52s
harbor-jobservice-6747b486df-vm9zs 1/1 Running 0 2m52s
harbor-nginx-956fff988-r8dpx 1/1 Running 0 2m52s
harbor-notary-server-776f85f9c6-4nlsn 1/1 Running 0 2m52s
harbor-notary-signer-7f895d59d6-k5957 1/1 Running 0 2m52s
harbor-portal-5766b784c7-sndmz 1/1 Running 0 2m52s
harbor-redis-0 1/1 Running 0 2m52s
harbor-registry-6b88cfb465-fcxvn 2/2 Running 0 2m52s
harbor-trivy-0 1/1 Running 0 2m52s
[root@master1 harbor]# kubectl -n harbor get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
harbor NodePort 10.98.71.137 <none> 80:30002/TCP,4443:30004/TCP 3m5s
harbor-chartmuseum ClusterIP 10.102.194.148 <none> 80/TCP 3m5s
harbor-core ClusterIP 10.100.87.174 <none> 80/TCP 3m5s
harbor-database ClusterIP 10.100.79.72 <none> 5432/TCP 3m5s
harbor-jobservice ClusterIP 10.111.33.230 <none> 80/TCP 3m5s
harbor-notary-server ClusterIP 10.97.144.222 <none> 4443/TCP 3m5s
harbor-notary-signer ClusterIP 10.110.131.62 <none> 7899/TCP 以上是关于Loki 日志管理的主要内容,如果未能解决你的问题,请参考以下文章

删除loki中的日志

评测Loki日志工具

loki日志收集系统部署

loki日志收集系统部署

loki日志收集系统部署

docker容器使用loki收集日志