本篇文章主要来讲解使用自定义 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 ,至此文章结束。
后期在实践中遇到问题,包括相关配置均会在本文进行补充记录~ 希望对你有所帮助。