使用coredump分析实例程序异常
更新时间:2024-09-25
功能概述
coredump是指在程序运行过程中发生异常终止或崩溃时,操作系统将程序的内存内容转储到一个特殊的文件(即coredump文件)中,以便于后续的调试和分析。BCI容器实例支持例开启coredump运维任务,以便在容器异常终止时可以查看分析coredump生成的文件,从而定位问题原因,修复程序异常。 BCI支持将coredump文件存入对象存储BOS中。
使用流程
BCI默认关闭coredump,避免磁盘占用过多而导致业务不可用。您可以根据需要选择以下方式开启coredump运维任务。
方式一:支持手动开启coredump运维任务 手动通过OpenAPI开启coredump后,BCI将生成一个coredump运维任务,在容器运行异常终止或者退出时,触发coredump生成的core文件将自动保存到对象存储BOS中。
手动开启coredump运维任务
当前BCI仅支持通过OpenAPI开启运维任务。步骤如下
- 确保BCI实例成功创建并处于Running状态,获取到podID
- 为BCI实例开启coredump运维任务。调用OpenAPI创建coredump运维任务,接口需指定目标BCI实例,然后将OpsType设为coredump,OpsValue设为enable,设置保存coredump文件的BOS bucket地址,即可开启coredump运维任务。一个注意事项是指定BCI实例时,需确保目标BCI实例在创建时没有设置CorePattern Annotation。
POST http://{{endpoint_bci}}/v2/opstask
示例request body:
{
"podId":"pod-xxxx",
"opsType":"coredump",
"opsValue":"enable",
"bucket":"xxxbucket"
}
- 触发coredump。连接BCI实例,在容器内执行sleep 100命令后按Ctrl+\键,可触发coredump,生成的core文件将自动保存到BOS中。
- 下载Core文件。调用OpenAPI查询运维任务接口,指定BCI实例podId和运维任务类型OpsType为coredump查询参数,查看运维任务的结果,从返回信息的result中,可以获取core文件是否已保存到BOS中,可到BOS相关bucket下载core文件。
GET http://{{endpoint_bci}}/v2/opsrecord?podId=xxx&opsType=coredump
示例reponse
{
"result": [
{
"opsType": "coredump",
"opsStatus": "success",
"storageType": "bos",
"~~~~storageContent": "please goto bos page to download file core.p-ysappvy3.sh.8.1713786425 .",
"createTime": 1713786437000
}
]
}