您好,登录后才能下订单哦!
这篇文章主要为大家展示了“如何使用Loki监控SpringBoot应用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Loki监控SpringBoot应用”这篇文章吧。
之前我们使用Docker Compose同时启动了Grafana、Loki、Promtail来监控一个应用。以及整个日志体系的架构。
但是实际应用中不可能为每一个应用都建立一个Grafana-Loki-Promtail体系。
Promtail日志代理
目前Promtail可以从两个来源跟踪日志:本地日志文件和systemd日志,我们上一篇文章中演示的就是本地日志文件的加载,这种方式是目前我唯一能够使用的途径,另一种途径是通过K8S的服务发现能力。
Loki流程图
如果在多个应用服务器上部署对应的多个Promtail守护程序就能监视多个应用的静态日志文件,并通过Loki API将日志推送到Loki中进行聚合式的管理。
Spring Boot日志的部署拓扑
我们只需要为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镜像进行了改造,具体的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应用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。