插件窝 干货文章 应用在docker里需要监控什么

应用在docker里需要监控什么

容器 监控 Docker 日志 956    来源:    2025-04-28

在 Docker 环境中监控应用时,需要关注多个层面的指标和日志,以确保容器化服务的稳定性、性能和安全性。以下是需要监控的核心内容及常用工具建议:


1. 容器基础指标

  • 资源利用率

    • CPU:容器占用的 CPU 时间片、限制(cpu_usagecpu_throttled)。
    • 内存:使用量(memory.usage_in_bytes)、限制(memory.limit_in_bytes)、OOM 事件。
    • 磁盘 I/O:读写速率、延迟(blkio 设备统计)。
    • 网络:带宽、丢包率、连接数(tx/rx_bytestcp_retrans)。
    • 工具docker statscAdvisorPrometheus(配合 node-exporter)。
  • 生命周期

    • 容器启动/停止次数、重启策略触发(docker events)。
    • 异常退出状态码(通过 docker inspect --format='{{.State.ExitCode}}')。

2. 应用性能监控(APM)

  • 服务延迟:API 响应时间(P99、P95)、错误率(5xx/4xx)。
  • 吞吐量:请求量(QPS/RPS)、数据库查询速率。
  • 依赖服务:下游服务(如数据库、Redis)的调用延迟和健康状态。
  • 工具New RelicDatadog APMOpenTelemetry(链路追踪)。

3. 日志监控

  • 应用日志:标准输出(stdout/stderr)中的错误日志(如 ERRORException)。
  • 访问日志:HTTP 请求日志(Nginx/Apache 或应用自身日志)。
  • 工具
    • 集中式日志:ELK(Elasticsearch + Logstash + Kibana)、FluentdLoki
    • 实时分析:grep + awkSplunk

4. 容器编排层(如 Kubernetes)

  • Pod 状态CrashLoopBackOffImagePullBackOff
  • 调度问题:资源不足导致的 Pending 状态。
  • Horizontal Pod Autoscaler (HPA):自动扩缩容触发情况。
  • 工具kubectl topkube-state-metricsPrometheus Operator

5. 安全监控

  • 异常行为:特权容器启动、敏感目录挂载(通过 docker audit logs)。
  • 漏洞扫描:镜像中的 CVE 漏洞(TrivyClair)。
  • 网络策略:非常规端口暴露或非授权访问(如 iptables 规则监控)。

6. 存储与卷

  • 持久化卷:剩余空间(df -h)、IOPS 瓶颈。
  • 临时存储/tmp 目录占用(可能导致容器崩溃)。

7. 网络与连接

  • DNS 解析:延迟或失败(如 nslookup 测试)。
  • 端口健康:关键端口是否可访问(telnetnetcat)。
  • 工具pingtracerouteBlackbox Exporter(Prometheus)。

8. 自定义业务指标

  • 例如:订单处理速率、队列积压(Kafka/RabbitMQ)、缓存命中率(Redis)。

推荐监控栈组合

  1. 基础监控Prometheus + Grafana(指标可视化)+ cAdvisor(容器指标)。
  2. 日志Fluentd(收集)→ Elasticsearch(存储)→ Kibana(展示)。
  3. 告警Alertmanager(Prometheus 生态)或 PagerDuty
  4. APMJaeger(分布式追踪)或 Datadog(全栈监控)。

关键排查命令示例

# 查看容器资源使用
docker stats <container_id>

# 检查容器日志
docker logs --tail 100 -f <container_id>

# 检查容器内进程
docker top <container_id>

# 分析容器配置
docker inspect <container_id>

通过分层监控(基础设施→应用→业务),可以快速定位问题根源(如 CPU 瓶颈、OOM 或依赖服务超时)。