Docker日志查看与资源监控指令全解:从基础到高阶运维实践

Docker日志查看与资源监控指令全解:从基础到高阶运维实践

    • 一、日志管理:穿透容器内部的眼睛
      • 1.1 基础日志操作
        • 核心命令:`docker logs`
        • 日志驱动配置
      • 1.2 高级日志处理
        • JSON日志解析
        • 多容器日志聚合
    • 二、资源监控:掌握容器生命体征
      • 2.1 实时资源观测
        • 核心命令:`docker stats`
        • 进程级监控
      • 2.2 深度资源分析
        • 容器详情探查
        • 历史资源分析
    • 三、企业级监控方案集成
      • 3.1 cAdvisor + Prometheus + Grafana
        • 部署架构
        • 关键监控指标
      • 3.2 日志告警系统集成
        • ELK Stack配置示例
    • 四、运维场景解决方案
      • 4.1 性能瓶颈排查流程
      • 4.2 日志轮转策略
    • 五、监控指令速查表


一、日志管理:穿透容器内部的眼睛

1.1 基础日志操作

核心命令:docker logs
# 查看最近100行日志
docker logs --tail 100 webapp# 实时追踪日志(类似tail -f)
docker logs -f --since 5m webapp# 显示时间戳和日志来源
docker logs --timestamps --details webapp# 过滤ERROR级别日志
docker logs webapp 2>&1 | grep -i error
日志驱动配置
# 查看当前日志驱动
docker inspect --format='{{.HostConfig.LogConfig.Type}}' webapp# 启动容器时指定日志驱动(json-file/syslog/fluentd)
docker run -d --log-driver=json-file --log-opt max-size=100m --log-opt max-file=3 nginx

1.2 高级日志处理

JSON日志解析
# 提取特定字段(jq工具)
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# 生成资源趋势图(需安装gnuplot)
awk -F',' '{print $1,$2}' stats.csv | sed 's/%//' | gnuplot -p -e "set terminal dumb; plot '-' with lines"

三、企业级监控方案集成

3.1 cAdvisor + Prometheus + Grafana

部署架构
# 启动cAdvisor(数据采集)
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# Prometheus配置示例
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配置片段
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# 第四步:存储IO分析
docker exec webapp iostat -dx 1

4.2 日志轮转策略

