我的堆栈在 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}\"}",
但那没有用。