当前位置: 首页 > 科技观察

GrafanaLoki管理SpringBoot日志实战

时间:2023-03-15 14:37:58 科技观察

上一篇简单介绍了Loki日志平台的使用。今天在实践中简单学习了下如何使用Loki监控SpringBoot应用。分享给大家,让大家对这个新话题有更深的理解。Loki的日志采集实践在上一篇文章中,我们使用DockerCompose同时启动Grafana、Loki和Promtail来监控一个应用。以及整个日志系统的架构。Loki日志系统但在实际应用中,不可能为每个应用都建立一个Grafana-Loki-Promtail系统。Promtail日志代理目前Promtail可以从两个来源跟踪日志:本地日志文件和systemd日志。上一篇我们演示的是本地日志文件的加载。这种方法是目前我唯一能用的方法。另一种方式是通过K8S的服务发现能力。Loki流程图如果在多个应用服务器上部署多个对应的Promtail守护进程,就可以监控多个应用的??静态日志文件,并通过LokiAPI将日志推送给Loki进行聚合管理。SpringBootlogsPromtail动态配置的部署拓扑我们只需要为Loki应用部署相关的Promtail守护进程即可。这里我还是使用Docker来部署Promtail,但是不能再使用默认配置了。此时的config.yml应该是:server:http_listen_port:9080grpc_listen_port:0positions:filename:/var/log/positions.yamlclient:url:http://${LOKI_HOST}:${LOKI_PORT}/loki/api/v1/pushscrape_configs:-job_name:systempipeline_stages:static_configs:-labels:app:${APP_NAME}job:varlogshost:${LOG_HOST}__path__:/var/log/*log为了构建通用配置,我将一些参数动态化.这是Loki2.1+提供的特性。您可以使用${}来引用环境变量,您甚至可以为其指定一个默认值${VAR:default_value}。但是你必须知道,为了启用这个特性,你需要在Promtail启动命令中添加选项-config.expand-env。PromtailDocker镜像改造据此,我对PromtailDocker镜像进行了改造。具体的Dockerfile为:FROMgrafana/promtail:2.2.1LABELAUTHOR=felord.cnVOLUME["/var/log/"]EXPOSE9080ENVLOKI_HOST="localhost"ENVLOKI_PORT=3100ENVAPP_NAME="APP"ENVLOG_HOST="localhost"COPYconfig.yml/etc/promtail/CMD["-config.file=/etc/promtail/config.yml","-config.expand-env"]你可以通过dockerbuild-tloki-promtail:1.0。命令构建此自定义Promtail图像。基本启动命令:dockerrun-d--namepromtail-service--networkloki-vc:/docker/log:/var/log/-eLOKI_HOST=loki-eAPP_NAME=SpringBootloki-promtail:1.0其中挂载目录c:/docker/log仍然是应用程序的日志目录,LOKI_HOST必须确保它可以与Loki服务器通信,无论你使用直连还是Docker网络(这里使用Docker网桥)。可以使用DockerCompose将应用和Promtail进行捆绑,所有的Promtail都会将相应的日志发送给Loki进行集中管理。另外,通过自定义Label,我们可以通过应用名称来搜索日志。小结今天比较实用的分享了Loki收集日志的机制,特别是日志收集器Promtail的改造部署。希望能帮助大家更快的对抗这个日志新贵。本文转载自微信公众号“码农小胖哥”,可通过以下二维码关注。转载本文请联系码农小胖公众号。