Grafana 日志聚合工具 Loki

WeChataa432e977fa9f965b8c28b23f02896d7.png

简介

特性:

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

组成

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

安装部署

官方已经提供了相关镜像。

version: '2.1'
services:
  caddy:
    image: ysicing/caddy
    container_name: caddy
    volumes:
    - ./ssl:/root/.caddy
    - /var/log/caddy:/var/log/caddy
    - ./Caddyfile:/etc/Caddyfile
    - /root/.ssh:/root/.ssh
    - ./php:/srv
    network_mode: host
    restart: always
  grafana:
    image: grafana/grafana
    container_name: grafana
    user: "0"
    environment:
      - GF_SERVER_ROOT_URL=https://<马赛克>
      - GF_SECURITY_ADMIN_PASSWORD=<马赛克>
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,alexanderzobnin-zabbix-app
    volumes:
    - /opt/grafana:/var/lib/grafana
    network_mode: host
    restart: always
  loki:
    image: grafana/loki
    container_name: loki
    command: -config.file=/etc/loki/local-config.yaml
    network_mode: host
    restart: always
  promtail:
    image: grafana/promtail
    container_name: promtail
    volumes:
      - ./loki/promtail/docker-config.yaml:/etc/promtail/docker-config.yaml
      - /var/log:/var/log
    command: -config.file=/etc/promtail/docker-config.yaml
    network_mode: host
    restart: always

promtail配置

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://127.0.0.1:3100/api/prom/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - cn3
    labels:
      job: varlogs
      __path__: /var/log/*log
- job_name: caddy
  static_configs:
  - targets:
      - caddy
    labels:
      job: caddylogs
      __path__: /var/log/caddy/*log

caddy 配置文件

<马赛克> {
    gzip
    prometheus
    log / /var/log/caddy/gf.log "{remote} {when} {method} {uri} {proto} {status} {size} {>User-Agent} {latency}" {
      rotate_size 50
      rotate_age  90
      rotate_keep 20
      rotate_compress
    }
    errors {
        * /etc/404.html
    }
    tls root@ysicing.net
    header / {
        Strict-Transport-Security "max-age=31536000;includeSubDomains;preload"
        -Server
    }
    proxy / 127.0.0.1:3000 {
        websocket
        transparent
    }
}

然后直接使用 docker-compose 启动即可:

docker-compose pull
docker-compose up -d

使用

安装完成后,访问上述caddy配置的域名即可访问grafana,默认情况下使用(admin:GF_SECURITY_ADMIN_PASSWORD值)访问 -> 选择添加数据源,在数据源列表中选择Loki,配置 Loki 源地址为http://127.0.0.1:3100并保存

WeChate7cddac71bd8a75a69dca87c1ea1ed0b.png

保存完成后,切换到 grafana 左侧区域的Explore,即可进入到Loki的页面,部分数据比较敏感就选了系统日志

WeChat8bd98e9f3d8400692e6f4d6f39ccd072.png

适用于Prometheus标签选择器规则同样也适用于Loki日志流选择器。

Last modification:September 22nd, 2019 at 09:03 pm
搞技术/肝文章不易,恳请随意打赏 OwO

Leave a Comment