k8s的日志方案-Loki

一.传统的日志方案

EFK:Elastic Search+Fluentd+Kibana

ELK: Elastic Search+Logstash+Kibana

传统日志方案的优势:

1.功能完善

2.具有丰富的案例,在行业中已经被广泛应用

缺点:

1.灵活性差

2.资源消耗量大(针对的是kubernetes环境而言)

二.云原生的日志服务器Loki

之所以能称之为云原生,是因为Loki是云场景的特性而诞生的一个日志解决方案。

Loki的架构:Promtail+Grafana loki+Grafana

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

Promtail介绍:

1.用来将容器日志发送到Loki 或者 Grafana 服务上的日志收集工具

2.该工具主要包括发现采集目标以及给日志流添加上Label 标签 然后发送给Loki

3.Promtail 的服务发现是基于 Prometheus 的服务发现机制实现的

loki介绍:

1.受 Prometheus 启发的可以水平扩展、高可用以及支持多租户的日志聚合系统

2.使用了和 Prometheus 相同的服务发现机制,将标签添加到日志流中而不是构建全文索引

3.从 Promtail 接收到的日志和应用的metrics 指标就具有相同的标签集

4.不仅提供了更好的日志和指标之间的上下文切换,还避免了对日志进行全文索引

Grafana介绍:

1.一个用于监控和可视化观测的开源平台
2.支持非常丰富的数据源

3.在 Loki 技术栈中它专门用来展示来自Prometheus 和 Loki 等数据源的时间序列数据
4.可进行查询、可视化、报警等操作,可以用于创建、探索和共享数据 Dashboard,鼓励数据驱动

三.Loki与传统日志方案EFK等对比

1.存储方式:Loki 使用类似于散列表的内存数据结构,不需要进行索引,查询速度快;ELK和 EFK 使用Elasticsearch进行索引,查询速度可能比较慢。
2.数据收集和处理:Loki 使用 Promtail 进行数据收集和处理,EFK 使用 Fluentd 进行数据收集和处理,ELK 使用Logstash 进行数据收集和处理,Fluentd 相对于 Logstash 更轻量级,拥有更好的可扩展性;Logstash 可以处理大量数据源,但可能需要更多的资源;Promtail 是为 Loki设计的,它的性能通常会优于 Logstash,特别是在大规模日志收集场景下。Promtail可以有效地处理大量的日志数据,并且具有良好的水平扩展性。

3.扩展性:ELK和 EFK具有广泛的扩展性和适应性,可以对多种数据源进行处理;Loki 的扩展性相对较弱。

4.学习曲线:ELK和 EFK 相对于 Loki具有更陡峭的学习曲线,因为它们具有更多的组件和功能。

5.可视化工具:ELK和 EFK 使用 Kibana 进行数据可视化,Kibana 提供了丰富的图表、表格和仪表盘等可视化工具;Loki 使用 Grafana 进行数据可视化,Grafana 也是一个强大的可视化工具,但它可能需要更多的配置和调整。

Loki的优势:资源消耗低,灵活性强,搜索速度快

Loki的劣势:案例相对较少

四.Loki的安装

基于helm进行安装,准备loki-stack-2.9.11.tgz文件

将压缩包解压,进入到loki-stack文件夹中,修改values.yaml文件,第一处地方修改存储类的名字为自己k8s集群上已有的存储类名;第二处地方修改部署组件的挂载主机目录为docker的数据目录,默认在 /var/lib/docker/containers下,然后保存

#kubectl create ns loki 
#helm install loki -n loki -f values.yaml .

查看部署pod是否都正常运行

查看svc,可修改工作模式为nodeport类型以便访问

# kubectl edit svc loki-grafana -n loki
     type: NodePort

在浏览器输入访问

用户名和密码需要去secret寻找并解码

#kubectl get secret loki-grafana  -n loki -o yaml

[root@k8s-master loki-stack]# echo -n 'YWRtaW4=' | base64 -d
admin
[root@k8s-master loki-stack]# echo -n 'b2QzV0hFbm9IbzkwblFRZ3BiaHlOTXhScElzU21tOG1ZUmtRZWRKMA==' | base64 -d
od3WHEnoHo90nQQgpbhyNMxRpIsSmm8mYRkQedJ0

输入得到的用户名和密码即可登录

点击左侧导航栏的Explore,即可进到查询日志界面,点击Log browser,然后根据筛选,比如标签app,名字空间namespace,pod名即可查到指定的日志 

 

### Kubernetes 上安装 Loki Helm Chart 配置教程 #### 添加 Loki Helm Repository 为了在 Kubernetes 中使用 Helm 来部署 Loki 日志管理系统,首先需要添加官方的 Loki Helm repository。通过执行以下命令可以完成此操作: ```bash helm repo add loki https://grafana.github.io/loki/charts ``` 这一步会将 Loki 的 Helm Charts 加入到本地 Helm 环境中[^1]。 #### 更新 Helm Repository 缓存 在继续之前,建议更新 Helm 的缓存以确保获取最新的 Chart 版本信息: ```bash helm repo update ``` 该命令能够同步远程仓库中的最新数据至本地环境。 #### 创建命名空间 (可选) 如果希望为 Loki 及其组件创建独立的命名空间,则可以通过如下方式实现: ```bash kubectl create namespace loki ``` 这样做的好处是可以更好地隔离不同服务之间的资源分配与权限控制[^3]。 #### 安装 Loki 使用 Helm 接下来就可以正式开始安装过程了,在默认设置下运行下面这条指令即可快速启动一个基础版本的服务实例: ```bash helm install loki-stack loki/loki-stack --namespace loki ``` 这里我们选择了 `loki-stack` 这个更全面的选项因为它不仅包含了核心功能还集成了其他有用的插件模块一起打包提供给用户直接使用而无需额外手动配置更多细节参数[^2]。 对于那些追求更高性能或者特殊需求场景下的使用者来说还可以进一步自定义调整各项具体属性值来满足实际业务情况的要求比如存储类型选择、持久化卷大小设定等等这些都可以通过修改 values 文件的方式来达成目标效果。 #### 访问 Grafana Dashboard 一旦成功完成了上述所有步骤之后应该就能够正常访问由这套组合拳所搭建起来的强大监控平台界面了,默认情况下 grafana 服务会被暴露出来允许外部连接请求进入查看内部运作状况图表展示等内容。 要找到对应的端口地址以及登录凭证等相关重要资料通常可以在 kubectl 输出的结果里边发现它们的位置所在之处: ```bash kubectl get svc -n loki ``` 同时也可以尝试查询 secrets 寻找初始密码账号等敏感信息安全保护措施方面的提示说明文档链接位置: ```bash kubectl get secret --namespace loki loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo ``` 以上就是关于如何在 Kubernetes 平台上借助于 Helm 工具轻松快捷地实施一套完整的 Loki 日志记录解决方案的整体流程概述。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值