Лично я бы посмотрел, как работает fluent или fluentbit в другом контейнере вместе с вашим приложением https://docs.fluentbit.io/manual/pipeline/outputs/elasticsearch
Вы можете отправить свои журналы прямо в ES без каких-либо затрат на облачное наблюдение.
ИЗМЕНИТЬ
Вот окончательное решение на тот случай, если кто-то ищет более дешевое решение.
Запустите Fluentd / Fuentbit в другом контейнере вместе с вашим приложением
Использование rel = "nofollow noreferrer"> Github Config, мне удалось переслать журналы на ES с конфигурацией ниже.
{
"family": "workflow",
"cpu": "256",
"memory": "512",
"containerDefinitions": [
{
"name": "log_router",
"image": "docker.io/amazon/aws-for-fluent-bit:latest",
"essential": true,
"firelensConfiguration": {
"type": "fluentbit",
"options":{
"enable-ecs-log-metadata":"true"
}
},
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "your_log_group",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
},
"memoryReservation": 50
},
{
"name": "ContainerName",
"image": "YourImage",
"cpu": 0,
"memoryReservation": 128,
"portMappings": [
{
"containerPort": 5005,
"protocol": "tcp"
}
],
"essential": true,
"command": [
"YOUR COMMAND"
],
"environment": [],
"logConfiguration": {
"logDriver": "awsfirelens",
"secretOptions": [],
"options": {
"Name": "es",
"Host": "YOUR_ES_DOMAIN_URL",
"Port": "443",
"tls": "On",
"Index": "INDEX_NAME",
"Type": "TYPE"
}
},
"resourceRequirements": []
}
]
}
Контейнер log_router
собирает журналы и отправляет их в ES. Для получения дополнительной информации см. Пользовательская маршрутизация журналов.
Обратите внимание, что контейнер log_router
требуется в случае с Fargate, но не с ECS.
Это самое дешевое из известных мне решений, в котором не используются Cloudwatch, Lamdas, Kinesis.
person
james phillips
schedule
11.04.2020