轻量级日志分析平台Loki实战


Loki的第一个稳定版本于2019年11月19日发布,是Grafana Labs团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。Loki 是专门用于聚集日志数据,重点是高可用性和可伸缩性。与竞争对手不同的是,它确实易于安装且资源效率极高。

特点

优点:
  • Loki的架构非常简单,使用了和Prometheus一样的标签来作为索引,通过这些标签既可以查询日志的内容也可以查询到监控的数据,不但减少了两种查询之间的切换成本,也极大地降低了日志索引的存储。
  • 与ELK相比,消耗的成本更低,具有成本效益。
  • 在日志的收集以及可视化上可以连用Grafana,实现在日志上的筛选以及查看上下行的功能。


缺点:
  • 技术比较新颖,相对应的论坛不是非常活跃。
  • 功能单一,只针对日志的查看,筛选有好的表现,对于数据的处理以及清洗没有ELK强大,同时与ELK相比,对于后期,ELK可以连用各种技术进行日志的大数据处理,但是Loki不行。


组成

  • Loki是主服务器,负责存储日志和处理查询。
  • Promtail是代理,负责收集日志并将其发送给Loki 。
  • Grafana用于UI展示。


本次安装使用Docker部署。

安装 docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.28.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

下载yaml文件

wget https://raw.githubusercontent. ... .yaml -O docker-compose.yaml
version: "3"

networks:
loki:

services:
loki:
image: grafana/loki:2.0.0
ports:
  - "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
networks:
  - loki

promtail:
image: grafana/promtail:2.0.0
volumes:
  - /var/log:/var/log
command: -config.file=/etc/promtail/config.yml
networks:
  - loki

grafana:
image: grafana/grafana:latest
ports:
  - "3000:3000"
networks:
  - loki

启动服务

docker-compose -f docker-compose.yaml up

检查服务

1.png

配置服务

http://192.168.106.202:3000/

默认Granfna密码admin/admin

配置数据源
2.png

配置IP和默认数据源,配置完成点击测试/保存。
3.png

配置数据源

explore查询样例:
4.png

输出匹配日志信息
5.png

至此一次样例日志查询完成。

Promtail配置详解

Promtail容器为日志采集容器,配置文件在Promtail容器/etc/promtail/config.yml,将该容器部署在需要采集日志的服务器上就能正常采集日志传回Loki服务收集整理。
root@2a0cc144dd58:/#  cat  /etc/promtail/config.yml
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /tmp/positions.yaml

clients:
- url: http://loki:3100/loki/api/v1/push     #这里配置的地址为loki服务器日志收集的信息

scrape_configs:
- job_name: system
static_configs:
- targets:
  - localhost
labels:
  job: varlogs                       #这里为刚才选择job下子标签
  __path__: /var/log/*log            #将采集的日志放在/var/log/*log下自动发现

增加一台服务器日志采集

编写Promtail的配置文件config.yml

mkdir /root/promtail &&cd /root/promtail
[root@node2 promtail]# cat config.yml 
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /tmp/positions.yaml

clients:
- url: http://192.168.106.202:3100/loki/api/v1/push     #这里配置的地址为Loki服务器日志收集的信息

scrape_configs:
- job_name: mysql
static_configs:
- targets:
  - localhost
labels:
  job: mysql                         #这里为刚才选择job下子标签
  __path__: /var/log/*log            #将采集的日志放在/var/log/*log下自动发现

编写docker-compose.yaml配置文件
[root@node2 promtail]# cat  docker-compose.yaml 
version: "v1"

services:
promtail:
image: grafana/promtail:2.0.0               #拉去镜像
container_name: promtail-node              #镜像名称
volumes:
  - /root/promtail/config.yml:/etc/promtail/config.yml    #挂载目录
  - /var/log:/var/log           
network_mode: 'host'

启动
docker-compose up -d 

去Loki上查看检索

6.png

7.png

8.png

可以根据数据查询到相应日志信息。

原文链接:https://blog.csdn.net/weixin_4 ... 25468

0 个评论

要回复文章请先登录注册