Py学习  »  docker

Docker 容器日常巡检

twt企业IT社区 • 1 周前 • 68 次点击  
【导读】本文对Docker容器日常巡检工作进行了整理,提供排查方法和排查思路,帮助大家学会尽快发现问题,解决问题。《Kubernetes 日常巡检可点击标题阅读。
【作者】曹如熙,高级运维leader,具有超过十年的互联网运维及五年以上团队管理经验,多年容器云的运维。


1 docker/podman ps查看容器状态

Docker/podman ps -a 查看容器状态STATUS:
Exited(0):表示容器正常退出
Exited(其他数字):容器异常退出,需要通过log 查看原因
Up:容器在运行状态
Up(Paused):容器暂停
Up(healthy):容器监听健康

Up(unhealthy):容器监听异常


2 健康检查—HealthCheck
一些参数需要docker 17.05以上支持
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 格式,取命令的返回值结果
0表示成功,1表示失败
STATUS, healthy表示健康
unhealthy表示不健康
reserved保留值,不适用
2.2 输出健康检查状态
docker/podman inspect --format '{{json .State.Health}}' 容器名| python -m json.tool

输出healthy表示健康,用户可以编写脚本监控容器状态做报警


3 docker stats查看容器状态

可以通过docker stats查看容器的cpu, 内存,网络,IO的使用情况


4 通过第三方工具监听容器
这里主要介绍prometheus+grafana+cadvisor
4.1 prometheus介绍
prometheus通过node-exporter收集node主机的信息
可以看到up状态和unhealthy状态的node节点主机
Unhealthy表示node节点node-exporter异常
Prometheus是一款强大的第三方工具,除了docker容器监控,还支持mysq,数据仓库,Hadoop,k8s 等开源系统
4.2 cadvisor介绍
Google的开源cadvisor,帮助收集,监听容器的status和数据,主要是CPU, 内存,FS,网络等usage
4.3 grafana介绍
Grafana作为展示prometheus和cadvisor的数据,也可以实现自定义规则报警。(可以去grafana官网搜寻需要监控的模板)
可以通过dashboard展示node主机上的所有容器
通过panel,metrics自定义需要收集的容器数据
通过自定义规则统计需要收集的容器数据,也可以统计宕机状态的容器
Grafana支持自定义报警功能

如果是大量的容器监控报警,建议使用alertmanager做报警


5 docker容器的日志检查
Docker的日志分为两类,一类是 Docker引擎日志;另一类是容器日志。引擎日志一般都交给了系统日志。容器日志可以理解是运行在容器内部的应用输出的日志。
默认情况下,docker logs显示当前运行的容器的日志信息,内容包含 STOUT(标准输出) 和 STDERR(标准错误输出)。日志都会以 json-file的格式存储于 /var/lib/docker/containers//-json.log
CRIO的日志,存放在/var/log/containers/
通过docker/podman logs命令查看容器的日志
查看最近1小时日志
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的日常巡检。
由社区同行“曹如熙”分享(首发于2021年)
觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到


 资料/文章推荐:


欢迎关注社区 "容器云"技术主题 ,将会不断更新优质资料、文章。地址:

https://www.talkwithtrend.com/Topic/98447

下载 twt 社区客户端 APP


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/171819
 
68 次点击