1. 首页 > Podman教程 > 正文

Podman教程FG023-Podman日常巡检与健康检查

本文档风哥主要介绍Podman日常巡检与健康检查,包括巡检的概念、健康检查的概念、巡检的重要性以及日常巡检、健康检查实施和巡检自动化等内容。风哥教程参考Podman官方文档Inspection and Health Check部分,适合容器管理员和开发人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 巡检概念

巡检是指定期检查系统的运行状态、性能指标和安全状况,以确保系统的正常运行。Podman巡检是指对Podman容器、Pod、镜像和系统进行定期检查,包括容器状态、资源使用情况、网络连接、存储使用情况等。更多视频教程www.fgedu.net.cn

巡检的目标:

  • 确保系统正常运行
  • 及时发现潜在问题
  • 预防故障发生
  • 提高系统可靠性

1.2 健康检查概念

健康检查是指定期检查容器的健康状态,以确保容器能够正常提供服务。Podman健康检查是通过配置健康检查命令,定期执行检查容器的健康状态,并根据检查结果判断容器是否健康。

1.3 巡检的重要性

巡检的重要性主要体现在:

  • 预防故障:通过定期巡检,及时发现潜在问题,预防故障发生
  • 提高可靠性:确保系统的正常运行,提高系统的可靠性
  • 优化性能:通过巡检发现性能瓶颈,优化系统性能
  • 确保安全:发现安全隐患,确保系统安全
  • 合规要求:满足合规要求,确保系统符合规范
风哥提示:日常巡检与健康检查是确保Podman系统正常运行的重要环节,通过定期巡检和健康检查,可以及时发现和解决问题,提高系统的可靠性和安全性。学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 巡检策略

生产环境中Podman的巡检策略:

# 巡检策略

## 巡检对象
– 容器:容器状态、资源使用、日志等
– Pod:Pod状态、容器状态等
– 镜像:镜像版本、大小、安全漏洞等
– 网络:网络连接、端口占用等
– 存储:存储使用、卷状态等
– 系统:系统资源、进程状态等

## 巡检频率
– 日常巡检:每天一次
– 周巡检:每周一次
– 月巡检:每月一次
– 季度巡检:每季度一次

## 巡检内容
– 容器状态:运行状态、重启次数等
– 资源使用:CPU、内存、磁盘、网络等
– 日志检查:错误日志、警告日志等
– 安全检查:安全漏洞、权限设置等
– 配置检查:配置文件、环境变量等

## 巡检工具
– 命令行工具:podman, top, iostat等
– 监控工具:Prometheus, Grafana等
– 日志工具:ELK Stack, journald等
– 自动化工具:Ansible, Shell脚本等

2.2 健康检查策略

生产环境中Podman的健康检查策略:

# 健康检查策略

## 健康检查类型
– 命令检查:执行指定命令检查容器健康状态
– HTTP检查:发送HTTP请求检查容器健康状态
– TCP检查:检查TCP端口是否可用

## 健康检查配置
– 检查间隔:定期执行健康检查的间隔时间
– 超时时间:健康检查的超时时间
– 启动延迟:容器启动后延迟执行健康检查的时间
– 失败阈值:健康检查失败的阈值
– 成功阈值:健康检查成功的阈值

## 健康检查处理
– 健康状态:healthy, unhealthy, starting
– 自动重启:当容器不健康时自动重启
– 告警通知:当容器不健康时发送告警

## 健康检查最佳实践
– 检查应用状态:检查应用是否正常运行
– 检查依赖服务:检查依赖服务是否可用
– 检查资源使用:检查资源使用是否正常
– 检查网络连接:检查网络连接是否正常

2.3 巡检计划

生产环境中Podman的巡检计划:

  • 日常巡检:每天执行,检查容器状态、资源使用、日志等
  • 周巡检:每周执行,检查镜像状态、网络连接、存储使用等
  • 月巡检:每月执行,检查系统状态、安全漏洞、配置文件等
  • 季度巡检:每季度执行,检查系统性能、备份状态、灾难恢复等
生产环境建议:合理设计巡检策略和计划,确保系统的正常运行,及时发现和解决问题,提高系统的可靠性和安全性。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 日常巡检

3.1.1 容器状态检查

# 容器状态检查

# 查看所有容器状态
$ podman ps -a

