LPG日志采集框架
采用Loki Promtail Grafana作为整个框架构成
Promtail采集日志数据,Loki接收前一步日志数据并解析存储,Grafana将数据呈现出来
所有的程序都通过docker-compose构建
下面是docker-compose.yaml
services:
# 日志存储解析
loki:
image: grafana/loki:3.5
container_name: loki
restart: always
volumes:
- /docker-data/loki/data:/loki
- /docker-data/loki:/etc/loki/
command: -config.file=/etc/loki/loki.yml
ports:
- "2900:2900"
network_mode: bridge
hostname: loki
# 日志采集
promtail:
image: grafana/promtail:3.5
container_name: promtail
restart: always
volumes:
# Promtail 的“游标”文件,保证重启后不会重复采集
- /docker-data/promtail/promtail-positions:/var/lib/promtail/positions
# 将需要收集的日志所在目录挂载到promtail容器中
- /opt/logs/:/var/log/
- /docker-data/promtail:/etc/promtail/
# 修改promtail默认配置文件路径
command: -config.file=/etc/promtail/promtail.yml
network_mode: bridge
hostname: promtail
# 日志查询
grafana:
image: grafana/grafana:12.0.0
container_name: grafana
restart: always
privileged: true
user: root
ports:
- "3000:3000"
volumes:
- /docker-data/grafana/data:/var/lib/grafana
network_mode: bridge
environment:
- TZ=Asia/Shanghai
hostname: grafana
通过访问IP:3000进入Grafana,在数据源处配置Loki数据源IP:2900默认是3100端口,因冲突换了端口号
以下是配置文件
loki.yml
auth_enabled: false
server:
http_listen_port: 2900
common:
instance_addr: 127.0.0.1
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
limits_config:
# 提高速率限制
ingestion_rate_mb: 16 # 从 4MB 提高到 16MB
ingestion_burst_size_mb: 32 # 突发大小提高到 32MB
max_entries_limit_per_query: 10000
retention_period: 744h # 31天保留期
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093
promtail.yml
配置中job_name可以多个配置,__path__为容器内的/var/log目录,上一步在启动容器时挂载了宿主机的日志文件目录到容器中,所以直接扫描容器中目录即可
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://192.168.1.5:2900/loki/api/v1/push # 与Loki的IP和端口保持一致,其余不变
tenant_id: fake # 如果使用多租户,保持与错误中一致
# 批次配置优化
batchsize: 1024 # 减少批次大小
batchwait: 1s # 增加等待时间
timeout: 30s # 增加超时时间
# 重试配置
backoff_config:
min_period: 100ms
max_period: 10s
max_retries: 5
scrape_configs:
- job_name: ycm-logs
static_configs:
- targets:
- localhost
labels:
job: ycm-logs
__path__: /var/log/**/*.log
评论