Grafana Loki管理Spring Boot日志实战

开发 架构
如果在多个应用服务器上部署对应的多个Promtail守护程序就能监视多个应用的静态日志文件,并通过Loki API将日志推送到Loki中进行聚合式的管理。

[[400021]]

上一篇文章简单入门了Loki日志平台的使用,今天又简单研究了如何在实践中使用Loki监控Spring Boot应用,特地分享给大家,让大家对这门新技术有更深的了解。

Loki的日志收集实践

上一篇文章中我们使用Docker Compose同时启动了Grafana、Loki、Promtail来监控一个应用。以及整个日志体系的架构。

Loki日志体系

但是实际应用中不可能为每一个应用都建立一个Grafana-Loki-Promtail体系。

Promtail日志代理

目前Promtail可以从两个来源跟踪日志:本地日志文件和systemd日志,我们上一篇文章中演示的就是本地日志文件的加载,这种方式是目前我唯一能够使用的途径,另一种途径是通过K8S的服务发现能力。

Loki流程图

如果在多个应用服务器上部署对应的多个Promtail守护程序就能监视多个应用的静态日志文件,并通过Loki API将日志推送到Loki中进行聚合式的管理。

Spring Boot日志的部署拓扑

Promtail动态配置

我们只需要为Loki应用部署相关的Promtail守护程序即可。这里我仍然使用Docker对Promtail进行部署,不过我不能再使用默认配置了,这时的config.yml应该是:

  1. server: 
  2.   http_listen_port: 9080 
  3.   grpc_listen_port: 0 
  4.  
  5. positions: 
  6.   filename: /var/log/positions.yaml 
  7.  
  8. client: 
  9.   url: http://${LOKI_HOST}:${LOKI_PORT}/loki/api/v1/push 
  10.  
  11. scrape_configs: 
  12.   - job_name: system 
  13.     pipeline_stages: 
  14.     static_configs: 
  15.       - labels: 
  16.           app: ${APP_NAME} 
  17.           job: varlogs 
  18.           host: ${LOG_HOST} 
  19.           __path__: /var/log/*log 

为了构建一个通用的配置,我将一些参数进行了动态化。这是Loki2.1+版本提供的特性,可以使用${}来引用环境变量,甚至你可以为其指定默认值${VAR:default_value}。但是你必须得知道为了开启这一特性需要在Promtail启动命令中添加选项-config.expand-env。

Promtail Docker镜像改造

根据这个我对Promtail的Docker镜像进行了改造,具体的Dockerfile为:

  1. FROM grafana/promtail:2.2.1 
  2. LABEL AUTHOR = felord.cn 
  3. VOLUME ["/var/log/"
  4. EXPOSE 9080 
  5. ENV LOKI_HOST="localhost" 
  6. ENV LOKI_PORT=3100 
  7. ENV APP_NAME="APP" 
  8. ENV LOG_HOST="localhost" 
  9. COPY config.yml /etc/promtail/ 
  10. CMD ["-config.file=/etc/promtail/config.yml""-config.expand-env"

你可以通过docker build -t loki-promtail:1.0 .命令构建这个自定义Promtail镜像。基本的启动命令:

  1. docker run -d  --name promtail-service --network loki -v c:/docker/log:/var/log/  -e LOKI_HOST=loki -e APP_NAME=SpringBoot  loki-promtail:1.0 

其中挂载的目录c:/docker/log依然是应用的日志目录,LOKI_HOST要保证能够同Loki服务器通信,无论你通过直连还是Docker网络(这里用了Docker网桥)。你可以可以使用Docker Compose将应用和Promtail进行捆绑,所有的Promtail将把对应的日志发往Loki进行集中式的管理。另外通过自定义的Label我们可以通过应用名称来搜索日志了。

总结

今天通过更加贴近实战的方式对Loki收集日志的机理进行了分享,尤其是日志收集器Promtail的改造部署。希望能够帮助你更加快捷地实战这个日志新贵。

本文转载自微信公众号「码农小胖哥」,可以通过以下二维码关注。转载本文请联系码农小胖哥公众号。

 

责任编辑:武晓燕 来源: 码农小胖哥
相关推荐

2022-06-28 08:40:16

LokiPromtail日志报警

2022-06-20 14:59:14

读写分离模Loki

2024-02-01 09:48:17

2022-06-29 07:45:53

LogQLLoki日志流选择器

2023-12-27 18:05:13

2021-03-01 23:26:41

日志Spring BootAOP

2023-09-13 08:56:51

2022-05-12 11:38:26

Java日志Slf4j

2022-11-03 08:02:06

KEDA自动缩放云平台

2021-06-02 06:02:50

Loki 源码分析日志

2020-04-23 15:59:04

SpringKafka集群

2018-11-02 15:45:41

Spring BootRedis数据库

2024-02-04 00:00:00

Loki性能查询

2022-12-29 08:00:26

Loki网络设备

2017-09-20 09:46:38

Spring BootSpring Clou内存

2022-02-08 17:07:54

Spring BooSpring Aop日志记录

2019-04-15 08:32:25

Spring Boot日志门面模式

2021-12-31 08:48:23

Logback日志管理

2021-09-13 08:20:13

Loki日志系统

2019-10-30 11:28:56

Javaflyway数据库
点赞
收藏

51CTO技术栈公众号