使用lambda-promtail采集ALB日志到Loki,如何将S3前缀设为Grafana可用标签?
提取S3前缀作为Loki标签的解决方案
你可以通过lambda-promtail的relabel_configs功能,从S3对象的key中提取前缀并添加为自定义标签,具体步骤如下:
- 修改promtail配置文件:找到对应ALB日志采集的
scrape_configs节点,添加relabel规则解析S3对象key - 配置正则匹配前缀:根据你的S3前缀结构编写正则,从
__aws_s3_object_key(lambda-promtail自动注入的内置标签)中提取目标前缀
配置示例
假设你的ALB日志S3路径是alb-logs/{env}/{service}/yyyy/mm/dd/...,想要提取{env}/{service}作为s3_prefix标签,配置如下:
scrape_configs: - job_name: alb-logs lambda_s3: bucket: your-alb-log-bucket-name prefix: alb-logs/ relabel_configs: # 从S3对象key中提取前两级路径作为s3_prefix标签 - source_labels: [__aws_s3_object_key] regex: 'alb-logs/([^/]+/[^/]+)/.*' target_label: s3_prefix replacement: '$1'
正则调整说明
如果你的前缀结构不同,修改正则即可:
- 若前缀是单级(如
prod/),正则改为alb-logs/([^/]+)/.*,捕获第一部分 - 若前缀包含更多层级,对应增加
[^/]+/的数量
部署修改后的lambda-promtail后,Loki中采集的ALB日志就会带上s3_prefix标签,你可以直接在Grafana中用这个标签创建变量进行筛选。
内容的提问来源于stack exchange,提问作者mp13
相关产品推荐
相关产品推荐

