Prometheus - 如何监控其他 docker 容器

Prometheus - how to monitor other docker containers

我想使用 Prometheus 来监控我的 docker 容器。我可以 运行 PrometheusGrafana 但我不知道如何指示它监视其他 docker 容器。 如果可能的话,我想看一些例子。例如,我的主机上有 Ubuntu 容器 运行ning 以及 Gentoo 容器。我如何告诉 Prometheus 监控它们,或者监控内部的某些应用程序 运行ning? 预先感谢您的时间和耐心等待我。

您可以使用 cadvisor,它可以让容器用户了解其 运行 容器的资源使用情况和性能特征。

一个very good article关于设置Prometheus来监控Docker正在使用这个架构:

简而言之,想法是使用cAdvisor收集有关容器的信息,并将它们放入Prometheus数据库中。 Grafana 将查询 Prometheus 数据库并呈现监控图表/值。

要从 cAdvisor 收集数据到 Prometheus,您必须编辑 configuration file (prometheus.yml ):

scrape_configs:
  - job_name: 'cadvisor'
    scrape_interval: 5s
    static_configs:
      - targets: ['cadvisor:8080']

当你在 Prometheus 中有一些数据时,你必须使用 Grafana 来查看它。您可以导入 Grafana 的监控 json 查询的(简短)示例如下:

获取用户百分比 CPU:

  "targets": [
    {
      "expr": "sum(rate(container_cpu_user_seconds_total{image!=\"\"}[1m])) / count(node_cpu{mode=\"system\"}) * 100",
      "interval": "10s",
      "intervalFactor": 1,
      "legendFormat": "",
      "refId": "A",
      "step": 10
    }
  ]

获取已用 RAM 百分比:

  "targets": [
    {
      "expr": "(sum(node_memory_MemTotal) - sum(node_memory_MemFree+node_memory_Buffers+node_memory_Cached) ) / sum(node_memory_MemTotal) * 100",
      "interval": "10s",
      "intervalFactor": 2,
      "legendFormat": "",
      "refId": "A",
      "step": 20
    }
  ]

要获得完整的 json 数据(太长无法在此处发布),您可以克隆此存储库:

git clone https://github.com/stefanprodan/dockprom

并尝试导入这个 Grafana json

我目前正在使用此架构来监控生产中的 docker swarm mode 集群,这是您可以在 github 存储库中找到的监控输出。