Loki搭建日志系统之自定义配置

本篇文章主要来讲解使用自定义 yml 配置文件来收集使用 Grafana 日志套件

一、Grafana 配置

为什么首先来自定义 grafana 配置?

因为我发现重启docker后,再访问grafana又需要重新设置密码登陆,并且之前添加的数据源都没有了。

是的,使用默认的 grafana 内置配置,每次重启后数据都会丢失,相当于重装。那么 grafana 的数据持久化势在必行了。

创建数据目录

mkdir grafana-data
sudo chown 472:472 grafana-data

在版本 v5.1 之后 grafana 的用户权限改为了472: Run Grafana Docker image | Grafana documentation

不修改会导致 “/var/lib/grafana is not writable” 、”mkdir: can’t create directory ‘/var/lib/grafana/plugins’: Permission denied” 等错误

修改上篇文章配置文件 docker-compose.yaml,将创建的数据目录挂载到容器内部的 /var/lib/grafana 目录

节选 service 部分的 grafana 配置

services:
  grafana:
    image: grafana/grafana:latest
    volumes:
      - "./grafana-data:/var/lib/grafana"
    user: "472"
    ports:
      - "3000:3000"
    networks:
      - loki

修改完,重启 docker ,再次登陆 grafana 即可 🎉

二、promtail 配置

promtail 应用负责日志收集打标签并发送给 loki应用,在配置文件中我们可以指定监控哪些文件,打哪些标签、指定如何收集等等

修改上篇文章配置文件 docker-compose.yaml

节选 service 部分的 promtail 配置

services:
  promtail:
    image: grafana/promtail:2.6.1
    volumes:
      - "./promtail-local-config.yaml:/etc/promtail/config.yml" # 挂载自定义配置文件
      - /var/log:/var/log
      - /data/myapp/runtime/log:/var/log/myapp_logs # 挂载宿主机应用日志目录到容器内
    command: -config.file=/etc/promtail/config.yml
    networks:
      - loki

本地自定义配置文件 promtail-local-config.yaml ,该文件内容拷贝自容器内,在配置中增加 job 以监控应用日志:

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*log
- job_name: app # 我们要监控的应用,名称随意
  static_configs:
  - targets:
      - localhost
    labels:
      job: myapp_logs # 新建job
      __path__: /var/log/myapp_logs/single_*log # 要监控解析的日志

修改完,重启 docker ,让应用产生日志后再次登陆 grafana 在 Explore 探索中即可出现新的 job 、filename 可选项 👍

三、Loki配置

同理,与 grafana一样 loki 也有存储的数据目录

创建数据映射目录

mkdir loki-data
chown 10001:10001 loki-data/

节选 service 部分的 lokie 配置

services:
  loki:
    image: grafana/loki:2.6.1
    volumes:
      - "./loki-local-config.yaml:/etc/loki/local-config.yaml" # 挂载自定义配置
      - "./loki-data:/loki" # 挂载宿主机数据目录
    user: "10001"
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - loki

本地自定义配置文件 loki-local-config.yaml ,该文件内容拷贝自容器内:

auth_enabled: false

server:
  http_listen_port: 3100

common:
  path_prefix: /loki
  storage:
    filesystem:
      chunks_directory: /loki/chunks
      rules_directory: /loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

ruler:
  alertmanager_url: http://localhost:9093

# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
#
# Statistics help us better understand how Loki is used, and they show us performance
# levels for most users. This helps us prioritize features and documentation.
# For more information on what's sent, look at
# https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go
# Refer to the buildReport method to see what goes into a report.
#
# If you would like to disable reporting, uncomment the following lines:
#analytics:
#  reporting_enabled: false

重启 docker ,至此文章结束。

后期在实践中遇到问题,包括相关配置均会在本文进行补充记录~ 希望对你有所帮助。

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注