docker部署grafana loki日志系统

Loki日志系统简介

Loki是 Grafana Labs 团队发布的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。

项目受 Prometheus 启发,官方的介绍就是:Like Prometheus, but for logs.,类似于 Prometheus 的日志系统。

在这里插入图片描述

与其他日志聚合系统相比,Loki具有下面的一些特性:

  • 不对日志进行全文索引,通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。
  • 通过使用与 Prometheus相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。 特别适合储存 Kubernetes Pod 日志; 诸如 Pod标签之类的元数据会被自动删除和编入索引。
  • 受 Grafana 原生支持。

Loki 由以下3个部分组成:

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

官网:https://grafana.com/oss/loki

dcker部署loki

如果用于测试或开发环境,则可以使用Docker或Docker Compose安装Loki和Promtail。对于生产,建议使用Tanka或Helm安装。

参考:https://grafana.com/docs/loki/latest/installation/docker/

下载配置文件

mkdir -p /data/loki/config && cd /data/loki/config 
wget https://raw.githubusercontent.com/grafana/loki/v1.5.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/v1.5.0/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

运行loki容器

docker run -d --name loki \
  --restart always \
  -p 3100:3100 \
  -v /data/loki/config:/mnt/config \
  grafana/loki:1.5.0 \
  -config.file=/mnt/config/loki-config.yaml

运行promtail容器

docker run -d --name promtail \
  --restart always \
  -v /data/loki:/mnt/config \
  -v /var/log:/var/log \
  grafana/promtail:1.5.0 \
  -config.file=/mnt/config/promtail-config.yaml

说明:promtail作为日志收集代理可部署在任意要收集日志的节点上,配置文件中指定loki节点IP地址即可,另外需要挂载要收集的节点日志文件目录到promtail容器中。

运行grafana容器

docker run -d --name=grafana \
  --restart always \
  -p 3000:3000 \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana

查看loki metrics数据

http://192.168.93.9:3100/metrics

查看loki运行状态

http://192.168.93.9:3100/ready

如果想要收集指定目录及所有子目录下以.log结尾的日志文件,修改promtail-config.yaml 配置文件:

# cat promtail-config.yaml 
......
      __path__: /var/log/**/*.log

配置grafana数据源

访问grafana,默认用户密码为admin/admin。

选择左侧设置—>Data Sources—>Add data source,搜索Loki配置HTTP URL为

http://192.168.93.9:3100

完成后选择左侧设置—>Preferences,修改底部默认时区为Asia/Shanghai。

选择左侧Explore查看日志,可以基于文件名或标签查看:
在这里插入图片描述

docker-compose部署

下载docker-compose文件

wget https://raw.githubusercontent.com/grafana/loki/v1.5.0/production/docker-compose.yaml -O docker-compose.yaml

修改docker-compose文件

version: "3"

services:
  loki:
    image: grafana/loki:1.5.0
    restart: always
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    volumes:
      - loki-config:/etc/loki
    networks:
      - loki

  promtail:
    image: grafana/promtail:1.5.0
    restart: always
    volumes:
      - /var/log:/var/log
      - promtail-config:/etc/promtail
    command: -config.file=/etc/promtail/docker-config.yaml
    networks:
      - loki

  grafana:
    image: grafana/grafana
    restart: always
    ports:
      - "3000:3000"
    depends_on:
      - loki
      - promtail
    volumes:
      - grafana-storage:/var/lib/grafana
    networks:
      - loki

networks:
  loki:

volumes:
  loki-config:
  promtail-config:
  grafana-storage:

启动容器

docker-compose up -d

查看运行状态

# docker-compose ps
     Name                    Command               State           Ports         
---------------------------------------------------------------------------------
loki_grafana_1    /run.sh                          Up      0.0.0.0:3000->3000/tcp
loki_loki_1       /usr/bin/loki -config.file ...   Up      0.0.0.0:3100->3100/tcp
loki_promtail_1   /usr/bin/promtail -config. ...   Up  

loki日志插件

Loki支持Docker插件,该插件将从Docker容器读取日志并将其发送到Loki。可以将插件配置为将日志发送到私有Loki实例或Grafana Cloud。

参考:https://github.com/grafana/loki/blob/master/docs/sources/clients/docker-driver/_index.md

主机安装docker插件

docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
docker plugin ls

docker配置使用插件,修改/etc/docker/daemon.json并重启docker

{
    "debug" : true,
    "log-driver": "loki",
    "log-opts": {
        "loki-url": "http://192.168.93.9/loki/api/v1/push",
        "loki-batch-size": "400"
    }
}

新建容器查看日志
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

willops

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值