Prometheus是一个开源系统监控和警报工具包。可以将Docker配置为Prometheus目标目前,您只能监控Docker本身。您目前无法使用Docker目标监控应用程序。


监控docker的操作步骤:

1.使用docker的metrics-address向Prometheus暴露监控端口:

修改docker的daemon.json文件

{
      "metrics-addr": "192.168.191.18:9323",  #docker官网上的配置是127.0.0.1:9323在Prometheus无法连接该ip,手动执行curl -L 127.0.0.1:9323时可以显示docker的监控指标的,可能由于容器之间的隔离原因无法连接吧。
     “experimental": true
}

之后容器docker服务:systemctl restart docker

2.编辑Prometheus.yml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'codelab-monitor'
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first.rules"
  # - "second.rules"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'docker'
         # metrics_path defaults to '/metrics'
         # scheme defaults to 'http'.
    static_configs:
      - targets: ['192.168.191.18:9323']

3.启动一个Prometheus的容器

    docker环境使用的时swarm集群方式创建服务的命令方式不一样。swarm集群部署可自行操作

[root@docker ~]# docker service create --replicas 1 --name my-prometheus  --mount type=bind,source=/root/prometheus.yml,destination=/etc/prometheus/prometheus.yml 
--publish published=9090,target=9090,protocol=tcp     prom/prometheus
rgkmwhwqepl1qivlpq8r3nt2n
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converged

查看创建的服务信息

[root@docker ~]# docker service  ls 
ID                  NAME                MODE                REPLICAS            IMAGE                    PORTS
rgkmwhwqepl1        my-prometheus       replicated          1/1                 prom/prometheus:latest   *:9090->9090/tcp

查看服务的具体信息

[root@docker ~]# docker service ps  my-prometheus
ID                  NAME                IMAGE                    NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
y8akc5dmwjrn        my-prometheus.1     prom/prometheus:latest   docker              Running             Running 16 minutes ago

                   

4.访问Prometheus的页面查看监控值

prometheus监控docker_第1张图片

监控项的查看

prometheus监控docker_第2张图片



prometheus监控docker的基本内容已经部署及验证完成,docke官网有关Prometheus·监控docker的配置实验在查看Prometheus的监控target时报错:dial tcp xxxx: connect: connection refused。

docker官网https://docs.docker.com/config/thirdparty/prometheus/