# 输出日志
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7890123456ab docker.io/library/nginx nginx -g daemon 2 weeks ago Up 2 days ago 0.0.0.0:80->80/tcp fgedu-nginx
1234567890ab docker.io/library/mysql mysqld 2 weeks ago Up 2 days ago 0.0.0.0:3306->3306/tcp fgedu-mysql
9876543210ab docker.io/library/httpd httpd-foreground 1 week ago Exited (137) 1 day ago fgedu-httpd

# 查看容器详细信息
$ podman inspect fgedu-nginx

# 查看容器日志
$ podman logs fgedu-nginx

# 查看容器资源使用情况
$ podman stats fgedu-nginx

# 输出日志
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS
7890123456ab fgedu-nginx 0.1% 20.5MiB / 1.0GiB 2.0% 1.2kB / 0B 0B / 0B 2

3.2 健康检查实施

3.2.1 配置容器健康检查

# 配置容器健康检查

# 运行带有健康检查的Nginx容器
$ podman run -d –name fgedu-nginx \
–health-cmd=”curl -f http://localhost/ || exit 1″ \
–health-interval=30s \
–health-timeout=5s \
–health-start-period=10s \
–health-retries=3 \
-p 80:80 \
docker.io/library/nginx

# 查看容器健康状态
$ podman inspect –format='{{.State.Health.Status}}’ fgedu-nginx

# 输出日志
healthy

# 查看容器健康检查详情
$ podman inspect –format='{{json .State.Health}}’ fgedu-nginx | python3 -m json.tool

# 输出日志
{
“FailingStreak”: 0,
“Log”: [
{
“End”: “2026-04-10T10:00:00Z”,
“ExitCode”: 0,
“Output”: ” % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n 0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0\n100 615 100 615 0 0 12300 0 –:–:– –:–:– –:–:– 12300\n\n

Welcome to nginx!

\n

If you see this page, the nginx web server is successfully installed and\nworking. Further configuration is required.

\n\n

For online documentation and support please refer to\nnginx.org.
\nCommercial support is available at\nnginx.com.

\n\n

Thank you for using nginx.

\n\n”,
“Start”: “2026-04-10T10:00:00Z”
}
],
“Status”: “healthy”
}

3.3 巡检自动化

3.3.1 编写巡检脚本

# 编写巡检脚本

# 创建巡检脚本
$ cat > /Podman/scripts/daily_check.sh << EOF #!/bin/bash # daily_check.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn echo "===== Podman Daily Inspection =====" echo "Date: $(date)" echo "" # 检查容器状态 echo "1. Container Status:" podman ps -a echo "" # 检查容器健康状态 echo "2. Container Health Status:" podman ps -a --format '{{.Names}} {{.Status}}' echo "" # 检查容器资源使用情况 echo "3. Container Resource Usage:" podman stats --no-stream echo "" # 检查镜像状态 echo "4. Image Status:" podman images echo "" # 检查网络状态 echo "5. Network Status:" podman network ls echo "" # 检查存储使用情况 echo "6. Storage Usage:" df -h echo "" # 检查系统资源 echo "7. System Resources:" top -b -n 1 | head -20 echo "" echo "===== Inspection Completed =====" EOF # 赋予执行权限 $ chmod +x /Podman/scripts/daily_check.sh # 执行巡检脚本 $ /Podman/scripts/daily_check.sh # 输出日志 ===== Podman Daily Inspection ===== Date: Wed Apr 10 10:00:00 CST 2026 1. Container Status: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7890123456ab docker.io/library/nginx nginx -g daemon 2 weeks ago Up 2 days ago 0.0.0.0:80->80/tcp fgedu-nginx
1234567890ab docker.io/library/mysql mysqld 2 weeks ago Up 2 days ago 0.0.0.0:3306->3306/tcp fgedu-mysql
9876543210ab docker.io/library/httpd httpd-foreground 1 week ago Exited (137) 1 day ago fgedu-httpd

2. Container Health Status:
fgedu-nginx Up 2 days ago
fgedu-mysql Up 2 days ago
fgedu-httpd Exited (137) 1 day ago

3. Container Resource Usage:
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS
7890123456ab fgedu-nginx 0.1% 20.5MiB / 1.0GiB 2.0% 1.2kB / 0B 0B / 0B 2
1234567890ab fgedu-mysql 0.5% 1.2GiB / 4.0GiB 30.0% 1.5kB / 0B 0B / 0B 10

4. Image Status:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/nginx latest 1234567890ab 2 weeks ago 133 MB
docker.io/library/mysql latest 7890123456ab 2 weeks ago 516 MB
docker.io/library/httpd latest 9876543210ab 2 weeks ago 148 MB

