Fluent Битовая часть строки в одном из полей вывода? - PullRequest
0 голосов
/ 26 мая 2020

Я использую AWS Firelens для отправки журналов в Cloudwatch. Firelens по умолчанию отправляет эти поля в контейнер fluentbit вместе с сообщением журнала.

{
    "container_id": "asdfasdfasdfadsf",
    "container_name": "/ecs-microservice-ms-233-microservice-ms-e8e2e9e3b3c9e5e02100",
    "ecs_cluster": "arn:aws:ecs:us-east-1:1234:cluster/app-microservices",
    "ecs_task_arn": "arn:aws:ecs:us-east-1:1234:task/asdf",
    "ecs_task_definition": "microservice-ms:233"
}

Я хочу сделать что-то подобное в разделе вывода,

[OUTPUT]
    Name cloudwatch
    Match **
    region us-east-1
    log_group_name /ecs/${microservice}
    log_stream_prefix ${TAG}
    auto_create_group true

Где, имя группы журналов должно быть именем службы ecs. Но у меня нет полей с названием сервиса. ecs_task_definition является ближайшим, но у него есть номер версии задачи.

Возможно ли достичь того, что я пытаюсь сделать?

1 Ответ

1 голос
/ 01 июня 2020

Fluentbit позволяет нам использовать переменные среды в разделе вывода. При этом решение проблемы заключается в передаче переменной среды в контейнер Firelens.

В AWS ECS это должно быть передано из раздела определения задачи внутри определения контейнера sidecar firelens,

    {
        "name": "firelens_log_router",
        "image": "<account_id>.dkr.ecr.us-east-1.amazonaws.com/accel-aws-for-fluent-bit:latest",
        "logConfiguration": {
            "logDriver": "awslogs",
            "options": {
                "awslogs-group": "firelens-container",
                "awslogs-region": "us-east-1",
                "awslogs-create-group": "true",
                "awslogs-stream-prefix": "firelens"
            }
        },
        "memory": 100,
        "memoryReservation": 50,
        "firelensConfiguration": {
            "type": "fluentbit",
            "options": {
                "config-file-type": "file",
                "config-file-value": "/fluent-bit/etc/fluent-bit-accel.conf"
            }
        },
        "environment": [
            {
                "name": "MICROSERVICE_NAME",
                "value": "${microservice_name}"
            }
        ]
    }

Затем в разделе OUTPUT файла конфигурации Fluentbit

[OUTPUT]
    Name cloudwatch
    Match **
    region us-east-1
    log_group_name /ecs/${MICROSERVICE_NAME}
    log_stream_prefix fluentbit.
    auto_create_group true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...