网站海外推广建设,网站视频模块配置参数,模版免费网站,十大网站平台转载至我的博客 https://www.infrastack.cn #xff0c;公众号#xff1a;架构成长指南 Loki 是什么#xff1f;
Loki是由Grafana Labs开源的一个水平可扩展、高可用性#xff0c;多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中#x… 转载至我的博客 https://www.infrastack.cn 公众号架构成长指南 Loki 是什么
Loki是由Grafana Labs开源的一个水平可扩展、高可用性多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中处理海量日志的问题。Loki采用了分布式的架构并且与Prometheus、Grafana密切集成可以快速地处理大规模的日志数据。该项目受 Prometheus 启发 Promtail是代理负责收集日志并将其发送给 Loki 。Loki 是主服务器负责存储日志和处理查询。Grafana则 用于 UI 展示。
与ELK相比优势在哪里
ELK是大规模日志解决方案中的佼佼者说到Loki免不了要拿来跟ELK做个对比
架构简单Loki 则采用分布式架构、可以将日志存储在多个节点上也可以存储在一个节点上其中Promtail进行日志收集、Loki 负责存储查询、Grafana用于展现存储更小Loki使用了紧凑的索引和压缩算法相比ES 可以减少不少存储空间没有采集日志格式要求提供了更大的灵活性以及在查询时格式化的选项与 Prometheus、Grafana 和 K8s 原生集成可以在单个用户界面中无缝切换查询指标、日志等数据轻量级相比ELKLoki更加轻量级因为它不需要一个单独的Elasticsearch集群来存储和索引日志数据
如何采集数据
k8s 集群不提供日志收集的解决方案一般来说有3 种方案来做日志收集
在Node节点上运行一个 agent 来收集日志DaemonSet 采集方式在 Pod 中包含一个 sidecar 容器来收集应用日志sidecar 采集方式由应用程序将日志信息推送到采集后端主动采集方式
节点采集方式 日志系统会以DaemonSet 方式是在每个node 节点上部署一个agent来采集这个节点上所有的日志默认会收集k8s 下/var/log/pod 、/var/lib/docker/containers下的日志对应用程序的要求就是开启控制台打印否则会收集不到日志比较适用于功能单一或业务不是很多的集群;
Sidecar采集方式 Sidecar 方式会在每一个Pod中部署一个 sidecar 容器来进行当前容器的日志采集有多少个 pod就会有多少个Sidecar容器因此Sidecar相对资源占用较多但灵活性以及多租户隔离性较强适合大型的 K8s 集群使用因为除了占用资源多点采集性能不会有影响
Loki的Pormtail同时支持以上两种方式默认为节点采集方式下面我们演示如何在k8s 中快速部署一个Loki日志分析系统
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.enabledtrue指定同时如果要指定相关子 chart 参数根据子 chart 名称.参数进行指定比如要指定的grafana 的admin 密码可以用grafana.adminPasswordadmin指定 启动 注意启动示例没有对日志数据进行持久化处理正式部署要进行持久化配置 loki-stack中Grafana 的密码获取比较复杂所以直接通过参数指定
helm install loki ./loki-stack -n loki-stack \
--set grafana.enabledtrue \
--set grafana.adminPasswordadmin \
--create-namespace 以上启动完成以后会收集/var/log/pod 、/var/lib/docker/containers日志信息
查看启动pod由于本人k8s 集群有 6 个node节点所以部署了6 个promtail Grafana访问
修改 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 loki卸载
helm uninstall loki -n loki-stack总结
以上我们快速演示了如何在 k8s 中部署一个Loki可以看到非常简单由于Loki 对k8s友好支持默认就可以采集到pod、namespace 等标签数据不需要额外配置但是要达到生产级可用还需要对 Loki的数据进行持久化配置、同时要根据采集日志数据的大小做好采集速率调整、以及日志过期策略设置
又到过年了龙年红包封面是必备的大家不要花钱购买了我制作一款封面红包数量4千个效果如下 领取方法关注公众号架构成长指南回复「封面」领取