5. Network Status:
NETWORK ID NAME VERSION PLUGINS
1234567890ab bridge 0.4.0 bridge,portmap,firewall,tuning
7890123456ab host 0.4.0 host,tuning
9876543210ab none 0.4.0 tuning

6. Storage Usage:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
/dev/sdb1 100G 40G 60G 40% /Podman

7. System Resources:
top – 10:00:00 up 2 days, 1:00, 1 user, load average: 0.10, 0.05, 0.01
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used.

===== Inspection Completed =====

风哥提示:巡检自动化是提高巡检效率的重要方式,通过编写巡检脚本,可以定期自动执行巡检任务,及时发现和解决问题。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 容器巡检

4.1.1 容器状态巡检

# 容器状态巡检

# 查看容器状态
$ podman ps -a

# 输出日志
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7890123456ab docker.io/library/nginx nginx -g daemon 2 weeks ago Up 2 days ago 0.0.0.0:80->80/tcp fgedu-nginx
1234567890ab docker.io/library/mysql mysqld 2 weeks ago Up 2 days ago 0.0.0.0:3306->3306/tcp fgedu-mysql
9876543210ab docker.io/library/httpd httpd-foreground 1 week ago Exited (137) 1 day ago fgedu-httpd

# 检查退出的容器
$ podman ps -a –filter status=exited

# 输出日志
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9876543210ab docker.io/library/httpd httpd-foreground 1 week ago Exited (137) 1 day ago fgedu-httpd

# 查看容器日志
$ podman logs fgedu-httpd

# 输出日志
[Wed Apr 10 10:00:00.000000 2026] [mpm_event:notice] [pid 1:tid 140123456789012] AH00489: Apache/2.4.57 (Unix) configured — resuming normal operations
[Wed Apr 10 10:00:00.000000 2026] [core:notice] [pid 1:tid 140123456789012] AH00094: Command line: ‘httpd -D FOREGROUND’
[Wed Apr 10 11:00:00.000000 2026] [mpm_event:notice] [pid 1:tid 140123456789012] AH00491: caught SIGTERM, shutting down

# 重启退出的容器
$ podman start fgedu-httpd

# 验证容器状态
$ podman ps

# 输出日志
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7890123456ab docker.io/library/nginx nginx -g daemon 2 weeks ago Up 2 days ago 0.0.0.0:80->80/tcp fgedu-nginx
1234567890ab docker.io/library/mysql mysqld 2 weeks ago Up 2 days ago 0.0.0.0:3306->3306/tcp fgedu-mysql
9876543210ab docker.io/library/httpd httpd-foreground 1 week ago Up 1 minute ago 0.0.0.0:8080->80/tcp fgedu-httpd

4.2 Pod巡检

4.2.1 Pod状态巡检

# Pod状态巡检

# 创建Pod
$ podman pod create –name fgedu-pod -p 80:80 -p 3306:3306

# 运行容器到Pod
$ podman run -d –pod fgedu-pod –name fgedu-nginx docker.io/library/nginx
$ podman run -d –pod fgedu-pod –name fgedu-mysql \
-e MYSQL_ROOT_PASSWORD=fgedu123 \
docker.io/library/mysql:8.0

# 查看Pod状态
$ podman pod ps

# 输出日志
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
1234567890ab fgedu-pod Running 2 minutes ago 7890123456ab 3

# 查看Pod中的容器
$ podman pod inspect fgedu-pod –format ‘{{.Containers}}’

# 查看Pod资源使用情况
$ podman pod stats fgedu-pod

# 输出日志
POD CID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS
fgedu-pod 7890123456ab fgedu-nginx 0.1% 20.5MiB / 1.0GiB 2.0% 1.2kB / 0B 0B / 0B 2
fgedu-pod 9876543210ab fgedu-mysql 0.5% 1.2GiB / 4.0GiB 30.0% 1.5kB / 0B 0B / 0B 10
fgedu-pod 1234567890ab fgedu-pod 0.0% 0.5MiB / 1.0GiB 0.0% 0B / 0B 0B / 0B 1

4.3 系统巡检

4.3.1 系统资源巡检

# 系统资源巡检

# 检查CPU使用情况
$ top -b -n 1 | head -10

# 输出日志
top – 10:00:00 up 2 days, 1:00, 1 user, load average: 0.10, 0.05, 0.01
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 4096.0 free, 2048.0 used, 2048.0 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used.

# 检查内存使用情况
$ free -h

# 输出日志
total used free shared buff/cache available
Mem: 8.0G 2.0G 4.0G 100M 2.0G 5.8G
Swap: 4.0G 0B 4.0G

