lili 9c4638ee9d
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
fix(观测): 阶段四第一波起容器四处排障修复(端口/expand-env/镜像)
起容器碰生产 mini-infra 暴露四坑,逐个修:
- 端口:9090 被 mini-infra 自身 mihomo/clash API 占(docker ps 看不到 host 网/宿主进程端口、摸底漏),Prometheus 让到 9091
- Loki+Tempo:配置注释里的 ${MINIO_*} 被 expand-env 连注释严格校验、通配符触发 "missing closing brace",改纯文字(先前误判 Tempo 宽松、其实同款)
- Collector 镜像:daocloud mirror 的 collector-contrib:0.116.0 缺 binary(exec no such file、force 重下同 digest 仍坏);0.114.0 的 redaction 缺 blocked_key_patterns/redact_all_types(脱敏红线);定版 0.155.0(binary 完好+redaction 字段最全)
五件全绿:Collector/Prometheus(9091)/Tempo/Loki/Grafana 全 200,实占约 170MiB(<< 3.4G 上限)。
follow-up:0.155 提示 otlphttp→otlp_http(deprecated warning、不阻塞)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 07:25:39 -07:00

78 lines
2.9 KiB
YAML

# =============================================================================
# Loki 配置 —— 日志存储 · 单进程 monolithic · 后端 = MinIO(obs-loki 桶)
# 设计 §4/§6:只收 WARN/ERROR(在源头控级别),chunks 落 MinIO、index 落本地卷。
# Collector 用 otlphttp 发到 :3100/otlp(Loki 3.x 原生 OTLP 摄入端点)。
# MINIO_ACCESS_KEY / MINIO_SECRET_KEY 由启动参数 -config.expand-env=true 从容器环境变量展开(compose 注入)。
# 坑:Loki 的 expand-env 会连注释一起扫描、且严格校验美元花括号变量引用;变量名里出现通配符星号
# 会报 "missing closing brace" 起不来(Tempo 同款 expand-env、同坑),故本注释一律不写该符号形式。
# =============================================================================
# 内网单机、不启多租户鉴权(鉴权由所在网络与 nginx 边界兜)。
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096 # 与 Tempo 的 9095 错开(虽不同容器不冲突,显式区分省心)
log_level: info
common:
instance_addr: 127.0.0.1
path_prefix: /loki # 本地态根目录(落 named volume loki-data)
replication_factor: 1
ring:
kvstore:
store: inmemory # 单实例,环状态放内存即可
schema_config:
configs:
- from: 2024-01-01
store: tsdb
object_store: s3
schema: v13 # 当前稳定 schema
index:
prefix: index_
period: 24h
storage_config:
tsdb_shipper:
active_index_directory: /loki/index
cache_location: /loki/index_cache
# S3(MinIO)分字段配置:endpoint 不带 scheme,insecure=true 走 HTTP,
# s3forcepathstyle=true 是 MinIO 必需(AWS SDK 默认 virtual-host 风格,MinIO 用 path 风格)。
aws:
endpoint: infra-minio:9000
bucketnames: obs-loki # 观测专用桶,绝不碰 ragflow 现有桶
access_key_id: ${MINIO_ACCESS_KEY}
secret_access_key: ${MINIO_SECRET_KEY}
s3forcepathstyle: true
insecure: true
compactor:
working_directory: /loki/retention
compaction_interval: 10m
retention_enabled: true # 开启保留期回收(否则日志只增不删)
retention_delete_delay: 2h
retention_delete_worker_count: 100
delete_request_store: s3 # 删除请求也落 S3(retention_enabled 时必配)
limits_config:
retention_period: 360h # 日志保留 15 天(与 Prometheus 保留期看齐)
reject_old_samples: true
reject_old_samples_max_age: 168h
allow_structured_metadata: true # OTLP 摄入把 trace_id 等作为 structured metadata 存
volume_enabled: true
ingestion_rate_mb: 8 # 只收 WARN/ERROR,8MB/s 足够、且给失控日志封顶
ingestion_burst_size_mb: 16
ruler:
storage:
type: local
local:
directory: /loki/rules
rule_path: /loki/rules-temp
enable_api: true
# 关掉匿名用量上报(内网、不外呼)。
analytics:
reporting_enabled: false