Docker日志查看与资源监控指令全解:从基础到高阶运维实践  一、日志管理:穿透容器内部的眼睛   二、资源监控:掌握容器生命体征   三、企业级监控方案集成 3.1 cAdvisor + Prometheus + Grafana   3.2 日志告警系统集成     四、运维场景解决方案   五、监控指令速查表     
  
 
  
 一、日志管理:穿透容器内部的眼睛  
 1.1 基础日志操作  
 核心命令:docker logs  
docker logs --tail 100  webapp
docker logs -f --since 5m webapp
docker logs --timestamps --details webapp
docker logs webapp 2 >&1  |  grep  -i error
  
 日志驱动配置  
docker inspect --format= '{{.HostConfig.LogConfig.Type}}'  webapp
docker run -d --log-driver= json-file --log-opt max-size= 100m --log-opt max-file= 3  nginx
  
  
 1.2 高级日志处理  
 JSON日志解析  
docker logs webapp --format json |  jq -r '.time + " " + .log' 
docker logs webapp --format '{{.Log}}'  |  jq 'select(.level == "ERROR")' 
  
 多容器日志聚合  
docker logs -f webapp redis postgres 2 >&1  |  awk  '/ERROR/ {print "\033 [31m" $0  "\033 [0m"}' 
  
  
 二、资源监控:掌握容器生命体征  
 2.1 实时资源观测  
 核心命令:docker stats  
docker stats --format "table {{.Name}}\t {{.CPUPerc}}\t {{.MemUsage}}\t {{.NetIO}}" 
docker stats --format "CONTAINER: {{.Name}} | CPU: {{.CPUPerc}} | MEM: {{.MemPerc}} | BLOCK I/O: {{.BlockIO}}" 
  
 进程级监控  
docker top  webapp -eo pid,ppid,user,%cpu,%mem,cmd
docker exec  webapp htop 
  
  
 2.2 深度资源分析  
 容器详情探查  
docker inspect webapp |  jq '.[].HostConfig' 
docker inspect --format '{{.HostConfig.Memory}} {{.HostConfig.MemorySwap}}'  webapp
docker inspect --format= '{{json .NetworkSettings}}'  webapp |  jq
  
 历史资源分析  
docker stats --format "{{.Name}},{{.CPUPerc}},{{.MemUsage}},{{.NetIO}},{{.BlockIO}}"  webapp >  stats.csv
awk  -F','  '{print $1 ,$2 }'  stats.csv |  sed  's/%//'  |  gnuplot -p -e "set terminal dumb; plot '-' with lines" 
  
  
 三、企业级监控方案集成  
 3.1 cAdvisor + Prometheus + Grafana  
 部署架构  
docker run -d \ --name= cadvisor \ --volume= /:/rootfs:ro \ --volume= /var/run:/var/run:ro \ --volume= /sys:/sys:ro \ --volume= /var/lib/docker/:/var/lib/docker:ro \ --publish= 8080 :8080 \ google/cadvisor:v0.47.0
scrape_configs:- job_name: 'docker' static_configs:- targets: [ 'cadvisor:8080' ] 
  
 关键监控指标  
指标名称 说明 container_cpu_usage_seconds_total 容器累计CPU使用时间(秒) container_memory_usage_bytes 内存使用量(字节) container_network_receive_bytes 网络接收字节数 container_fs_usage_bytes 文件系统使用量 
 
  
 3.2 日志告警系统集成  
 ELK Stack配置示例  
filebeat.inputs:
- type: containerpaths: - '/var/lib/docker/containers/*/*.log' processors:- add_docker_metadata: ~output.elasticsearch:hosts: [ "elasticsearch:9200" ] 
  
  
 四、运维场景解决方案  
 4.1 性能瓶颈排查流程  
docker stats --no-stream |  sort  -k3 -h -r |  head 
docker exec  -it webapp top  -o %CPU
docker exec  webapp ss -tunlp
docker exec  webapp iostat -dx 1 
  
 4.2 日志轮转策略  
{ "log-driver" :  "json-file" ,"log-opts" :  { "max-size" :  "100m" ,"max-file" :  "3" ,"compress" :  "true" } 
} 
  
  
 五、监控指令速查表  
场景 命令组合 实时日志追踪 docker logs -f --since 5m --tail 100 webapp | grep -C 3 ERROR资源峰值捕获 docker stats --format "{{.Name}}: {{.CPUPerc}} @ {{.MemUsage}}"网络流量分析 docker exec webapp iftop -i eth0存储空间检查 docker system df -v安全事件审计 docker events --since 24h --filter 'event=die' --format '{{.ID}} {{.Status}}'
 
  
 运维箴言 :优秀的监控体系应像X光机般透视容器状态,推荐采用"实时监控+历史分析+智能预警"的三层架构。记住:没有度量就没有优化,容器世界的所有决策都应建立在数据基础之上!