![Fluentbit + Firelens 无法解析并将日志 JSON 字段作为标签发送(AWS ECS Fargate)](https://linux22.com/image/793688/Fluentbit%20%2B%20Firelens%20%E6%97%A0%E6%B3%95%E8%A7%A3%E6%9E%90%E5%B9%B6%E5%B0%86%E6%97%A5%E5%BF%97%20JSON%20%E5%AD%97%E6%AE%B5%E4%BD%9C%E4%B8%BA%E6%A0%87%E7%AD%BE%E5%8F%91%E9%80%81%EF%BC%88AWS%20ECS%20Fargate%EF%BC%89.png)
我的堆栈在 AWS Fargate 上。应用程序、grafana、loki 位于同一个 ECS 集群上。我的应用程序生成日志,
以下是日志流示例:
{"host":"ip-00-3001-1a08-test.us-west-1.compute.internal","short_message":"Sent message: {\"test\":{\"test\":\"31901300\",\"}}","full_message":"Sent message: {\"test\":{\"test\":\"31901300\"}}","timestamp":1.707740449767E9,"level":6,"facility":"logstash-abctest","simpleLogger":"test-abc","logSequence":9696969696,"activity":"00000000222255544","logLevel":"INFO","logger":"test","senderType":"test","terminalID":"test300"}
在 ECS Task_definitation 中找到我的 logConfiguration:
"logConfiguration": {
"logDriver": "awsfirelens",
"options": {
"LabelKeys": "container_name,ecs_task_definition,source,ecs_cluster",
"Labels": "{job=\"firelens\"}",
"LineFormat": "json",
"Name": "grafana-loki",
"RemoveKeys": "container_id,ecs_task_arn",
"Url": "http://loki.endpoint:3100/loki/api/v1/push"
}
我的日志流中有一些字段,例如主机、短消息、全消息、时间戳、级别、设施、日志序列、活动、日志级别、记录器、发送类型、终端 ID 等。
我的目标是将这些字段解析为 Loki 数据源中的标签。建议在 AWS ECS 任务定义中进行必要的配置以实现此目标。
仅供参考,目前,我只能看到集群的元数据(container_name、ecs_cluster、ecs_task_definition、job、source)作为 Lebels。
提前致谢。
我尝试在任务定义的 logConfiguration 中添加日志流字段,如下所示:
"LabelKeys": "senderType,activity,full_message,short_message,container_name,ecs_task_definition,source,ecs_cluster",
"Labels": "{job=\"firelens\",senderType=\"${senderType}\",activity=\"${activity}\"}",
但那没有用。