适用场景:实时监控OverlayFS挂载点的文件创建、删除、修改等操作,适用于需要快速感知文件系统变化的场景。
实现步骤:
sudo apt-get install inotify-tools;sudo yum install inotify-tools。monitor_overlayfs.sh),内容如下:WATCH_DIR="/path/to/your/overlayfs/mountpoint" # 替换为实际挂载点
inotifywait -m -r -e create -e delete -e modify -e moved_to -e moved_from --format '%w%f %e' "$WATCH_DIR" | while read FILE EVENT; do
echo "File $FILE has event $EVENT"
done
chmod +x monitor_overlayfs.sh && ./monitor_overlayfs.sh。适用场景:快速查看Docker容器的资源消耗(CPU、内存、网络IO)及overlay网络的运行状态,适用于Docker环境下的overlay网络监控。
命令示例:
docker stats --no-stream # 实时显示所有容器的资源使用情况
输出包括容器ID、名称、CPU%、内存使用量、内存限制、网络IO等指标。
适用场景:长期监控系统资源(CPU、内存、磁盘、网络)及容器性能,支持数据可视化和告警,适用于生产环境。
实现步骤:
sudo /usr/share/cadvisor/cadvisor --port=8080(默认监听8080端口)。prometheus.yml添加Docker监控job(scrape_configs中配置targets: ['localhost:9100']),启动Prometheus服务。适用场景:监控overlay网络的底层流量(如流入流出字节数、连接数),适用于排查网络瓶颈或异常流量。
命令示例:
sudo iptables -L -v -n(-v显示流量计数);sudo nft list ruleset(需系统支持nftables)。适用场景:跟踪OverlayFS文件的访问、修改等操作,适用于安全审计或合规性检查。
实现步骤:
sudo yum install audit(CentOS)或sudo apt-get install auditd(Debian/Ubuntu)。sudo auditctl -w /path/to/overlay -p wa -k overlay_monitor(-w指定监控路径,-p wa监控写和属性变更,-k设置规则key)。ausearch -k overlay_monitor。适用场景:查看系统日志(包括内核日志、应用日志),快速定位overlay文件系统或相关服务的错误。
常用命令:
journalctl;journalctl -k;journalctl -u docker;journalctl --vacuum-time=1w(清除1周前的日志)。适用场景:防止overlay相关日志(如系统日志、应用日志)过大,自动压缩、删除旧日志。
配置示例:
编辑/etc/logrotate.d/rsyslog(或其他自定义配置文件),添加以下内容:
/var/log/messages {
daily # 每天轮转
rotate 4 # 保留4个旧日志
compress # 压缩旧日志
missingok # 日志不存在时不报错
notifempty # 日志为空时不轮转
}
系统会自动按配置执行日志轮转。
适用场景:管理Docker容器的日志(如应用日志),避免日志文件占用过多磁盘空间。
常用操作:
cat /dev/null > /var/lib/docker/containers/container_id/*-json.log(替换container_id为实际容器ID);logging:
driver: "json-file"
options:
max-size: "10g" # 单个日志文件最大10GB
max-file: "3" # 保留3个日志文件
#!/bin/bash
find /var/lib/docker/containers/ -name "*-json.log" -mtime +7 -exec rm -f {} \;
将脚本保存为/usr/local/bin/clean_docker_logs.sh,添加执行权限后,通过crontab -e添加:0 2 * * * /usr/local/bin/clean_docker_logs.sh。适用场景:需要大规模日志收集、分析和可视化(如企业级环境),支持全文搜索、趋势分析等功能。
组件组成:
/var/log/messages、Docker容器日志);