【导读】本文对Docker容器日常巡检工作进行了整理,提供排查方法和排查思路,帮助大家学会尽快发现问题,解决问题。《Kubernetes 日常巡检》可点击标题阅读。【作者】曹如熙,高级运维leader,具有超过十年的互联网运维及五年以上团队管理经验,多年容器云的运维。1 docker/podman ps查看容器状态
Docker/podman ps -a 查看容器状态STATUS:Exited(其他数字):容器异常退出,需要通过log 查看原因Up(unhealthy):容器监听异常
2.1 通过docker run或者dockerfile添加健康检查docker run --name=nginx --health-cmd="curl --silent --fail localhost/ || exit 1" --health-inter-val=30s --health-retries=3 --health-timeout=10s --start-period=60s nginx:latest--interval:两次健康检查的间隔,默认为 30 秒--timeout: 健康检查超时时间,,默认 30 秒--retries: 连续失败次数,默认 3 次。--start-period: 启动的初始化时间,默认 0 秒--health-cmd: shell和exec 格式,取命令的返回值结果docker/podman inspect --format '{{json .State.Health}}' 容器名| python -m json.tool输出healthy表示健康,用户可以编写脚本监控容器状态做报警
可以通过docker stats查看容器的cpu, 内存,网络,IO的使用情况
这里主要介绍prometheus+grafana+cadvisorprometheus通过node-exporter收集node主机的信息可以看到up状态和unhealthy状态的node节点主机Unhealthy表示node节点node-exporter异常Prometheus是一款强大的第三方工具,除了docker容器监控,还支持mysq,数据仓库,Hadoop,k8s 等开源系统Google的开源cadvisor,帮助收集,监听容器的status和数据,主要是CPU, 内存,FS,网络等usageGrafana作为展示prometheus和cadvisor的数据,也可以实现自定义规则报警。(可以去grafana官网搜寻需要监控的模板)可以通过dashboard展示node主机上的所有容器通过panel,metrics自定义需要收集的容器数据通过自定义规则统计需要收集的容器数据,也可以统计宕机状态的容器如果是大量的容器监控报警,建议使用alertmanager做报警
Docker的日志分为两类,一类是 Docker引擎日志;另一类是容器日志。引擎日志一般都交给了系统日志。容器日志可以理解是运行在容器内部的应用输出的日志。默认情况下,docker logs显示当前运行的容器的日志信息,内容包含 STOUT(标准输出) 和 STDERR(标准错误输出)。日志都会以 json-file的格式存储于 /var/lib/docker/containers/<容器id>/<容器id>-json.logCRIO的日志,存放在/var/log/containers/通过docker/podman logs命令查看容器的日志docker/podman logs --since 60m容器名docker/podman logs -t --since="" --until "" 容器名建议:docker/podman run时候,日志文件-v到宿主机上,docker/podman run -d --name xxx -v /opt/log:/log xxx:latest通过elk去抓取宿主机上的日志,尽量不要通过docker logs去检查容器日志。除了docker容器,本文也向大家介绍kubernetes的日常巡检。觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到
欢迎关注社区 "容器云"技术主题 ,将会不断更新优质资料、文章。地址:
https://www.talkwithtrend.com/Topic/98447
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
*本公众号所发布内容仅代表作者观点,不代表社区立场