一、Loki是什么

https://grafana.com/docs/loki/latest/overview/
对Loki的认识可以Google搜一搜,网上的介绍基本上都差不多
https://zhuanlan.zhihu.com/p/153415749

  • loki是主服务器,负责存储日志和处理查询。
  • promtail是专为loki定制的代理,负责收集日志并将其发送给 loki
  • Grafana用于 UI展示。

Grafana,在部署Prometheus-Operator时已经部署了,所以下面只需要在平台上安装Loki和Promtail组件就可以了。

二、怎么安装Loki

1. 安装loki

https://grafana.github.io/loki/charts/

value.yaml 示例

  1. ingress:
  2. enabled: true
  3. annotations:
  4. kubernetes.io/ingress.class: nginx
  5. kubernetes.io/tls-acme: "true"
  6. hosts:
  7. - host: loki.3incloud.cn
  8. paths:
  9. - /
  10. tls:
  11. - secretName: tls-3incloudcn
  12. hosts:
  13. - loki.3incloud.cn
  14. config:
  15. table_manager:
  16. retention_deletes_enabled: true
  17. retention_period: 1344h
  18. persistence:
  19. enabled: true
  20. accessModes:
  21. - ReadWriteOnce
  22. size: 400Gi
  23. resources:
  24. limits:
  25. cpu: 4000m
  26. memory: 8000Mi
  27. requests:
  28. cpu: 2000m
  29. memory: 4000Mi
  30. serviceMonitor:
  31. enabled: true
  32. additionalLabels:
  33. release: g-kube-prometheus-stack

retention_deletes_enabled和retention_period配置的作用是日志保留时间,需要是168的倍数 https://my.oschina.net/u/1787735/blog/4429161

安装

# 创建命名空间loki
kubectl create ns loki

helm upgrade --install loki loki/loki -n loki -f value.yaml

2. 安装promtail

默认安装既能收集Pod日志,具体配置方法还没学会,参考官方文档https://grafana.com/docs/loki/latest/

三、查询日志

1. Grafana中新增Loki数据库

image.png

2. 按照Label查询容器日志

我们想要查询ingress-nginx的日志,我们选择Pod的Label就能加载出对应的日志。
image.png
这个和在控制台查看日志是不是异曲同工,能将一组容器的日志归并到一个控制台上。

但好像无法对日志内容进行搜索?

3. 添加Loki Dashboard

下面通过更新prometheus-operator安装包中的grafana参数来安装grafana-piechart-panel插件,同时,在之前的安装中,没有为grafana挂载存储,在每次升级grafana pod后,一些配置也丢失了,这次更新,引入了persistence ,这样,我们在grafana上导入的视图等配置就能持久化了。

grafana:
  plugins:
   - grafana-piechart-panel
  persistence:
    enabled: true
    storageClassName: glusterfs-storage
  ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: nginx
      kubernetes.io/tls-acme: "true"
    hosts:
      - grafana.3incloud.cn
    path: /
    tls:
      - secretName: tls-3incloudcn
        hosts:
        - grafana.3incloud.cn

Next

看看怎么配置 promtail?随心所欲的收集日志。