「Grafana Loki」- 最佳实践

Static labels are good
1)类似 host, application, and environment 都是不错的标签,可以固定使用这些标签;

Use dynamic labels sparingly(有节制地)
1)不要过多的使用动态 Label
2)更推荐使用 filter expression 来过滤日志;

Label values must always be bounded
1)还是再说动态标签的问题,不要由过多不同类型的值;

Be aware of dynamic labels applied by clients
1)还是动态标签的问题,通过 logcli 或 Series API 确定 Label 的类型和其取值类型;
2)防止某些不该出现的 Label 被加入 Stream 中;

Configure caching
1)开启数据缓存,以提升 Loki 性能;

Time ordering of logs
1)日志要按时间顺序发送,否则会被决绝(除非允许非按序日志);
2)或建议在日志上增加新 Label 来标识来自不同系统的日志(适用于多主机但日志时间存在偏差的场景)
3)或者 Promtail 创建新的日志时间;

Use chunk_target_size
1)chunk_target_size 只是 Loki 将 Chunk 填充到特定压缩大小(1.5M),这个大小更高效;
2)还有一些选项会影响 Chunk 的填充大小:max_chunk_age=1h,chunk_idle_period=30m
3) 5-10x or 7.5-10MB 才能填充 1.5M 块大小(具体取决于压缩算法);
4)记住,块是基于流;越多的流,内存将存在越多的块;如果 Stream 过多,那很可能在块填满之前就被 Flush 掉;
5)总之,保证块尽量被填满;如果程序日志过多,可以考虑增加 Label 来创建不同 Stream 以保存日志;

-print-config-stderr / -log-config-reverse-order
1)用于在启动的时候打印配置文件;