# 检查磁盘使用情况
$ df -h

# 输出日志
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
/dev/sdb1 100G 40G 60G 40% /Podman

# 检查网络连接
$ netstat -tulpn

# 输出日志
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12345/podman
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 67890/podman
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd: /usr/sbin
tcp6 0 0 :::80 :::* LISTEN 12345/podman
tcp6 0 0 :::3306 :::* LISTEN 67890/podman
tcp6 0 0 :::22 :::* LISTEN 1234/sshd: /usr/sbin

# 检查系统日志
$ journalctl -u podman –since “1 day ago”

# 输出日志
— Logs begin at Wed 2026-04-08 10:00:00 CST, end at Wed 2026-04-10 10:00:00 CST. —
Apr 09 10:00:00 fgedu.net.cn podman[12345]: 2026-04-09 10:00:00.000000000 +0800 CST m=+0.000000000 container remove 7890123456ab (image=docker.io/library/nginx:latest, name=fgedu-nginx)
Apr 09 10:00:00 fgedu.net.cn podman[12345]: 2026-04-09 10:00:00.000000000 +0800 CST m=+0.000000000 container create 7890123456ab (image=docker.io/library/nginx:latest, name=fgedu-nginx)
Apr 09 10:00:00 fgedu.net.cn podman[12345]: 2026-04-09 10:00:00.000000000 +0800 CST m=+0.000000000 container start 7890123456ab (image=docker.io/library/nginx:latest, name=fgedu-nginx)

生产环境建议:在生产环境中,应建立完善的巡检和健康检查机制,定期执行巡检任务,及时发现和解决问题,确保系统的正常运行。from Podman视频:www.itpux.com

Part05-风哥经验总结与分享

5.1 巡检最佳实践

Podman巡检的最佳实践:

  • 定期执行:按照计划定期执行巡检任务,确保系统的正常运行
  • 全面检查:检查容器、Pod、镜像、网络、存储和系统等各个方面
  • 自动化:使用脚本和工具自动化巡检任务,提高效率
  • 记录日志:记录巡检结果,便于分析和追溯
  • 及时处理:发现问题及时处理,避免问题扩大
  • 持续改进:根据巡检结果,持续改进系统配置和管理
  • 培训学习:定期培训相关人员,提高巡检技能
  • 制定标准:制定巡检标准和流程,确保巡检的一致性和有效性

5.2 健康检查最佳实践

Podman健康检查的最佳实践:

  • 合理配置:根据应用特点配置合适的健康检查参数
  • 全面检查:检查应用的各个方面,包括服务可用性、依赖服务等
  • 及时响应:当健康检查失败时,及时响应和处理
  • 自动恢复:配置自动重启机制,当容器不健康时自动重启
  • 监控告警:当健康检查失败时,发送告警通知
  • 持续优化:根据健康检查结果,持续优化应用配置
  • 测试验证:定期测试健康检查的有效性
  • 文档记录:记录健康检查配置和结果,便于分析和追溯

5.3 巡检故障排查

Podman巡检故障排查:

# 巡检故障排查

## 容器启动失败
– 检查容器日志:podman logs
– 检查容器配置:podman inspect
– 检查端口占用:netstat -tulpn | grep – 检查存储路径:ls -la – 检查权限:chown/chmod

## 容器健康检查失败
– 检查健康检查命令:确保命令正确
– 检查应用状态:确保应用正常运行
– 检查依赖服务:确保依赖服务可用
– 检查网络连接:确保网络连接正常
– 检查资源使用:确保资源充足

## 系统资源不足
– 检查CPU使用:top
– 检查内存使用:free -h
– 检查磁盘使用:df -h
– 清理无用资源:podman system prune
– 扩展资源:增加系统资源

## 网络连接问题
– 检查网络状态:netstat -tulpn
– 检查网络配置:ip addr
– 测试网络连接:ping, traceroute
– 检查防火墙:iptables -L
– 重启网络服务:systemctl restart NetworkManager

## 存储问题
– 检查存储使用:df -h
– 检查存储路径:ls -la – 检查权限:chown/chmod – 扩展存储:增加存储容量
– 清理无用数据:删除无用文件

风哥提示:日常巡检与健康检查是确保Podman系统正常运行的重要环节,通过定期巡检和健康检查,可以及时发现和解决问题,提高系统的可靠性和安全性。建议建立完善的巡检和健康检查机制,定期执行巡检任务,及时发现和解决问题,确保系统的正常运行。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息