SpringBoot实战电商项目mall(50k+star)地址:github.com/macrozheng/…
摘要
之前一直使用的日志收集方案是ELK,动辄占用几个G的内存,有些配置不好的服务器有点顶不住!最近发现一套轻量级日志收集方案: Loki+Promtail+Grafana(简称LPG), 几百M内存就够了,而且界面也挺不错的,推荐给大家!
简介
LPG日志收集方案内存占用很少,经济且高效!它不像ELK日志系统那样为日志建立索引,而是为每个日志流设置一组标签。下面分别介绍下它的核心组件:
- Promtail:日志收集器,有点像Filebeat,可以收集日志文件中的日志,并把收集到的数据推送到Loki中去。
- Loki:聚合并存储日志数据,可以作为Grafana的数据源,为Grafana提供可视化数据。
- Grafana:从Loki中获取日志信息,进行可视化展示。
安装
实现这套日志收集方案需要安装Loki、Promtail、Grafana这些服务,直接使用
docker-compose
来安装非常方便。
- 使用的
docker-compose.yml
脚本如下,直接使用docker-compose
命令运行即可;
1 | yaml复制代码version: "3" |
- 由于我们把Loki和Promtail的配置文件挂载到了宿主机上,在运行之前,需要先准备好这两个配置文件;
- Loki的配置文件
/mydata/loki/loki.yml
内容如下,使用的是默认配置(可以先不挂载配置文件运行Loki的Docker容器,然后从容器中拷贝出来即可);
1 | yaml复制代码auth_enabled: false |
- Promtail的配置文件
/mydata/loki/promtail.yml
内容如下,使用的也是默认配置,这里的clients.url
需要注意下,由于我们使用的是docker-compose
部署,所以可以将服务名称loki
作为域名来访问Loki服务;
1 | yaml复制代码server: |
- 运行
docker-compose.yml
脚本安装所有服务,使用如下命令即可;
1 | bash复制代码docker-compose up -d |
- 运行成功后,可以使用
docker ps |grep lpg
命令查看服务状态。
1 | bash复制代码[root@local-linux lpg]# docker ps |grep lpg |
使用
接下来我们将使用LPG日志收集系统来收集SpringBoot应用的日志,SpringBoot应用基本不用做特殊配置。
- 首先创建一个SpringBoot应用,修改配置文件
application.yml
,将日志输出到/var/logs
目录下;
1 | yaml复制代码spring: |
- 使用如下命令运行SpringBoot应用,并把日志目录挂载到宿主机上,这样Promtail就可以收集到日志了;
1 | bash复制代码docker run -p 8088:8088 --name mall-tiny-loki \ |
- 运行成功后登录Grafana,账号密码为
admin:admin
,登录成功后需要添加Loki为数据源,访问地址:http://192.168.7.149:3000/
- 在数据源选择界面中直接选择Loki,我们可以看到Grafana也支持使用Elasticsearch作为数据源;
- 之后设置下你的Loki访问地址,点击
Save&test
保存并测试,显示绿色提示信息表示设置成功,Loki访问地址:http://192.168.7.149:3100
- 接下来在
Explore
选择Loki,并输入查询表达式(Loki query)为{filename="/var/log/spring.log"}
,就可以查看我们的SpringBoot应用输出的日志了。
总结
本文主要介绍了LPG日志系统的搭建及使用它收集SpringBoot应用的日志,LPG日志收集方案确实非常轻量级,性能也不错!不过如果你有对日志进行全文搜索的需求的话,还是得使用ELK系统。如果你对Grafana还不熟悉的话,可以参考下这篇文章《号称下一代可视化监控系统,结合SpringBoot使用,贼爽!》。
参考资料
- Loki官方文档:grafana.com/docs/loki/l…
- Promtail官方文档:grafana.com/docs/loki/l…
项目源码地址
本文 GitHub github.com/macrozheng/… 已经收录,欢迎大家Star!
本文转载自: 掘金