我正在运行ECS任务,最近服务cpu命中率100%下降了。
我等待实例安定下来并埋入。 我一直在寻找日志,但是似乎docker容器重新启动并且日志都消失了(CPU较高时的日志)
下次,如何确保至少可以查看日志以诊断问题?
我有以下内容,希望在某些地方(安装在主机中)看到一些日志
"mountPoints": [
{
"readOnly": null,
"containerPath": "/var/log/uwsgi",
"sourceVolume": "logs"
}
],
但是主机中没有/var/log/uwsgi
。
我可能需要syslog
和其他东西。
答案 0 :(得分:2)
到目前为止,您当前的配置logs
完全取决于您在“卷”部分中定义的路径。
"mountPoints": [
{
"readOnly": null,
"containerPath": "/var/log/uwsgi",
"sourceVolume": "logs"
}
],
在卷日志logs
中定义的源路径,而不是/var/log/uwsgi
,因此您正在安装
/var/log/uwsgi
(容器路径)-> logs
卷(主机路径)。您可以在logs
卷中的路径定义中找到这些日志。但最好设置
{
"readOnly": null,
"containerPath": "/var/log/uwsgi",
"sourceVolume": "volume_name"
}
然后配置音量
"volumes": [
{
"name": "logs",
"host": {
"sourcePath": "/home/ec2-user/logs"
}
}
]
来自文档
在“任务定义卷”部分中,使用名称定义绑定安装 和sourcePath值。
"volumes": [
{
"name": "webdata",
"host": {
"sourcePath": "/ecs/webdata"
}
}
]
在containerDefinitions部分中,使用 mountPoints引用已定义绑定安装名称的值 和containerPath值来将绑定安装在 容器。
"containerDefinitions": [
{
"name": "web",
"image": "nginx",
"cpu": 99,
"memory": 100,
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
],
"essential": true,
"mountPoints": [
{
"sourceVolume": "webdata",
"containerPath": "/usr/share/nginx/html"
}
]
}
]
现在,如果我提出建议,我将使用AWS日志驱动程序。
在AWS中工作,最好的方法是将所有日志推送到CW,但是AWS日志驱动程序仅将容器stdout和stderr日志推送到CW。
使用AWS日志驱动程序,您无需担心实例和容器,您将登录CW,还可以流式传输这些logs to ELK。
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "awslogs-wordpress",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
}