# 全局日志配置(/etc/docker/daemon.json)
{"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光机般透视容器状态,推荐采用"实时监控+历史分析+智能预警"的三层架构。记住:没有度量就没有优化,容器世界的所有决策都应建立在数据基础之上!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初学STM32之编码器测速以及测频法的实现

资料来着江协科技 这篇是编码器测速,江科大的源码在测速的时候,定时器TIM2是一直在跑的,不受其它控的,它就一直隔1S读一次CNT的值。它也不管是否有输入信号。源码程序修改一下是可以实现对PWM信号以测频法的方式读取。 笔者稍微改…

oracle怎么查看是否走了索引

SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14384cb24468; 这是查询语句,怎么看这个查询是否走了索引呢 EXPLAIN PLAN FOR SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14…

C++进阶——C++11_{ }初始化_lambda_包装器

目录 1、{ }初始化 1.1 C98的{ } 1.2 C11的{ } 1.3 C11中的std::initializer_list 总结一下: 2、lambda 2.1 lambda的语法 2.2 捕捉列表 2.3 lambda的应用 2.4 lambda的原理 3、包装器 3.1 function 3.2 bind 1、{ }初始化 1.1 C98的{ } C98中一般数组…

【微知】Mellanox网卡网线插入后驱动的几个日志?(Cable plugged;IPv6 ... link becomes ready)

概要 本文是一个简单的信息记录。记录的是当服务器网卡的光模块插入后内核的日志打印。通过这种日志打印,可以在定位分析问题的时候,知道进行过一次模块插拔。 日志 截图版: 文字版: [32704.121294] mlx5_core 0000:01:00.0…

单片机Day05---静态数码管

目录 一、原理图:​编辑 二、思路梳理: 三:一些说明: 1.点亮方式: 2.数组: 3.数字与段码对应: 四:程序实现: 一、原理图: 二、思路梳理: …

Cesium.js(6):Cesium相机系统

Camera表示观察场景的视角。通过操作摄像机,可以控制视图的位置、方向和角度。 帮助文档:Camera - Cesium Documentation 1 setView setView 方法允许你指定相机的目标位置和姿态。你可以通过 Cartesian3 对象来指定目标位置,并通过 orien…

【Python技术生态全景:十大核心应用领域深度解析】

目录 前言:Python的统治力一、基础应用领域1. Web开发数据科学 二、前沿技术领域机器学习深度学习 三、行业解决方案量化金融生物信息 四、创新应用方向物联网开发区块链开发 五、效率工具生态自动化运维游戏开发 结语:Python的边界与突破技术局限未来演…

leetcode 2787. Ways to Express an Integer as Sum of Powers

题目描述 这道题是0-1背包问题。可以理解为,有一个最大容量是n的背包,有n个物品,第i个物品的重量是i^x,问装满背包有多少种装法。题目要求必须是互不相同的数的x次幂的和等于n,那就表示每个数只能用一次,也…

面试经验分享 | 成都渗透测试工程师二面面经分享

可以看看我的置顶文章和专栏找我哦 概况 面试过程 面试官的问题 问题1、你觉得当前OAuth2.0下的攻击手段有哪些?结合具体案例详细讲讲 问题2、php/java反序列化漏洞的原理?程序员/运维如何避免此类漏洞或如何防御? 问题3、如果一台服务器被入侵后,你会如何做应急…

模仿axios的封装效果来封装fetch,实现baseurl超时等

因为要在cocos游戏项目里面发送网络请求获取数据,并且还有可能用到websocket发送请求,所以这里封装一个fetch放便使用: // fetch封装// 基础配置 const BASE_URL 你的url const TIMEOUT 5000// 请求封装 const http async (url: string, …

小米运维面试题及参考答案(80道面试题)

请讲解一下 linux top 后进程的状态 在 Linux 系统中,使用top命令可以查看系统中正在运行的进程的相关信息,进程通常有以下几种状态: 运行(R):表示进程正在 CPU 上运行或者正在运行队列中等待运行。处于运行状态的进程正在积极地使用 CPU 资源来执行其任务。睡眠(S):进…

a sort.py demo

这份代码展示了如何使用 sort.py。注意,此处,我将文件名改为 my_sort.py。 你并不能直接 copy 使用,因为环境,包,还有模型。 此处使用 SSD-MobileNetv2 进行物体检测,将结果传入以 np 数组的形式传入sort…

使用Redis解决:集群的Session共享问题

使用Redis解决:集群的Session共享问题 session共享问题:多台Tomcat并不共享session存储空间,当请求切换到不同的tomcat服务时导致数据丢失的问题。 问题背景 ​无状态HTTP协议:HTTP协议本身是无状态的,服务器无法直接识…

Linux 内核知识体系[1]

1 Linux内核知识体系 2.Linux内核学习路线 2.1基础知识准备 操作系统基础:了解操作系统的概念和基本原理,包括进程管理、内存管理、文件系统、输入输出等。 书籍:《操作系统:设计与实现》(Andrew S. Tanenbaum&…

KiActivateWaiterQueue函数和Queue->Header.WaitListHead队列等待列表的关系

第一部分&#xff1a; if (Thread->ApcState.KernelApcPending && (Thread->SpecialApcDisable 0) && (Thread->WaitIrql < APC_LEVEL)) { } else { // // Insert wait block in ob…

让DeepSeek API支持联网搜索

引子 DeepSeek官网注册的API token是不支持联网搜索的&#xff0c;这导致它无法辅助分析一些最新的情况或是帮忙查一下互联网上的资料。本文从实战角度提供一种稳定可靠的方法使得DeepSeek R1支持联网搜索分析。 正文 首先登录火山方舟控制台&#xff0c;https://www.volcen…

生物信息Rust-01

前言-为什么想学Rust&#xff1f; 一直想多学一门编译语言&#xff0c;主要有几个原因吧&#xff08;1. 看到一位老师实验室要求需要掌握一门编译语言&#xff1b;2. 自己享想试着开发一些实用的生信工具&#xff0c;感觉自己现在相比于数据分析&#xff0c;探索生物学层面的意…

字符串与相应函数(上)

字符串处理函数分类 求字符串长度&#xff1a;strlen长度不受限制的字符串函数&#xff1a;strcpy,strcat,strcmp长度受限制的字符串函数:strncpy,strncat,strncmp字符串查找&#xff1a;strstr,strtok错误信息报告&#xff1a;strerror字符操作&#xff0c;内存操作函数&…

asm汇编源代码之文件操作相关

提供7个子程序:   1. 关闭文件 FCLOSE   2. 打开文件 FOPEN   3. 文件大小 FSIZE   4. 读文件 FREAD   5. 写文件 FWRITE   6. 建立文件 FCREATE   7. 读取或设置文件指针 FPOS 具体功能及参数描述如下 ; ---------------------------- FCLOSE PROC  FAR ; IN…

[Dify] 使用 Docker 本地部署 Dify 并集成 Ollama 模型的详细指南

在 AI 应用快速发展的今天&#xff0c;开源项目如 Dify 正成为构建本地化 AI 应用的利器。通过 Dify&#xff0c;你可以轻松地集成不同的大语言模型&#xff08;LLM&#xff09;&#xff0c;如 Ollama&#xff0c;并快速创建可交互的 AI 应用。本篇文章将带你一步步通过 Docker…