1. 首页 > Linux教程 > 正文

Linux教程FG429-Docker监控与日志

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,学习交流加群风哥微信: itpux-com详细介绍了相关技术的配置和使用方法。

风哥提示:

文档介绍Docker的监控和日志管理方法。

Part01-容器监控

1.1 原生监控命令

# 查看容器资源使用
[root@docker ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
abc123def456 fgedu-web 0.15% 25.5MiB / 7.5GiB 0.33% 1.5MB / 500kB 10MB / 5MB 5
def456789012 fgedu-db 1.25% 512MiB / 7.5GiB 6.67% 5MB / 2MB 100MB / 50MB 25
789012345678 fgedu-redis 0.05% 8.5MiB / 7.5GiB 0.11% 500kB / 200kB 5MB / 2MB 4

# 查看单个容器资源
[root@docker ~]# docker stats fgedu-web –no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
abc123def456 fgedu-web 0.15% 25.5MiB / 7.5GiB 0.33% 1.5MB / 500kB 10MB / 5MB 5

# 查看容器进程
[root@docker ~]# docker top fgedu-web
UID PID PPID C STIME TTY TIME CMD
root 12345 12344 0 06:00 ? 00:00:00 nginx: master process nginx -g daemon off;
101 12400 12345 0 06:00 ? 00:00:00 nginx: worker process

# 查看容器事件
[root@docker ~]# docker events –since 1h
2026-04-04T06:00:00.123456789+08:00 container create abc123def456 (image=nginx:latest, name=fgedu-web)
2026-04-04T06:00:00.234567890+08:00 network connect def456789 (container=abc123def456, name=bridge, type=bridge)
2026-04-04T06:00:00.345678901+08:00 container start abc123def456 (image=nginx:latest, name=fgedu-web)

Part02-cAdvisor监控

2.1 部署cAdvisor

# 启动cAdvisor容器
[root@docker ~]# 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 \
–volume=/dev/disk/:/dev/disk:ro \
–publish=8080:8080 \
–detach=true \
–privileged \
–device=/dev/kmsg \
gcr.io/cadvisor/cadvisor:latest
abc123def456789012345678901234567890123456789012345678901234

# 访问cAdvisor Web界面
[root@docker ~]# curl -s http://localhost:8080/healthz
ok

# 获取容器指标
[root@docker ~]# curl -s http://localhost:8080/metrics | head -50
# HELP cadvisor_version_info A metric with a constant ‘1’ value labeled by kernel version, OS version, docker version, cadvisor version & cadvisor revision.
# TYPE cadvisor_version_info gauge
cadvisor_version_info{cadvisor_revision=”v0.47.0″,cadvisor_version=”v0.47.0″,docker_version=”24.0.7″,学习交流加群风哥QQ113257174kernel_version=”5.14.0-284.11.1.el9_2.x86_64″,os_version=”Rocky Linux 9.3″} 1
# HELP container_cpu_cfs_periods_total Total number of elapsed CFS scheduler enforcement periods.
# TYPE container_cpu_cfs_periods_total counter
container_cpu_cfs_periods_total{container_label_com_docker_compose_config_hash=””,container_label_com_docker_compose_container_number=””,container_label_com_docker_compose_oneoff=””,container_label_com_docker_compose_project=””,container_label_com_docker_compose_service=””,container_label_com_docker_compose_version=””,container_label_maintainer=””,id=”/system.slice/docker-abc123.scope”,image=”nginx”,name=”fgedu-web”} 12345

Part03-Prometheus+Grafana

3.1 部署监控栈

# 创建监控目录
[root@docker ~]# mkdir -p /fglinux/monitoring/{prometheus,grafana}

# 创建Prometheus配置
[root@docker ~]# cat > /fglinux/monitoring/prometheus/prometheus.yml << 'EOF' global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'cadvisor' static_configs: - targets: ['cadvisor:8080'] - job_name: 'node-exporter' static_configs: - targets: ['node-exporter:9100'] EOF # 创建docker-compose.yml [root@docker ~]# cat > /fglinux/monitoring/docker-compose.yml << 'EOF' version: '3.8' services: prometheus: image: prom/prometheus:latest container_name: fgedu-prometheus ports: - "9090:9090" volumes: - ./prometheus:/etc/prometheus - prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' networks: - monitoring grafana: image: grafana/grafana:latest container_name: fgedu-grafana ports: - "3000:3000" volumes: - grafana-data:/var/lib/grafana environment: - GF_SECURITY_ADMIN_PASSWORD=admin123 networks: - monitoring cadvisor: image: gcr.io/cadvisor/cadvisor:latest container_name: fgedu-cadvisor ports: - "8080:8080" volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro networks: - monitoring node-exporter: image: prom/node-exporter:latest container_name: fgedu-node-exporter ports: - "9100:9100" volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--path.rootfs=/rootfs' networks: - monitoring networks: monitoring: volumes: prometheus-data: grafana-data: EOF # 启动监控栈 [root@docker monitoring]# docker compose up -d [+] Running 6/6 ✔ Network monitoring_monitoring Created 0.1s ✔ Volume "monitoring_prometheus-data" Created 0.0s ✔ Volume "monitoring_grafana-data" Created 0.0s ✔ Container fgedu-node-exporter Started 2.1s ✔ Container fgedu-cadvisor Started 2.5s ✔ Container fgedu-prometheus Started 3.0s ✔ Container fgedu-grafana Started 3.5s # 查看服务状态 [root@docker monitoring]# docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS fgedu-cadvisor gcr.io/cadvisor/cadvisor:latest "/usr/bin/cadvisor -…" cadvisor 1 minute ago Up 1 minute 0.0.0.0:8080->8080/tcp
fgedu-grafana grafana/grafana:latest “/run.sh” grafana 1 minute ago Up 1 minute 0.0.0.0:3000->3000/tcp
fgedu-node-exporter prom/node-exporter:latest “/bin/node_exporter …” node-exporter 1 minute ago Up 1 minute 0.0.0.0:9100->9100/tcp
fgedu-prometheus prom/prometheus:latest “/bin/prometheus –c…” prometheus 更多学习教程公众号风哥教程itpux_com 1 minute ago Up 1 minute 0.更多视频教程www.fgedu.net.cn0.0.0:9090->9090/tcp

Part04-日志管理

4.1 日志驱动配置

# 配置日志驱动
[root@docker ~]# cat >> /etc/docker/daemon.json << 'EOF' { "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "5", "labels": "app,env", "tag": "{{.Name}}/{{.ID}}" } } EOF # 重启Docker [root@docker ~]# systemctl restart docker # 使用特定日志驱动运行容器 [root@docker ~]# docker run -d --name fgedu-app \ --log-driver json-file \ --log-opt max-size=50m \ --log-opt max-file=3 \ nginx:latest abc123def456789012345678901234567890123456789012345678901234 # 使用syslog驱动 [root@docker ~]# docker run -d --name fgedu-syslog \ --log-driver syslog \ --log-opt syslog-address=tcp://192.168.1.100:514 \ --log-opt tag="fgedu-app" \ nginx:latest def456789012345678901234567890123456789012345678901234 # 查看容器日志 [root@docker ~]# docker logs fgedu-app --tail 100 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up # 实时查看日志 [root@docker ~]# docker logs -f fgedu-app # 查看带时间戳的日志 [root@docker ~]# docker logs -t fgedu-app --since 1h 2026-04-04T06:00:00.123456789Z /docker-entrypoint.sh: Configuration complete; ready for start up
风哥针对监控日志建议:

  • 配置日志轮转策略
  • 使用集中日志管理
  • 设置合理的保留周期
  • 监控关键指标
  • 配置告警规则

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

联系我们

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

微信号:itpux-com

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