轻量级日志系统Loki原理简介和使用(3)

简介: 轻量级日志系统Loki原理简介和使用(3)

image.png


image.png


上面咱说完了 liki架构、实现原理及环境搭建过程


现在就结束了吗? No 那多显得那么出类拔萃呀 哈哈


咱再结合一个具体的案例:


使用loki对接下k8s下面的pod日志


let's go !


具体过程如下:


1、nacos为注册中心


2、user和order为2个springboot项目


3、将user和order使用k8s部署


4、访问user接口 ,user访问order 打印出日志


5、该日志通过loki显示出来


1-4过程 咱们之前的文章介绍过


【实战】K8S部署Nacos微服务


朋友们如果自己想实际操练一遍的话可以先看下这篇文章 使用k8s把项目部署起来


部署的效果是


nacos界面


image.png


image.png


image.png


现在loki有了,k8s pod 日志也有了 下面咱看看loki和k8s如何关联起来 达到通过loki查询k8s的效果


这里只需要实现 promtail访问到k8s日志就可以了


promtail可以直接访问到k8s集群内部的日志


也可以将k8s集群内部的日志挂载到宿主机器上 然后再通过promtail访问宿主机上的日志

这里介绍4种实现方式


咱们分别实现下看看


备注:这篇文章先简单介绍下4种方式的思路,下篇文章咱们针对这4种方式实现相应的效果


方式1:将默认路径 var/logs/*log 修改成/var/log/container


promtail可以直接访问到k8s集群内部的日志


首先需要知道 k8s集群下面的pod生成的日志 默认目录为/var/log/containers


1、咱先看看上面的promtail的docker-compose的配置命令


promtail:
    image: grafana/promtail:1.5.0
    volumes:
      - /var/log/container:/var/log/container
    command: -config.file=/etc/promtail/docker-config.yaml
    networks:
      - loki


其中 /etc/promtail/docker-config.yaml


是访问的docker内部的配置文件


咱进去docker内部看下


a、查看容器id


docker ps |grep promtail


b、进入容器


docker exec -it 71cb21c2d0a3 sh


image.png


看到了

job=varlogs

对应的日志文件路径是 /var/log/*log

是不是有似曾相识的感觉


image.png


job对应varlogs

filenames是对应的日志路径 /var/log/*log下面的日志文件

当然只是在promtail容器内部的

在这里只需要将/var/log/*log路径修改成 /var/log/container/*log 这个路径就可以了

那如何修改呢

我们知道 这个配置文件是在容器内部的

要想修改这个配置文件 需要在宿主机也弄一份 然后修改宿主机上的这份文件 然后替换掉docker种的这个配置即可


image.png


image.png


看到界面效果 发现问题了没?


1、路径不是修改成 /var/log/container/*log 这个了吗 怎么还是 /var/log下面的日志?


2、选中一个日志文件怎么显示不出来该文件的内容


这2个问题放到下篇文章解答下吧 (先埋个坑 哈哈 我这么这么坏)


方式2



- replacement: /var/log/container/*.log


这种方式也放到下篇文章再说吧


方式3:将k8s集群内部的日志挂载到宿主机器上 然后再通过promtail访问宿主机上的日志


这种方式 我试过了 也是达到期望效果的


1、


首先给springboot项目添加日志文件输出 咱们这个示例中 以user项目为例说下


  • 增加日志文件


image.png


  • 日志文件的输出目录是 /opt/logs


2、将springboot项目生成docker镜像 然后上传到阿里的镜像库 然后在k8s user 配置文件中引用这个镜像库


这些都在之前那篇文章中详细说过了 这里就不再附述了


这里只需要不同点


image.png


圈红的地方是添加的映射


volumeMounts 这个是将docker内部的/opt/logs目录作为挂载目录


volumes 这个是将宿主机中的


/Users/mengfanxiao/Documents/third_software/loki/log


目录作为映射目录 即docker中的/opt/logs下面的日志会映射到该目录下


需要注意:


我一开始用的目录是 /opt/logs 但是在我的mac环境中一直不能将docker中的日志目录

映射到宿主机上 但 centos就可以 这个原因也放到下篇文章说下吧


3、最后 只需要让promtail访


问/Users/mengfanxiao/Documents/third_software/loki/log 这个目录下面的日志就行了


至于怎么让promtail访问 下篇再说吧


方式4:promtail不是从/var/log目录下读取的日志嘛 那么我将user日志输出到/var/log 下面不就行了


可能遇到的问题


  • 如果k8s状态是start fail状态 则service暴露NodePort的端口也访问不了的情况下 需要重新启动下k8s


启动方式 可以参考下我之前的那篇文章K8S原理简介及环境搭建

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
5月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
520 122
基于docker搭建监控系统&日志收集
|
8月前
|
监控 API 开发工具
HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
本文深入解析HarmonyOS Next的HiLog日志系统,涵盖日志级别、核心API、隐私保护与高级回调功能,助你从入门到精通掌握这一重要开发工具。
|
5月前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
692 2
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
4667 69
Grafana Loki,轻量级日志系统
|
7月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html
|
11月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
513 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
11月前
|
存储 JSON Go
PHP 日志系统的最佳搭档:一个 Go 写的远程日志收集服务
为了不再 SSH 上去翻日志,我写了个 Go 小脚本,用来接收远程日志。PHP 负责记录日志,Go 负责存储和展示,按天存储、支持 API 访问、可远程管理,终于能第一时间知道项目炸了。
253 10
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
756 7
MySQL事务日志-Undo Log工作原理分析
|
11月前
|
存储 监控 Java
G1原理—7.G1的GC日志分析解读
本文进行了TLAB的GC日志解读、YGC的GC日志解读、模拟YGC(单次GC及多次GC的不同场景)、打开实验选项查看YGC的详情日志信息、Mixed GC日志信息之初始标记过程、Mixed GC日志信息之混合回收过程。