凯发真人娱乐

如何使用loki监控springboot应用 -凯发真人娱乐

2024-01-22

这篇文章主要为大家展示了“如何使用loki监控springboot应用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用loki监控springboot应用”这篇文章吧。

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应该是:

server:   http_listen_port: 9080   grpc_listen_port: 0  positions:   filename: /var/log/positions.yaml  client:   url: http://${loki_host}:${loki_port}/loki/api/v1/push  scrape_configs:   - job_name: system     pipeline_stages:     static_configs:       - labels:           app: ${app_name}           job: varlogs           host: ${log_host}           __path__: /var/log/*log

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

promtail docker镜像改造

根据这个我对promtail的docker镜像进行了改造,具体的dockerfile为:

from grafana/promtail:2.2.1 label author = felord.cn volume ["/var/log/"] expose 9080 env loki_host="localhost" env loki_port=3100 env app_name="app" env log_host="localhost" copy config.yml /etc/promtail/ cmd ["-config.file=/etc/promtail/config.yml", "-config.expand-env"]

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

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监控springboot应用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注本站行业资讯频道!

网站地图