赞
踩
转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南
Loki是由Grafana Labs开源的一个水平可扩展、高可用性,多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中,处理海量日志的问题。Loki采用了分布式的架构,并且与Prometheus、Grafana密切集成,可以快速地处理大规模的日志数据。该项目受 Prometheus 启发
ELK是大规模日志解决方案中的佼佼者说到Loki,免不了要拿来跟ELK做个对比
k8s 集群不提供日志收集的解决方案,一般来说有3 种方案来做日志收集:
日志系统会以DaemonSet 方式是在每个node 节点上部署一个agent,来采集这个节点上所有的日志,默认会收集k8s 下/var/log/pod
、/var/lib/docker/containers
下的日志,对应用程序的要求就是开启控制台打印,否则会收集不到日志,比较适用于功能单一或业务不是很多的集群;
Sidecar 方式会在每一个Pod中部署一个 sidecar 容器,来进行当前容器的日志采集,有多少个 pod,就会有多少个Sidecar容器,因此Sidecar相对资源占用较多,但灵活性以及多租户隔离性较强,适合大型的 K8s 集群使用,因为除了占用资源多点,采集性能不会有影响
Loki的Pormtail同时支持以上两种方式,默认为节点采集方式,下面我们演示如何在k8s 中快速部署一个Loki日志分析系统
helm repo add grafana https://grafana.github.io/helm-charts
helm pull grafana/loki-stack
解压完成以后,可以查看相关参数的使用
tar -xvf loki-stack-2.10.0.tgz
此Chart不止包含了Loki 、promtail、grafana,还包括其他组件,但是默认未开启,只开启了Loki 、promtail,这里为了演示,也开启grafana配置,通过grafana.enabled=true
指定,同时如果要指定相关子 chart 参数,根据子 chart 名称.参数
进行指定,比如要指定的grafana 的admin 密码,可以用grafana.adminPassword=admin
指定
注意:启动示例没有对日志数据进行持久化处理,正式部署要进行持久化配置
loki-stack中Grafana 的密码获取比较复杂,所以直接通过参数指定
helm install loki ./loki-stack -n loki-stack \
--set grafana.enabled=true \
--set grafana.adminPassword=admin \
--create-namespace
以上启动完成以后,会收集/var/log/pod
、/var/lib/docker/containers
日志信息,
查看启动pod,由于本人k8s 集群有 6 个node节点,所以部署了6 个promtail
修改 Grafana 为 nodeport 访问方式
kubectl edit svc loki-grafana -n loki-stack
登录成功以后,访问Explore
功能,并点击Log browser
按钮,会看到已经采集相关数据,并自动创建
app
、component
、container
、namepsace
、pod
等多个维度的 labels
比如要查看 ingress 的日志,选择命名空间为ingress-nginx
并点击 show logs
同时查询结果可以支持换行、日期排序等功能
以上默认的查询界面,使用起来可能没那么顺手,那么可以根据需求去定制不同的查询界面,在https://grafana.com/grafana/dashboards中输入 loki,可以下载感兴趣的Dashboard
helm uninstall loki -n loki-stack
以上我们快速演示了如何在 k8s 中部署一个Loki,可以看到非常简单,由于Loki 对k8s友好支持,默认就可以采集到pod、namespace 等标签数据,不需要额外配置,但是要达到生产级可用,还需要对 Loki的数据进行持久化配置、同时要根据采集日志数据的大小做好采集速率调整、以及日志过期策略设置
又到过年了,龙年红包封面是必备的,大家不要花钱购买了,我制作一款封面红包,数量4千个,效果如下
领取方法,关注公众号架构成长指南
,回复「封面」领取
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。