摘要
之前一直使用的日志收集方案是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
命令运行即可;
version: "3"
services:
# 日志存储和解析
loki:
image: grafana/loki
container_name: lpg-loki
volumes:
- /mydata/loki/:/etc/loki/
# 修改loki默认配置文件路径
command: -config.file=/etc/loki/loki.yml
ports:
- 3100:3100
# 日志收集器
promtail:
image: grafana/promtail
container_name: lpg-promtail
volumes:
# 将需要收集的日志所在目录挂载到promtail容器中
- /mydata/app/mall-tiny-loki/logs/:/var/log/
- /mydata/promtail:/etc/promtail/
# 修改promtail默认配置文件路径
command: -config.file=/etc/promtail/promtail.yml
# 日志可视化
grafana:
image: grafana/grafa